Filtrowanie reklam z użyciem Privoxy - instalacja i integracja ze Squidem w Debianie

Nachalne reklamy, powodujące niezwykle długie ładowanie się stron WWW, zakłócające ulubioną muzykę (albo, co gorsza, przerywające ciszę nocną i budzące sąsiadów), generujące duże obciążenie systemu czy wręcz zawieszanie się przeglądarek, w dodatku trudne lub nawet czasem niemożliwe do wyłączenia, do tego irytujące, bo wyskakujące w najmniej odpowednim momencie popupy - to codzienność dzisiejszego Internetu i cena jaką przychodzi nam płacić za możliwość darmowego i omal nieograniczonego dostępu do wielu interesujących treści. Z pomocą przychodzą instalowane przez wielu użytkowników dodatki do przeglądarek (pluginy), blokujące popupy lub usuwające reklamy. Ich skuteczność jest różna, na pewno jednak jest to lepsze rozwiązanie niż surfowanie bez żadnych tego typu pomocników.

Warto jednak wiedzieć, że istnieją rozwiązania bardziej zaawansowane, bardziej kompleksowe. Jednym z nich jest open source’owy (GPL) projekt o nazwie Privoxy. Program ten, to klasyczne proxy WWW, które koncentruje się na filtrowaniu treści i ochronie prywatności. Potrafi m.in. modyfikować w locie zawartość przeglądanych stron WWW, usuwać z nich reklamy, banery czy popupy. Posiada wyważone ustawienia domyślne, które powinny zadowolić większość użytkowników, ale także bardzo rozbudowane opcje i bogate możliwości konfiguracji. Oprogramowania tego można z powodzeniem używać na pojedyńczym komputerze, jak i w sieci o dowolnej wielkości. Autorzy postarali się także o zapewnienie współpracy z najpopularniejszym proxy WWW - Squidem, co zostało szczegółowo opisane w dalszej części tego artykułu.

Na potrzeby niniejszego artykułu wykorzystany został przygotowany w poprzednim powiązanym artykule Squid ClamAV Redirector 1.8.2 i Squid 2.6. Poniższy opis przeznaczony jest dla Debiana Etch (4.0), ale bez problemu powinni moć także wykorzystać go użytkownicy innych dystrybucji. Wykorzystana wersja Privoxy - 3.0.6.

Instalacja Privoxy

Instalacja Privoxy z repozytorium Debiana sprowadza się do wydania prostej komendy:

apt-get install privoxy

Jeśli nasłuch na standardowym porcie 8118 lub lokalnym hoście nam nie odpowiada, bo chcemy np. przetestować działanie proxy na lokalnym IP serwera 10.0.0.1, edytujemy plik konfiguracyjny /etc/privoxy/config i dodajemy wpis:

listen-address  10.0.0.1:8118

Restartujemy Privoxy:

/etc/init.d/privoxy restart
Restarting filtering proxy server: privoxy.

netstat -an | grep 8118
tcp        0      0 10.0.0.1:8118              0.0.0.0:*                   LISTEN

Konfigurujemy przeglądarkę tak, aby korzystała z Privoxy i testujemy, czy działa. Jeśli działa, to możemy potestować wchodzenie na różne strony, obserwując jednocześnie w logu - co jest filtrowane, a co nie:

tail -f /var/log/privoxy/logfile
Oct 19 14:37:58 Privoxy(00008002) Request: www.onet.pl/
Oct 19 14:38:01 Privoxy(00010002) Request: reklama.onet.pl/_js/ads8.js?469dfd8b crunch!
Oct 19 14:38:01 Privoxy(0001c004) Request: onet.hit.gemius.pl/_1192797481567/redot.gif?id=10aany
Oct 19 14:38:01 Privoxy(00020002) Request: www.onet.pl/_d/2/p2/p4.gif
Oct 19 14:38:01 Privoxy(00024003) Request: www.onet.pl/bannery/pasaz/pasaz5/garderoba/Hot2.jpg crunch!
Oct 19 14:38:02 Privoxy(00028004) Request: reklama.onet.pl/bannery/pasaz/pasaz5//gadz.jpg crunch!
Oct 19 14:38:02 Privoxy(0002c003) Request: reklama.onet.pl/_d/panele/20070926/aukcje.gif
Oct 19 14:38:02 Privoxy(00030002) Request: reklama.onet.pl/bannery/n/n(..)norwegian_(..)33 crunch!

