Privoxy

Články o zajímavém softwaru, zejména bezpečnostním, jsou tu poměrně populární. Tak zkusíme další, tentokrát o filtrovacím proxy serveru Privoxy. Název programu je složeninou dvou slov – „privacy“ (soukromí) a „proxy“ (prostředník). První z nich zvýrazňuje jednu z hlavních funkcí programu, druhý způsob, jak je toho dosaženo – Privoxy sedí jako žába na prameni mezi internetovým prohlížečem a internetem a zasahuje do všeho, co prochází jedním nebo druhým směrem tak, aby zvýšila soukromí uživatele. A když už to dělá, tak při tom taky filtruje reklamy a umožňuje měnit obsah stránek.

Stejně jako u mnoha jiných mých oblíbených programů je hned na začátku na místě varování: Privoxy je sice výborný program, ale pokud se nechcete spokojit jen s běžnou funkčností a budete si program chtít upravit k obrazu svému, velmi rychle zjistíte, že Privoxy není – „linuxovou terminologií“ – program pro klikače – zapomeňte na snadno srozumitelné dialogy a wizardy, tady se veškerá konfigurace provádí prostřednictvím textových souborů a více či méně kryptického jazyka. Je jen malé zjednodušení, když řeknu, že pokud nemáte zažité aspoň základy regulárních výrazů, tak na nastavování Privoxy rovnou zapomeňte a poohlédněte se po více uživatelsky zaměřené alternativě – AdMuncher (pro všechny prohlížeče) nebo AdBlock Plus (jen pro Firefox, ale zato ještě jednodušší než Privoxy i AdMuncher) a asi milionu dalších.

Proč byste tedy měli investovat úsilí do zvládnutí Privoxy, když existuje spousta jednodušších alternativ? Protože Privoxy má na své straně dvě velké výhody:

  1. Privoxy poskytuje daleko nejdetailnější možnosti nastavení. Za dobu svého internetového života jsem vyzkoušel celou řadu programů, než jsem zakotvil u Privoxy, a mohu zodpovědně prohlásit, že u Privoxy jsem se setkal s nejméně omezeními. Také nějaká má, ale až na výjimky jsem zjistil, že pokud něco neumí Privoxy, tak konkurence také ne.

  2. Privoxy má velice dobré výchozí nastavení v obou základních oblastech své funkce (ochrana soukromí a filtrování reklamy). Když do něj doplňuji nějaká dodatečná pravidla, je to buď kvůli fajnovostem (různé nastavení soukromí pro různé stránky, tzn. při přístupu na seznam.cz se tvářím jako čech, při přístupu na google.com jako američan, na mozilla.com jako uživatel Firefoxu a na opera.com jako uživatel Opery), nebo proto, že moje požadavky na měnění obsahu stránek jsou až příliš specifické (speciálně moje úchylka na likvidaci javascriptu, pokud je ve stránce jen proto, že je její autor idiot).

Zejména ten druhý důvod je podle mě velmi silným argumentem pro to, proč by nad Privoxy neměl lámat hůl ani uživatel, kterému se nechce detailně studovat regulární výrazy: Když už se vám podaří Privoxy nainstalovat a rozběhnout, bude vám poměrně dobře sloužit i bez nastavování.

Co tedy jde s Privoxy dělat?

Ochraňovat soukromí

Ochrana soukromí je asi největším cílem Privoxy. Už ve své standardní instalaci je Privoxy nastaveno tak, aby co možná nejlépe zajistilo, že o vás webová stránka nic nezjistí. Přitom kombinuje jak všeobecná pravidla, platná pro celý web, tak pravidla specifická pro konkrétní stránky (zejména na té úrovni, že všeobecné pravidlo zakáže potenciálně prozrazující komponentu a speciální pravidlo ji zase povolí pro nejběžnější stránky, které při vypnutém slídění nechtějí pracovat).

Bylo by příliš zdlouhavé zde vypisovat, co všechno Privoxy ve své standardní konfiguraci blokuje; je toho příliš mnoho, počínaje obligátními web-bugs1, přes příliš benevoletní cookies2 až po prozrazující HTTP hlavičky typu referer3.

Tohle všechno samozřejmě filtrují i ostatní programy tohoto typu. Výhoda Privoxy je hlavně v tom, že pokud chcete a umíte to, můžete toto filtrování velice detailně nastavovat – není problém pro všechny webové servery definovat nějaké standardní chování a pak přidávat nejrůznější výjimky pro jednotlivé servery; můžete přitom jít na libovolnou úroveň, nic (kromě požadavku na maniakální trpělivost) vám nebrání v tom, aby každý dotaz na Google měl jiné chování podle toho, jaká klíčová slova hledáte.

Jak na to? Konfigurační soubor Privoxy v podstatě není běžný konfigurační soubor, ale „program“: máte sekvenci „příkazů“ („odstraň cookies“, „odstraň referer“ apod.), které se postupně „provádějí“, a u každého je napsané, pro které stránky se má provést a jaké má mít případné parametry (protože „odstranit cookie“ může znamenat úplnou likvidaci, ale také třeba jen převod na méně invazivní formu). Vypadá to asi takhle:

