Wstęp

Squid jest darmowym oprogramowaniem serwera proxy, dostępnym dla (chyba) wszystkich systemów operacyjnych. Prywatne proxy przydaję się do wielu rzeczy np. dodawania postów na jakimś forum z różnych adresów IP :p.


Instalacja

Instalacja na Ubuntu jest bardzo prosta. Wystarczy, że włączymy gnome-terminal i wpiszemy taką komendę ( i oczywiście klikniemy enter ) :

apt-get install squid alboaptitude install squid

Mi znacznie bliższy jest aptitude, ale to bez różnicy.


Przystępujemy do konfiguracji

Na samym początku naszej konfiguracji zajmiemy się ncsa_auth, czyli mniej więcej tworzeniem usernamea z hasłem ( tego z którym będziemy się łączyć, żeby korzystać z proxy ). Cała operacja ogranicza się do wklepania takiej komendy:
htpasswd /etc/squid/passwd username
Następnie zmieniamy prawa naszego pliku tak aby squid był w stanie go odczytać i pobrać z niego dane:
chmod o+r /etc/squid/passwd
Zaraz potem musimy znaleźć nsca_auth authentication helper:
dpkg -L squid | grep nsca_auth

Natomiast teraz przechodzimy do konfiguracji najważniejszego pliku squida czyli squid.conf. Otwórzmy go za pomocą mcedit:
mcedit /etc/squid/squid.conf

Szukamy:
#auth_param basic program <uncomment and complete this line>#auth_param basic children 5 startup=5 idle=1#auth_param basic realm Squid proxy-caching web server#auth_param basic credentialsttl 2 hours
i zamieniamy na:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd auth_param basic children 2auth_param basic realm Komunikat przy logowaniuauth_param basic credentialsttl 2 hoursauth_param basic casesensitive off

Następnie szukamy:
acl ncsa_users
i zamieniamy na:
acl ncsa_users proxy_auth REQUIRED

Potem szukamy:
http_access
i zamieniamy na:
http_access allow ncsa_users

Aby nasze proxy było high anymous musimy znaleźć:
forwarded_for on
i zamienić na:
forwarded_for off

Następnie na samym końcu squid.conf dodajemy:
request_header_access Allow allow all request_header_access Authorization allow all request_header_access WWW-Authenticate allow all request_header_access Proxy-Authorization allow all request_header_access Proxy-Authenticate allow all request_header_access Cache-Control allow all request_header_access Content-Encoding allow all request_header_access Content-Length allow all request_header_access Content-Type allow all request_header_access Date allow all request_header_access Expires allow all request_header_access Host allow all request_header_access If-Modified-Since allow all request_header_access Last-Modified allow all request_header_access Location allow all request_header_access Pragma allow all request_header_access Accept allow all request_header_access Accept-Charset allow all request_header_access Accept-Encoding allow all request_header_access Accept-Language allow all request_header_access Content-Language allow all request_header_access Mime-Version allow all request_header_access Retry-After allow all request_header_access Title allow all request_header_access Connection allow all request_header_access Proxy-Connection allow all request_header_access User-Agent allow all request_header_access Cookie allow all request_header_access All deny all

a na sam koniec uruchamiamy w konsoli te trzy komendy:
service squid startchkconfig squid onufw allow squid

W razie problemów z visible_hostname przy starcie squida wystarczy edytować squid.conf i dodać:
visible_hostname server1

Teraz nasze proxy powinno działać i powinniśmy mieć możliwość połączenia się z nim i to by było na tyle (:

Python nie posiada określonej funkcji, aby sprawdzić, czy zmienna jest zdefiniowana, ponieważ jest założenie, że wszystkie zmienne zostały zdefiniowane przed użyciem. Próba uzyskania dostępu do zmiennej, która nie została wcześniej zdefiniowana będzie pluła wyjątkami.

W pythonie to rzadkość, żeby nie wiedzieć czy dana zmienna jest zdefiniowana. Jeżeli nastąpi już taka sytuacja, że tego nie wiesz możesz to sprawdzić poprzez próbę „try”, która w przypadku niezdefiniowanej zmiennej powinna wznieść wyjątek „NameError”:

To nie wszystko, ponieważ musimy sprawdzić czy wyjątek został wzniesiony prostym warunkiem:

W wielu sytuacjach np. w formularzach wskazane jest korzystanie ze słowników i testów na obecność kluczy przy pomocy metody: