Privoxy ist der Nachfolger des bekannten Filter-Proxys Junkbuster. Er beherrscht die Weiterleitung des Datenverkehrs an Tor, die auch die Namensauflösung von Hostnamen über Tor einschließt. Zusätzlich können mittels konfigurierbarer Filter unerwünschte Inhalte herausgefiltert und über Aktionen die Übermittlung von Informationen durch die Internetanwendung abgewehrt werden, die einer Anonymisierung abträglich sind.
Wer die umfangreichen Filter- und Manipulationsfunktionen von Privoxy nicht benötigt, kann auch den Polipo HTTP Proxy einsetzen, der ebenfalls gut mit Tor zusammenarbeitet.
Privoxy ist Open Source und steht unter der GNU Public License. Auf der Download Seite stehen neben dem Quellcode Versionen für verschiedenste Linux Distributionen, Amiga OS, HP-UX, Mac OS X, OS/2 und Windows bereit.
Unter Windows und Mac OS wird Privoxy einfach durch Installation des Programmarchivs oder des Tor Komplettpakets, unter Linux über die Installation der Binärversion per Paketverwaltung oder durch Kompilieren des Quellcode installiert.
Nach Installation und Start lauscht Privoxy standardmäßig auf Port 8118. Trägt man Privoxy als Proxy für HTTP- bzw. HTTPS (SSL)-Verbindungen mit der Adresse localhost bzw. 127.0.0.1 und Port 8118 in den Verbindungseinstellungen von Internetanwendungen wie zum Beispiel Webbrowsern ein, wird Privoxy als normaler Webproxy mit seinen Filterfunktionen genutzt.
Der Datenverkehr wird von der Internetanwendung an Privoxy übergeben, der "über das Internet" mit dem Zielrechner kommuniziert. Um zusätzlich den Datenverkehr über Tor zu anonymisieren, muss der Datenverkehr von Privoxy an den Tor Onion Proxy weitergeleitet werden.
Nach dieser Änderung liest Privoxy die Konfigurationsdatei neu ein und leitet ab sofort alle Daten über das SOCKS 4A Protokoll an den Tor Onion Proxy weiter.
Für Anwendungen, die immer einen der Proxys verwenden sollen und die Umgebungsvariable http_proxy auswerten, kann man die Nutzung von Privoxy oder Polipo durch das Setzen der Umgebungsvariable automatisieren.
Unter Linux setzt man dazu systemweit oder in die .profile Datei des Benutzers:
export http_proxy=http://localhost:8118/ # für Privoxy
export http_proxy=http://localhost:8123/ # für Polipo
Unter Windows setzt man die Variable http_proxy und ihren Wert http://localhost:port/ mit dem Administratorkonto als Systemvariable für alle Benutzer oder mit dem Benutzerkonto als Benutzervariable für einen Benutzer in der System Anwendung der Systemsteuerung.
Aktivierung der Weiterleitung an Tor
Dazu wird mit einem beliebigen Texteditor die Datei config bzw. config.txt geöffnet, die alle Optionen für die Hauptkonfiguration von Privoxy enthält, wenn man nicht das Tor Komplettpaket installiert, in dem die nötige Option bereits aktiviert ist. Unter Windows liegt diese Datei im Privoxy Programmverzeichnis, unter Linux zum Beispiel in /etc/privoxy.
In der Konfigurationsdatei sucht man die Zeile
# forward-socks4a / 127.0.0.1:9050 .
und entfernt das # Zeichen:
forward-socks4a / 127.0.0.1:9050 .
Privoxy Konfiguration mit dem Webbrowser
Die Konfiguration von Privoxy wird gewöhnlich über ein Webinterface im Browser durchgeführt, das man mit der Adresse http://p.p/ aufruft:

Startseite des Privoxy Webinterfaces.
Über den ersten Menüpunkt
View & change the current configuration (Anzeige und Änderung der aktuellen Konfiguration) gelangt man in die Konfiguration von Privoxy:

Über das Anklicken der
Edit Buttons gelangt man in eine Unterseite, die eine Übersicht aller Aktionsgruppen mit den zugeordneten Aktionen enthält:

Eigene Änderungen sollten nach Möglichkeit in der Datei
user.action durchgeführt werden. Ein weiterer Klick auf einen
Edit Button und man gelangt in die Unterseite, in der die eigentliche Konfiguration erfolgt:

Hier sind alle vordefinierten Aktionen zusammen mit einer Beschreibung aufgeführt. Über Aktivieren der
Enable bzw.
Disable Box wird eine Aktion aktiviert bzw. deaktiviert. Ein größerer Ausschnitt:
Um alle Möglichkeiten auszuschöpfen, ist ein genaues Studium des Benutzerhandbuchs nötig. Privoxy enthält aber bereits ab Installation einen umfassenden Satz an Filtern und Aktionen, der viele Bereiche abdeckt.
Von Fabian Keil gibt es die Anleitung zum werbefreien und spurenarmen Surfen mit Privoxy, die ebenfalls auf die Filterkonfiguration eingeht. Die Privoxy eigene Dokumentation kann man sich in Form einer PDF Datei herunterladen oder über die Startseite des Privoxy Webinterfaces aufrufen.
Individuelle Privoxy Konfiguration
Wenn Privoxy nur mit den Optionen und Funktionen betrieben werden soll, die für die Nutzung von Tor (oder anderen Proxys) relevant sind und die eine Anonymisierung unterstützen, kann man an Stelle der vorgegebenen Filteraktionen und Aktionsdateien, die man über das obige Webinterface einstellt, eine eigene Konfiguration verwenden.
Dies kann u. a. sinnvoll sein, wenn man die Filterung unerwünschter Inhalte, Verwendung aktiver Inhalte usw. lieber über die Konfiguration der bevorzugten Internetanwendung regelt und nicht über einen Filterproxy.
Um eine eigene Konfiguration zu verwenden, müssen in der Konfigurationsdatei config / config.txt die Optionen der verwendeten Aktionsdateien und Filterdateien geändert werden. Die Standardangaben lauten dort:
actionsfile standard
actionsfile default
actionsfile user
filterfile default.filter
Werden die Optionen in
# actionsfile standard
# actionsfile default
# actionsfile user
actionsfile meine
filterfile mein.filter
geändert, verwendet Privoxy nur noch die Datei meine.action und mein.filter, die als einfache Textdateien angelegt werden müssen.