# Odstranit referer ze všech požadavků
{ +hide-referer{block} }
/

# Některé weby referer vyžadují, ale můžeme použít
# "obecné falšování" (refererem bude doména, na kterou
# směřuje požadavek)
{ +hide-referer{forge} }
.citlivyserver.cz
.dalsi.com

# No a některé weby mohou vyžadovat konkrétní specifický
# referer
+hide-referer{http://www.ultracitlivyweb.cz/produkty/program.html}
www.ultracitlivyweb.cz/download/program\.exe

 

1) Web bug = malý, obvykle neviditelný (celý v „průhledné barvě“) obrázek, pomocí kterého může provozovatel reklamní a jiné podobné (typicky např. měřiče návštěvnosti) sítě sledovat pohyb vašeho browseru po cizích webových stránkách.

2) Cookies samy o sobě nejsou škodlivé, jakkoliv se antispywarové produkty snaží vsugerovat uživatelům opak. Není asi nic tragického, když si mě Google pamatuje a nabízí mi personalizované výsledky vyhledávání. Na druhou stranu asi není úplně nezbytné, aby si mě pamatovat desítky let, a už vůbec není potřeba, aby si mě tak dlouho pamatoval zpravodajský server.

3) Referer nese informaci, ze které stránky přistupujete k požadovanému objektu. Běžně se používá třeba k tomu, aby se nedalo z cizích stránek odkazovat přímo na obrázky (což je pochopitelné z hlediska provozovatele serveru, méně už ze strany uživatele).

Odstraňovat reklamy

Odstraňování reklam je jen vedlejší funkce Privoxy, ale nedá se upřít, že je ve výchozím stavu nastavená hodně účinně. Myslím, že obrázky budou stačit.

Bez Privoxy

Bez Privoxy

Se zapnutým Privoxy

Se zapnutým Privoxy

(Podotýkám, že spousta reklam je neviditelná už z toho titulu, že jsem bezpečnostní cvok a nemám zapnuté nic, bez čeho se mohu obejít – třeba Flash.)

Co vás nepochybně bude zajímat: většina reklamy je filtrována generickými postupy a zabírá i na české servery. Do konfiguračního souboru jsem toho doplňoval jen velice málo.

Zasahování do kódu stránek

Tato funkce už vlastně vyplývá z předchozích: aby mohl Privoxy odstraňovat reklamy a hrozby pro soukromí, musí zasahovat do kódu stránek. Skvělé je, že to dělá na základě standardních regulárních výrazů a že tuto funkčnost zpřístupňuje i uživateli. Pokud vás tedy na cizí stránce něco irituje a umíte regulární výrazy, můžete si snadno napsat vlastní filtr speciálně pro tuhle stránku.

Osobně to používám hlavně na to, že zásadně browsuji s vypnutým javascriptem4 a pomocí Privoxy dokážu zprovoznit mnoho stránek, které skriptování vyžadují, ale přitom s ním nedělají nic rozumného. Typickým příkladem jsou servery, které sice načtou celý obsah stránky, ale část skryjí, dokud na něco nekliknete. A je jedno, jestli se jedná o obrázky (skoro všechny servery pro hostování obrázků zobrazí napřed malý náhled a plný obrázek až na vyžádání), nejrůznější FAQ (jsou vidět jen otázky, odpovědi opět až po kliknutí) nebo klidně i menu a ovládací prvky (tímto zdravím diskusní server Okoun.cz s jeho brilantním nápadem skrývat formulář pro napsání příspěvku).

Když už jsem nakousl ten Okoun: Do souboru user.filter si doplňte tohle:

FILTER: nojs-okoun.cz
s~</style>~.col .content { display: block; }\n</style>~igU

A do user.actions tohle:

{ +filter{nojs-okoun.cz} }
.okoun.cz

A je po javascriptu…

Tento příklad současně demonstruje, jak si dělat vlastní filtry: Do souboru user.filter doplníte definici filtru, která se skládá z hlavičky FILTER: jméno_filtru5 a jednoho nebo víc regulárních výrazů ve tvaru používaném PERLem: na začátku je s jako příkaz symbolizující regexpové nahrazování, další znak je oddělovač částí příkazu (já jsem zvolil ~, ale použít můžete jakýkoliv znak; jen je vhodné použít takový, který se v „textu“ výrazu moc často nevyskytuje, protože by se musel „escapovat“ zpětným lomítkem – z tohoto důvodu se vyhýbám jinak tradičnímu znaku lomítka (/), protože to se v HTML vyskytuje opravdu hodně často). Následuje regulární výraz pro vyhledání (v tomto případě </style>), oddělovač, výraz pro nahrazení (.col .content { display: block; }\n</style>), opět oddělovač a na konci příznaky: i značí case-insensitive, tzn. neohlížet se na to, jestli jsou písmena velká nebo malá; g říká, že se mají nahradit všechny výskyty, a U přepíná do ungreedy režimu (v tomto případě zbytečně, protože tu na hladovosti nezáleží, ale je to pozůstatek toho, že ungreedy používám ve filtrech Privoxy velmi často, tak ho cpu všude „už pro jistotu“).