Jak widać, już samo tylko wejście na Onet zaowocowało “crunchem” (zablokowaniem) kilku elementów. Były to akurat wszystkie reklamy, czyli uzyskaliśmy skuteczność 100%. Oczywiście nie zawsze będzie tak dobrze, filtrowanie niechcianych treści na stronach WWW jest bardzo podobne do walki ze spamem, czyli nie da się nigdy w 100% odfiltrować wszystkiego i w dodatku czasem może się zdarzyć, że odfiltrowane zostanie za dużo. Warto potestować domyślne ustawienia Privoxy na kilku stronach, aby upewnić się czy domyślne ustawienia nam odpowiadają. Jeśli nie - w dowolnym momencie można wejść na stronę konfiguracyjną Privoxy. We wstępie stwierdziłem, że klasyczne pluginy do przeglądarek najczęściej nie mają zbyt wielu opcji konfiguracyjnych. Z Privoxy jest wręcz przeciwnie - użytkownik, który lubi grzebać i dopieszczać swoje ustawienia będzie wniebowzięty. Administratorzy powinni zainteresować się też podręcznikiem użytkownika Privoxy, który szczegółowo opisuje wszystkie możliwości specyficznego filtrowania niechcianych reklam.

Integracja Privoxy i Squida

Jeśli Privoxy działa poprawnie to pozostaje kwestia połączenia go z uprzednio skonfigurowanym Squidem. W dalszym opisie założono, że użytkownik ma skonfigurowanego Squida wraz ze Squid ClamAV Redirectorem, co zostało opisane w ubiegłym tygodniu. Nie możemy korzystać z obu proxy jednocześnie konfigurując jedynie przeglądarkę, gdyż jest to zwyczajnie niewykonalne, musimy więc tak skonfigurować Privoxy i Squida, aby te zechciały ze sobą współpracować.

Możliwości są dwie:
1. Squid jako proxy główne (przeglądarka -> Privoxy -> Squid).
2. Privoxy jako proxy główne (przeglądarka -> Squid -> Privoxy).

Zgodnie z zaleceniami autorów Privoxy, w przypadku łączenia ze Squidem, gdy oba proxy są na tej samej maszynie fizycznej, zalecana jest ta druga opcja, czyli Privoxy będzie głównym (parent) proxy WWW. W tym celu edytujemy plik konfiguracyjny Squida i dodajemy (najbezpieczniej na sam koniec):

cache_peer 10.0.0.1 parent 8118 7 no-query
acl ftp proto FTP
always_direct allow ftp
never_direct allow all

Oczywiście adres 10.0.0.1 z pierwszej linijki można zmienić na 127.0.0.1 jeśli w konfiguracji Privoxy ustawimy nasłuchiwanie na lokalnym hoście (zmienialiśmy je na 10.0.0.1, aby móc się dostać z zewnątrz w celach testowych ? teraz będzie to już zbędne).

Zanim zaczniemy testować konfigurację konieczna będzie zmiana ustawień przeglądarki, musimy z powrotem przekonfigurować ją do używania Squida jako proxy. Po tej zmianie możemy już wejść na jakąś stronę i obserwować logi SquidClamAV Redirectora (/var/log/messages) oraz Privoxy (/var/log/privoxy/logfile). Jeśli przy wchodzeniu na stronę w obu logach pojawiają się poprawne dane, to z dużym prawdopodobieństwem możemy uznać, że nasza konfiguracja działa poprawnie:

