Ubuntu 8.04 „Hardy Heron“
Polipo ist ein cachender Webproxy ähnlich wie Privoxy. Im Vergleich zu diesem ist Polipo kleiner und schneller, besitzt aber nicht die selben Fähigkeiten wenn es um das Blocken von Werbung oder Cookies und generelle Header-Manipulation geht.
Wer diese Aufgaben aber eh nicht mit Privoxy sondern mit seinem Browser regelt und ausschließlich einen Webproxy braucht um zum Beispiel als Schnittstelle für Tor zu dienen, für den stellt Polipo eine schlanke Alternative dar.
Das Programm kann aus den Paketquellen von Ubuntu über das Paket
polipo (universe)
mit apturl
Paketliste zum Kopieren:
sudo apt-get install polipo
sudo aptitude install polipo
installiert [1] werden.
Nach der Installation wird der Polipo-Dienst automatisch gestartet. Will man dass Polipo nicht automatisch beim Booten gestartet wird muss man es aus den Runleveln löschen [3].
Damit man über Polipo surfen kann muss man in seinem Browser in den jeweiligen Netzwerk-Einstellungen Polipo als Proxy eintragen. Als Server- oder Hostadresse gibt man localhost
bzw. 127.0.0.1
an und als Port, den Port an welchem Polipo lauscht (standardmäßig 8123).
Die Konfigurationsdatei von Polipo liegt in /etc/polipo/config und kann mit einem Editor [4] mit Root-Rechten [5] verändert werden. Wenn man Einstellungen an Polipo vornimmt muss man den Dienst neustarten [6] damit die Einstellungen aktiviert werden. Zum Neustarten gibt man folgenden Befehl ein:
sudo /etc/init.d/polipo restart
Möchte man Polipo auf einen Socks-Proxy (wie zum Beispiel Tor) weiterleiten lassen muss man in der Konfigurationsdatei das Kommentar-Zeichen (#
) vor diesen zwei Zeilen entfernen und der Adresse : Port-Kombination und der Art des Socks-Proxys füllen. Wenn die Zeilen nicht existieren, muss man sie neu hinzufügen. Für einen Socks5-Proxy der am lokalen Rechner an Port 9050 lauscht sehen sie so aus :
socksParentProxy = "127.0.0.1:9050" socksProxyType = socks5
Zu Beachten: Der "localhost" funktioniert hierbei als socksParentProxy nicht, Polipo resigniert mit einer "Host not Found" Fehlermeldung im Browser.
Soll Polipo nicht cachen, also keine Webinhalte zum schnelleren Zugriff auf der Festplatte zwischenspeichern muss man in der Konfigurationsdatei das Kommentar-Zeichen (#
) vor dieser Zeile entfernen:
# diskCacheRoot = ""
Einige der wenigen Optionen die Polipo zum Schutz der Privatsphäre bietet können in der Konfigurationdatei festgelegt werden. Dazu erstellt man in dieser Datei eine Zeile:
censoredHeaders = OPTION1,OPTION2,OPTION3,...
Mögliche Optionen sind: from
,Accept-Language
,User-Agent
die den jeweiligen Part aus den zu versendenen Headern der HTTP-Requests rauslöscht. Außerdem kann man die Zeile:
censorReferer = true|false|maybe
erstellen, wobei true
bedeutet, dass kein Referrer versand wird, false
, dass einer versandt wird und maybe
, dass ein Referrer nur versandt wird, wenn er von der gleichen Seite stammt die man besucht.
Will man zum Beispiel den Accept-Language- und den User-Agent-Header entfernen und den Referer permanent unterdrücken würden die beiden Zeilen so aussehen:
censoredHeaders = Accept-Language,User-Agent censorReferer = true
Polio bietet auch eine rudimentäre ganz-oder-garnicht Funktion zum Blocken von Webseiten an, unterstützt dabei aber auch reguläre Ausdrücke. Diese ist in der Datei /etc/polipo/forbidden und kann mit einem Editor [4] mit Root-Rechten [5] verändert werden. Standardmäßig enthält die Datei schon einige auskommentierte Beispiele die die Funktionsweise verdeutlichen.
Standardmäßig ist das Ubuntu/Debian-Paket von Polipo so eingestellt, dass es eine Logfile erstellt in der bisweilen bei Fehlern auch URL's gespeichert werden. Der Standardpfad für die Logdateien ist /var/log/polipo/.
Um das Loggen zu deaktivieren öffnet man mit einem Editor [4] mit Root-Rechten [5] die Datei /usr/lib/polipo/polipo-control und entfernt in Zeile 19:
DAEMON_OPTS="-c $CONFIG_FILE pidFile=$PIDFILE daemonise=true LogFile=$LOGFILE"
die Option LogFile=$LOGFILE
. Nun muss man in der Datei /etc/polipo/config die folgenden zwei Zeilen einfügen:
logSyslog = false logFile = "/dev/null"
Nach einem Neustart wird Polipo nun keine Logfiles mehr anlegen.
Bekommt man so oder eine so ähnliche Meldung im Browser, wenn man versucht durch Polipo zu surfen sollte man mal im Terminal den folgenden Befehl ausführen:
ps aux | grep polipo | grep -v "grep"
Die Ausgabe kann in etwas so aussehen:
proxy 6001 0.0 0.3 4852 3520 ? Ss 17:55 0:00 /usr/bin/polipo -c /etc/polipo/config pidFile=/var/run/polipo/polipo.pid daemonise=true logFile=/var/log/polipo/polipo.log forbiddenFile=/etc/polipo/forbidden proxyOffline=true
Entscheiden ist die letzte Option proxyOffline
. Steht diese auf true
bedeutet dies, dass Polipo nur im Offline-Betrieb arbeitet. Das kann zwei Ursachen haben. Entweder man hat in der /etc/polipo/config die Option proxyOffline = true
gesetzt oder man leidet unter einem momentanen Bug in Polipo.
Das Problem entsteht, weil Polipo gestartet wird bevor eine Netzwerkverbindung besteht und deswegen automatisch in den Offline-Modus versetzt wird. Um das Problem zu beheben fügt man erstmal in der Datei /etc/polipo/config die Zeile:
proxyOffline = false
ein. Danach öffnet man die Datei /usr/lib/polipo/polipo-control und ersetzt ungefähr in Zeile 24 den folgenden Text:
if /sbin/route -n | grep ^0.0.0.0 > /dev/null; then
durch diesen:
if [ `grep -v "#" /etc/polipo/config | grep proxyOffline | sed s/" "//g | sed s/proxyOffline=//` = "false" ] || /sbin/route -n | grep ^0.0.0.0 > /dev/null;then
Nach einem Neustart des Rechners sollte das Problem behoben sein.