Když máte hotový filtr, tak musíte v souboru user.actions říct, pro které stránky se má použít. Příkaz { +filter{nojs-okoun.cz} } znamená „Zapnout filtr nojs-okoun.cz„; pod ním následuje seznam URL, pro které se má použít (v mém případě tedy pro „všechny stránky na okoun.cz“).

Obdobným způsobem se dá zasáhnout do čehokoliv, co je v kódu stránky uvedeno a co vás nějakým způsobem irituje. Třeba můžete zviditelnit odkazy na YouTube, abyste je mohli snadno vložit do mého YouTube Downloaderu:

# user.filters
FILTER: youtube-address-view
s~<param\s+name="movie"\s+value="(https?://www.youtube.com.*?)"~<a href="$1">$1</a>$0~igs

# user.actions
+filter{youtube-address-view}
/

 

4) Ano, uznávám, javascript je zcela bezpečný a podstatně zlepšuje uživatelský prožitek. Tedy podle teorie a webmasterů. Jenže za prvé, dělal jsem si před pár lety statistiku, jak to s tou bezpečností je, a javascript nedopadl zrovna dobře (sám o sobě sice neškodí, ale v 22 z 25 zkoumaných případů posloužil jako brána pro jinou slabinu; kdyby bylo skriptování vypnuté, tak se v těchto 22 případech bezpečnostní díra nedokáže uplatnit). A za druhé, pokud jde o ten prožitek: Ze všech stránek, které pravidelně navštěvuji, jich není ani pět, kde mi javascript skutečně něco přináší; na ostatních ho používám jen proto, že musím (protože ho ani s Privoxy neumím dostatečně odstranit). Schválně si někdy zkuste, kolik reklam uvidíte na vašem oblíbeném zpravodajském serveru, když na něm jenom vypnete skriptování – nejenže zmizí i některé normální reklamy, ale hlavně se zbavíte všech těch nejagresivnějších.

5) Pozor na tu dvojtečku. Ta tam musí být, bez ní filtr nefunguje (a je občas dost obtížné zjistit, proč nefunguje – je to nenápadná potvora…).

Další funkce

Privoxy se dá použít ještě na několik dalších zajímavých funkcí, to už je pro mě ale spíš jen třešnička na dortu: například s ním jde docela hezky logovat, co prohlížeč odesílá do webserveru a čím mu webserver odpoví (to používám právě ve výše zmiňovaném YouTube Downloaderu na zjišťování, jak stahovat videa z nových serverů; samozřejmě to jde ještě lépe zjistit WireSharkem, ale ten zaznamená všechno, zatímco Privoxy jen HTTP komunikaci, která mi obvykle stačí). To už ale ponechám na vašich vlastních výzkumech.

Jednu funkci ale zmíním: Privoxy je napsán tak, aby mohl dobře spolupracovat s anonymizační sítí TOR. Kombinací TOR+Privoxy získáte poměrně jednoduše jednu z nejdokonalejších platforem pro browsení a absolutním soukromí. (Ale pozor, je to jako se šifrováním – musíte znát principy a jejich slabá místa, jinak vám ani TOR s Privoxy nebudou nic platné. Ještě se k tomu v nějakém budoucím článku vrátím.)

Instalace

Privoxy má samozřejmě instalátor, jako každý slušný program kromě těch mých ;-). Poté, co proběhne, jen ve svém prohlížeči nastavíte, aby používal proxy server na adrese localhost:port (kde port je TCP port, na kterém běží Privoxy), a je hotovo.

Výhodné je, když si po instalaci Privoxy někam uložíte: program totiž je schopen fungovat i v přenositelném (portable) režimu, kdy ho jenom spustíte, nastavíte browser a už můžete browsit se všemi filtrovanými výhodami.

Kdybyste potřebovali takhle přenesený Privoxy nainstalovat jako službu, uděláte to z příkazové řádky příkazem privoxy --install. A je to, není potřeba se obtěžovat s instalátorem…

Závěr

Pro svoje filtrovací schopnosti je pro mě Privoxy jedním z nepostradatelných pomocníků. Oceňuji větší soukromí, větší bezpečnost (díky snížené potřebě javascriptu), zrychlené browsení (díky odstraněným reklamám) i větší pohodlí (díky odstraněným reklamám a odstraněným otravnostem, kterými nás tvůrci stránek tak rádi obšťastňují). A ještě si přitom můžu připadat jako geek. To vše zcela zdarma, jen za cenu necelého megabajtu místa na disku – no neberte to!

Podobné příspěvky:

3 Responses to “Privoxy”

  1. avatar pepak napsal:

    Velké plus Privoxy je v tom, že i ta defaultní konfigurace je naprosto v pohodě použitelná.

  2. avatar Huncut napsal:

    Tak to já jsem neznal. Ale je to skvělý prográmek, jen ta konfigurace je časově náročnější. Budu si na to muset vyhradit nějaký vikend 🙂

  3. avatar makaka napsal:

    Privoxy je výborný nástroj, používám jej v kombinaci s TORem. 🙂

Leave a Reply

Themocracy iconWordPress Themes

css.php