tail -f /var/log/privoxy/logfile:
Oct 19 15:24:21 Privoxy(00004002) Request: onet.pl/
Oct 19 15:24:21 Privoxy(00008003) Request: 127.0.0.1:8118/squid-internal-periodic/store_digest
Oct 19 15:24:24 Privoxy(00010002) Request: www.onet.pl/
Oct 19 15:24:26 Privoxy(00014002) Request: www.onet.pl/_d/onet.ico
Oct 19 15:24:26 Privoxy(00018003) Request: www.onet.pl/_s/suggest/suggest1.css
Oct 19 15:24:27 Privoxy(00020003) Request: www.onet.pl/_s/onet.js/std120.js
Oct 19 15:24:31 Privoxy(00028002) Request: onet.pl/
Oct 19 15:24:31 Privoxy(0002c002) Request: reklama.onet.pl/_js/ads8.js?469dfd8b crunch!
Oct 19 15:24:32 Privoxy(00030002) Request: www.onet.pl/_s/2/rot002.js
Oct 19 15:24:37 Privoxy(00078003) Request: www.onet.pl/_d/2/narty/1n.gif
Oct 19 15:24:40 Privoxy(000b8004) Request: reklama.onet.pl/bannery/n/(..)33 crunch!
Oct 19 15:24:40 Privoxy(000bc002) Request: www.onet.pl/_m/a981f10f8a1ebb7f976701223d8f433d,0,1.gif
Oct 19 15:24:40 Privoxy(000c0003) Request: www.onet.pl/_m/08d602a1297b8d9741f49c7dbb739fc0.jpg
Oct 19 15:24:40 Privoxy(000c4004) Request: www.onet.pl/bannery/pasaz/pasaz5/garderoba/Hot2.jpg crunch!
Oct 19 15:24:41 Privoxy(000d0002) Request: www.onet.pl/_m/6c7403dbfc167c473ca1f238522adbd4.gif
Oct 19 15:24:41 Privoxy(000d4003) Request: reklama.onet.pl/bannery/pasaz/pasaz5//gadz.jpg crunch!

tail -f /var/log/messages:
Oct 19 15:24:24 guybrush SquidClamAV: Url: http://www.onet.pl/ Status OKAY
Oct 19 15:24:26 guybrush SquidClamAV: TotalTime 0 on TotalRequests 1
Oct 19 15:24:26 guybrush last message repeated 2 times
Oct 19 15:24:26 guybrush SquidClamAV: TotalTime 0 on TotalRequests 3
Oct 19 15:24:26 guybrush SquidClamAV: Url: http://www.onet.pl/_d/onet.ico Status OKAY
Oct 19 15:24:26 guybrush SquidClamAV: Url: http://www.onet.pl/_s/suggest/suggest1.css Status OKAY
Oct 19 15:24:26 guybrush SquidClamAV: Url: http://www.onet.pl/_s/2/style031.css Status OKAY
Oct 19 15:24:26 guybrush SquidClamAV: Url: http://www.onet.pl/_s/onet.js/std120.js Status OKAY
Oct 19 15:24:27 guybrush SquidClamAV: TotalTime 0 on TotalRequests 4
Oct 19 15:24:27 guybrush SquidClamAV: Url: http://csr.onet.pl/(..)/csr.js Status OKAY

Z logów wynika, że konfiguracja działa poprawnie. Udało się i przeskanować stronę www i pozbyć się z niej reklam. Upewnijmy się jeszcze, że ochrona antywirusowa nadal działa ? wchodzimy w tym celu na znaną już stronę testową.

W /var/log/messages mamy:

SquidClamAV: TotalTime 17 on TotalRequests 30
SquidClamAV: Url: http://www.eicar.org/download/eicar.com.txt Status Infected Eicar-Test-Signature

A w /var/log/privoxy/logfile:

Privoxy(0013c002) Request: virus.(..)virus=Eicar-Test-Signature
Privoxy(00140002) Request: virus.jackal-net.at/r-warning.gif
Privoxy(00144003) Request: virus.jackal-net.at/clam.png
Privoxy(00148002) Request: www.eicar.org/favicon.ico

Czyli wszystko w jak najlepszym porządku. Jeśli całość została wykonana zgodnie z instrukcjami w obu artykułach, to mamy nie tylko skuteczną i sprawdzoną ochronę antywirusową przy korzystaniu z protokołu http, ale także pozbyliśmy się zdecydowanej większości uprzykrzających beztroskie surfowania po sieci reklam. Przynajmniej do czasu, gdy ich twórcy znowu czegoś nowego nie wymyślą :).



Brak komentarzy.

Skomentuj...

You must be logged in to post a comment.

The accumulation of points and extra discounts makes favorable re-order in Canadian drug pharmacy "'&$ drug list and permanent system of discounts for buyers.