Privoxy Icon im Windows Systray.
Will man unter Windows die Aktions- und Filterdatei direkt über das Kontextmenü des Privoxy Systray Icon in einem Texteditor aufrufen und bearbeiten können, müssen die default|standard|user.action Dateien und die standard.filter Datei weiter als leere Textdateien im Privoxy Programmverzeichnis existieren.
Beispiele für config.txt, meine.action und mein.filter
## Aktivierung der Weiterleitung aller Anfragen
## über Tor
forward-socks4a / localhost:9050 .
## Aktivierung der Weiterleitung aller Anfragen
## über Tor und zusätzlichem Web-Proxy, wenn
## Zielrechner Tor Exit Knoten blockiert
forward-socks4a .ziel-rechner.de localhost:9050 web.proxy.de:Port
## Deaktivierung der Weiterleitung über Tor
## für einzelen Zielrechner
## HTTPS
forward .meine-bank.de:443 .
## HTTP
forward .anderer-rechner.de .
## Anzahl der Wiederholungsversuche, wenn
## eine weitergeleitete Verbindungsanfrage
## (z. B. über Tor) fehlschlägt. "n" sollte nicht
## zu groß gewählt werden (z. B. n = 1 - 3)
forwarded-connect-retries n
## Alle Konfigurationsdateien von Privoxy liegen im
## Privoxy Programmverzeichnis
confdir .
## Es wird nur die Aktionsdatei meine.action
## verwendet
# Privoxys Aktionsdateien auskommentieren
# actionsfile xyz
actionsfile meine
## Es wird nur die Filterdatei mein.filter verwendet,
## wenn man Privoxy Filter dennoch benötigt
## oder nutzen will.
# Privoxys Filterdateien auskommentieren
# filterfile xyz
filterfile mein.filter
## Beschränkung der Ausgaben auf
## Anfragen, Warnungen und Fehler
debug 1
debug 4096
debug 8192
## Port und Interface, an dem Privoxy lauscht
listen-address 127.0.0.1:8118
## Aktivierung der Filterfunktionen von Privoxy
toggle 1
enable-remote-toggle 0
## Konfiguration der Aktionsdateien
## über Browserinterface nicht zulassen
enable-edit-actions 0
## Keine Änderung des Privoxy Verhaltens
## durch spezielle HTTP-Header
enable-remote-http-toggle 0
## Logverhalten von Privoxy.
## Kein Logfile auf der Festplatte
# logfile
## Windows spezifische Optionen.
## Loggen in der Privoxy GUI, Beschränkung des
## Logzeilenbuffers auf 200 Zeilen, Hervorhebung
## einzelner Zeilen mit fettem Font, Animation des
## Systrayicons bei Aktivität, Privoxy Icon wird
## immer nur im Systray angezeigt
log-messages 1
log-buffer-size 1
log-max-lines 200
log-highlight-messages 1
activity-animation 1
show-on-task-bar 0
close-button-minimizes 1
Im Beispiel sind oben auch die Ausnahmen von der normalen Weiterleitungsregel angeführt, um für einzelne Zielrechner, die Anfragen von Tor Exit Knoten ablehnen, eine Weiterleitung vom Tor Exit Knoten über einen Web-Proxy an den Zielrechner einzurichten oder die Weiterleitung über das Tor Netzwerk für einzelne Zielrechner ganz auszuschließen.
Im Beispiel wird auf der Festplatte keine Logdatei angelegt. Alle Informationsmeldungen, die mit der debug Option bestimmt wurden, werden nur im Privoxy Logfenster ausgegeben.
Allgemein gilt "the last match wins", d. h. die letzte Aktionen, die auf ein Muster zutreffen, sind ausschlaggebend und überschreiben ggf. zuerst definierte Aktionen.
## Für alle URLs gilt:
## Keine Weitergabe von X-Forwarded-for Header.
## Der X-Forwarded-For Header wird von Proxys
## gesetzt, um dem Zielrechner anzugeben,
## dass die Anfrage nicht von ihm selbst stammt,
## sondern von einem hinter dem Proxy liegendem
## Client, der den Hostnamen / die IP XYZ hat.
##
## Referrer Header (von welcher Adresse aus wurde
## die aktuell angefragte Seite aufgerufen) verweist
## immer auf die "Homepage" der aufgerufenen
## Seite.
##
## Keine Weitergabe des From Header
## (im Browser hinterlegte E-Mail Adresse bei alten Browsern)
##
## Vortäuschen, dass der Nutzer amerikanisches
## Englisch als Sprache bevorzugt (also auch
## wahrscheinlich Amerikaner ist und/oder sich
## in den USA aufhält. Sprache wählen, die man auch
## versteht, da Webserver u. U. ihre Seiten automatisch
## in der gewählten Sprache ausliefern
##
## Veränderung des User-Agent Headers (eingesetzter
## Client). In diesem Fall die Linuxversion des Firefox 2.0
## Webbrowsers. Die Sprachversion ("en-US") sollte mit
## der Angabe des bevorzugten Sprachraumes ("en-us")
## übereinstimmen
##
## Die Filter aktivieren, die in mein.filter stehen.
{ \
+hide-forwarded-for-headers \
+hide-referrer{forge} \
+hide-from-header{block} \
+hide-accept-language{en-us} \
+hide-user-agent{Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0} \
+filter{html-annoyances} \
+filter{hide-tor-exit-notation} \
}
/
## Ausnahme für Sites, die den realen Referrer
## Header benötigen,
## z. B. eigenes WordPress Weblog
{ -hide-referer }
mein.bloghoster.de/username
## Generell keine HTTP CONNECT Verbindungen
## per HTTPS (SSL) erlaubt
## (für eingebettete / verlinkte
## HTTPS Inhalte auf HTTP Seiten
{ +limit-connect{-1} }
/
## Erlaubte HTTP CONNECT Verbindungen
## per HTTPS (SSL)
{ +limit-connect{443} }
www.super-site.de/
*.meine-bank.de/
## Schnelle und generelle Blockierung
{ +block }
.bad-rechner.de/
.bad-rechner2.de/datei.html
## Beispiel aus den Privoxy Filterdateien, um
## <blink|marquee> Tags auszufiltern
FILTER: html-annoyances Get rid of particularly annoying HTML abuse
s-</?(blink|marquee).*>--sigU
## Beispiel, um bei Verwendung der
Tor Option MapAddress
## die Adressbestandteile des Tor Exit Netzknotens (...torexitnodenick.exit)
## in der Adresse zu entfernen, bevor die Internetanwendung
## bzw. der Webbrowser die Adresse im Host und Referrer Header
## zum Webserver überträgt, damit der Webserver keine für ihn
## ungültigen Header erhält.
FILTER: hide-tor-exit-notation Header filter to remove the Tor exit node notation in Host and Referer headers.
s@^((?:Referer|Host):\s*(?:https?://)?[^/]*)\.[^\./]*?\.exit@$1@i