www.fabiankeil.de/blog-surrogat/2008/08/17/privoxy-3.0.8.html
Seit ein paar Tagen ist Privoxy 3.0.10 draußen. Große Neuerungen gibt es keine, aber die Liste kleinere Verbesserungen rechtfertigte eine neue Versionsnummer. An dieser Stelle gibts es wie immer nur eine kurze Beschreibung der Highlights.
Dank eines Patches von Eric M. Hopper unterstützt Privoxy nun zusätzlich zu SOCKS4 und SOCKS4a auch SOCKS5 mit Server-seitiger DNS-Auflösung. Der wesentliche Vorteil für Tor-Nutzer ist, dass der SOCKS5-Standard präzisere Fehlermeldungen enthält.
Für SOCKS4 und SOCKS4a kennt Privoxy die Fehler-Bedingungen:
fk@TP51 ~ $strings /usr/jails/privoxy-jail/usr/local/sbin/privoxy | grep "^SOCKS " SOCKS request rejected or failed. SOCKS request rejected because SOCKS server cannot connect to identd on the client. SOCKS request rejected because the client program and identd report different user-ids. SOCKS request rejected for reason code %d.
Da Privoxy keine SOCKS-Nutzernamen unterstützt (die werden von Tor eh ignoriert),
sollten die beiden identd-Meldungen niemals angezeigt werden. Die Meldung
SOCKS request rejected for reason code %d.
habe ich in der Praxis noch
nie gesehen, was bleibt ist ein einziger Fehlercode, der alle Problem abdecken muss.
Folglich kann bei SOCKS4-Abfragen noch nichtmal zwischen Abfrage vom
SOCKS-Server abgelehnt
und
Abfrage wurde vom SOCKS-Server akzeptiert, ist aber fehlgeschlagen
unterschieden werden.
Es gibt zwar noch die Fehler-Bedingungen:
fk@TP51 ~ $strings /usr/jails/privoxy-jail/usr/local/sbin/privoxy | grep "^SOCKS4" SOCKS4 impossible internal error - bad SOCKS type. SOCKS4 negotiation write failed. SOCKS4 negotiation read failed.
doch die beziehen sich auf Verbindungs-Probleme zwischen SOCKS-Server und Privoxy und treten im allgemeinen nur auf, wenn der SOCKS-Server nicht läuft.
Für SOCKS5 sieht die Sache deutlich besser aus:
fk@TP51 ~ $strings /usr/jails/privoxy-jail/usr/local/sbin/privoxy | grep "^SOCKS5" SOCKS5 request failed SOCKS5 request denied SOCKS5 network unreachable SOCKS5 host unreachable SOCKS5 connection refused SOCKS5 TTL expired SOCKS5 client protocol error SOCKS5 domain names unsupported SOCKS5 negotiation protocol error SOCKS5 impossible internal error - bad SOCKS type SOCKS5 negotiation write failed SOCKS5 negotiation read failed SOCKS5 negotiation protocol version error SOCKS5 authentication required
Man kann endlich unterscheiden, ob der Verbindungsaufbau an einem ungültigen Hostnamen, einem geschlossenen Port, einem Timeout oder der Ausgangs-Policy der oder des Tor-Relays gescheitert ist.
Ein weiterer wesentlicher Vorteil von SOCKS5 ist, dass OpenSSH als Forwarder genutzt werden kann.
Eine weitere kleine Verbesserung betrifft die block-Aktion, der man
jetzt als Parameter eine Begründung für den Block mitgeben kann,
die dann an den Anwender weitergegeben wird:
Browser die die OpenSearch-Description unterstützen, können http://config.privoxy.org/show-url-info, über eine auf der gleiche Seite angebotenen Such-Datei ansprechen. Siehe Screenshot oben.
Privoxy-Regression-Test extrahiert Tests aus Action-Dateien, die über Privoxy angefragt werden – getestet wird ebenfalls über HTTP-Abfragen:
fk@TP51 ~ $privoxy-regression-test.pl 2008/08/17 16:15:15: Asking Privoxy for the number of action files available ... 2008/08/17 16:15:15: Gathering regression tests from 8 action file(s) delivered by Privoxy. 2008/08/17 16:15:16: Executing regression tests ... 2008/08/17 16:15:41: Executed 459 regression tests. Skipped 1. 459 successes, 0 failures.
Privoxy-Regression-Test wurde mit Privoxy 3.0.8 eingeführt und hat sich bereits mehrfach bewährt, die bis vor kurzen unterstützten Test-Arten überprüften aber hauptsächlich Privoxy-Innereien und waren für Endanwender eher uninteressant. Neu in der zusammen mit Privoxy 3.0.10 veröffentlichten Version 0.3 ist die Test-Art Sticky Actions, die auch für erfahrenere Endanwender nützlich sein sollte.
Mit Sticky Actions kann geprüft werden, ob Sektionen in Action-Dateien wirklich die gewünschten Konsequenzen haben. Die fiktive Sektion:
{-hide-referrer} example.org/check?uri=referer
sieht auf den ersten Blick korrekt aus hat aber nicht die beabsichtigten Auswirkungen, da vergessen wurde das Fragezeichen zu maskieren. Ergänzt man sie um einen Test, kann man sie automatisiert überprüfen:
{-hide-referrer} # Sticky Actions = -hide-referrer # URL = http://example.org/check?uri=referer # Level = 23 example.org/check?uri=referer
Die Level-Direktive kann man auch weglassen, sie dient hier lediglich dazu, nur explizit diesen Test aufzurufen:
fk@TP51 ~ $privoxy-regression-test.pl --level 23 2008/08/17 16:52:43: Asking Privoxy for the number of action files available ... 2008/08/17 16:52:43: Gathering regression tests from 8 action file(s) delivered by Privoxy. 2008/08/17 16:52:44: Executing regression tests ... 2008/08/17 16:52:44: Ooops. '-hide-referrer' is not among the final results. 2008/08/17 16:52:44: Failure for test 0/182/3/0. Sticky Actions: '-hide-referrer' and URL: 'http://example.org/check?uri=referer' 2008/08/17 16:52:44: Executed 1 regression tests. Skipped 460. 0 successes, 1 failures.
Nach Korrektur des URL-Musters:
{-hide-referrer} # Sticky Actions = -hide-referrer # URL = http://example.org/check?uri=referer # Level = 23 example.org/check\?uri=referer
erhält man:
fk@TP51 ~ $privoxy-regression-test.pl --level 23 --verbose 2008/08/17 16:58:26: Asking Privoxy for the number of action files available ... 2008/08/17 16:58:26: Gathering regression tests from 8 action file(s) delivered by Privoxy. 2008/08/17 16:58:27: Executing regression tests ... 2008/08/17 16:58:27: Success for test 0/182/3/0. Sticky Actions: '-hide-referrer' and URL: 'http://example.org/check?uri=referer' 2008/08/17 16:58:27: Executed 1 regression tests. Skipped 460. 1 successes, 0 failures.
Ein großer Teil der Sektionen in Privoxys default.action-Datei ist bereits mit Tests versehen, über Privoxy-Regression-Test können daher sehr einfach Konflikte mit eigenen Anpassungen aufgespürt werden.