Portál AbcLinuxu, 1. května 2025 00:24
Privoxy považuju za jeden z nejvychytanějších nástrojů na webovou hygienu. V kombinaci s pár rozšířeníma do prohlížeče to dokáže snížit objem sraček co uživatelům stříkají dnešní weby do paštěky na jakžtakž únosnou míru. Některé servery nám taky odmítají vydat obsah dokud se jim nepošlou ty "správné" hlavičky nebo nemáme tu "správnou" ip adresu.
Na archlinuxu je bohužel distribuční balíček trochu přirozbitý. Neumí zobrazovat statistiky, neumí pořádně logovat, no hlavně neumí SSL! Překompiloval jsem si ho s volbama--enable-compression --with-openssl --enable-extended-statistics --enable-external-filters --enable-pcre-host-patterns --with-brotliKdo neví jak se to dělá, na internetu se povalujou návody. Taky bylo potřeba trochu upravit systemd service
[Service] SuccessExitStatus=15 StandardOutput=append:/var/log/privoxy.log StandardError=truncate:/var/log/privoxy.logLoguje to netuším proč jenom do chybového výstupu, ale to asi ničemu nevadí. Bez této úpravy to nelogovalo vůbec. Teď bylo potřeba si vytvořit nějaký důvěryhodný certifikát. Kdysi jsem půl dne zápasil s tím proč sakra nefunguje ssl, abych nakonec v němém úžasu zjistil, že ten stroj jenom neměl nastavený přesný čas. Defaultně mají všecky certifikáty časové omezení. Abych vyloučil podobné budoucí komplikace, jsem ho vytvořil jako "nafurt" s falešným časem.
a=localhost; faketime '1970-01-01 00:00:00' openssl req -x509 -newkey rsa:4096 -subj "/CN=$a" -out $a.pem -keyout $a.pem -days $((365*1000)) -nodes && openssl x509 -text -noout -in $a.pemSekurity experti si nejspíš teď budou rvát vlasy, ale co - certifikát je náš, tak ho můžem zvesela nainstalovat do systému, aby mu programy věřily.
mv localhost.pem /etc/ca-certificates/trust-source/anchors/ update-ca-trustDo adresáře /etc/privoxy stačí udělat symlink
ln -s /etc/ca-certificates/trust-source/anchors/localhost.pem /etc/privoxy/localhost.pemJako další krok je potreba vytvořit nějaký adresář, do kterého si privoxy bude moct odkládat certifikáty pro jednotlivé servery. Takovou jakby ssl cache. Neumí si ho vytvořit automaticky. Naštěstí je to potřeba udělat jenom jednou po instalaci. Spíš jsem na to ale asi zapomněl během úprav PKGBUILD.
mkdir -p /var/privoxy/certs && chown -cR privoxy:privoxy /var/privoxyKonfigurák
/etc/privoxy/conf
je bohatě okomentářovaný tak je hned jasné co která volba dělá. A ona vůbec celá ta integrovaná dokumentace je velkolepá. S něčím podobným už dneska málokdo ztrácí čas. Se hned pozná stará škola! Pro začátek stačí několik málo základních změn. Default action jsem zaremoval a nechal jsem jenom ten uživatelský, protože už ve výchozím nastavení toho privoxy blokuje na můj vkus moc a některé weby odmítaly správně fungovat.
#/etc/privoxy/conf actionsfile user.action filterfile user.filter debug 1 debug 1024 debug 4096 debug 8192 debug 65536 listen-address 127.0.0.1:8118 ca-cert-file /etc/privoxy/localhost.pem ca-key-file /etc/privoxy/localhost.pem certificate-directory /var/privoxy/certs trusted-cas-file /etc/ssl/cert.pemTy debug volby nejsou nutné, no bez nich bude ten log prázdný. Aby ten self-mitm fungoval, je potřeba ještě definovat jména serverů. Chceme beztak https inspection všude, takže lomítko. url bez lomítka jsem ještě neviděl.
#/etc/privoxy/user.action {+https-inspection} /přesměrování onion domén na tor
{+forward-override{forward-socks5t localhost:9050 .}} .onionobčas se stane, že má některý server rozbité ssl. Tu může pomoct
{+ignore-certificate-errors} rozbityserver.comTak a základ by měl fungovat. Zkouška ...
echo quit | openssl s_client -proxy localhost:8118 -servername abclinuxu.cz -connect abclinuxu.cz:443Těch možností co tam jde všecko nastavit jsou mraky. Dokonce to umí takovou exotiku jak je třeba změna pořadí odesílaných hlaviček. To některé paranoidní servery taky můžou sledovat. Další docela příjemnou vlastností je, že se ty filtry a akce dají editovat za běhu a není potřeba restartovat celou službu. Kdysi v dávnověku tu kdosi napsal hezký seriál. Za těch skoro 20 let se to nezměnilo. Určitě stojí za přečtení. Veškerý software v počítači mi takto může fungovat přes privoxy kromě jediné výjímky. Firefox! Bojoval jsem s ním jak lev, jak naimportovat certifikát systémově pro všecky uživatele, kejkle s policies.json nefungujou. Pokaždé jsem se dostal leda k nicneříkajícímu:
about:policies#errors Unable to add certificate - /etc/ca-certificates/trust-source/anchors/localhost.pemMozillí software prostě odmítá respektovat systémové certifikáty a uživatel si ho tam musí ručně naklikat sám. Kdybyste někdo věděl jak ten firefox kreknout, byl bych vděčný. Barvičky v terminálu zpřehledňujou čtení. Doporučuju proto taky mrknout na log-parser. Volám to pomocí funkce přímo z bashrc
privoxy-log() { tail -F /var/log/privoxy.log | perl ~/scripts/privoxy-log-parser.pl; }
Tiskni
Sdílej:
vivaldi --proxy-pac-url='data:application/x-javascript-config;base64,'$(base64 -w0 /cesta/k/proxy.pac)Když použiju lokální privoxy, tak se mi to přesměrovávání řeší samo automaticky bez ohledu na to jaký browser používám. Navíc při záznamech do té privoxí actionfile nemusí uživatel umět programovat javaskript. Přijde mi to teda jednodušší.
Nebo druhý příklad. Na prohlížení map používám často marbles custom mapama. Většina serverů odkud stahuju tiles (to jsou takové ty obrázky 256x256 ze kterých marble skládá mapu) ofuky nedělá, Třeba google, bing, thunderforest, esri, yandex jsou v pohodě. No když zkusíš stáhnout tiles třeba od mapboxu, nokie, stadiamaps nebo seznamu, narazíš na to že bez správného referera máš smůlu. Marble bohužel neumí odesílat na server custom http hlavičky, takže jsme opět odkázaní na pomoc naší proxy, která pro vybrané servery vyčaruje potřebný referer a preventivně rači změní taky user-agent, hlavičky správně seřadí aby server nepanikařil a teprv potom to šlape. Nemám tušení jak bych toto řešil bez proxy. C++ neumím, abych si to do marble doprogramoval.
Nebo třeba takový squid. Osobně to používám jenom pro sebe, ale máš lidi kteří se starají o celou síť kde je třeba několik stovek uživatelů. Tam taková cache dokáže ušetřit hromadu přenášených dat a taky se to z ní uživatelům načítá pocitově rychlejš. Na místech kde není moc rychlý internet by tu linku takové množství požadavků jistě zadusilo. Proxy cache jim to surfování může udělat trochu snesitelným.Nevím co bys chtěl slyšet za konkrétní příklady. Každý uživatel má jinačí požadavky, tak si to musí každý nastavit podle sebe a né mávnout rukou s tím že "to nejde".
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.