www.fabiankeil.de/privoxy-anleitung/
Privoxy ist ein
HTTP-Proxy,
der die Privatsphäre des Benutzers beim Surfen im Web erhöhen kann.
Der Name steht für Privacy Enhancing Proxy
, Privoxy ist jedoch mehr als nur
ein Schutz der Privatsphäre.
Der Proxy-Server ermöglicht es, aufgerufenen Seiten frei nach Geschmack zu filtern und umzuschreiben.
Privoxy kann nicht nur lästige Cookies und nicht weniger lästige Banner unterdrücken,
sondern auch Werbung auf Textebene vernichten.
Ein Proxy ist ein Programm, das zwischen Client und Server sitzt, Anfragen vom Client annimmt und an den Server weitergibt. Der Einsatz von Proxys (im Englischen Proxies) kann mehrere Gründe haben, die verbreitetesten sind Erhöhung der Sicherheit oder Effizienz.
Zur Steigerung der Sicherheit wird dem Client durch Einsatz einer Firewall verboten, außerhalb seines lokalen Netzwerks zu kommunizieren. Stattdessen muss er einen Proxy benutzen, der als einziger von der Firewall nicht blockiert wird und der die Anfragen vor der Bearbeitung auf Zulässigkeit überprüfen und bei Bedarf in einem Logfile festhalten kann. Soll die Effizienz gesteigert werden, speichert der Proxy einmal abgerufene Seiten eine Zeit lang (caching). Bei der Anforderung einer bereits im Speicher (Cache) vorhandenen Seite wird diese direkt geliefert, das Netzwerk somit entlastet.
Im Fall von Privoxy ist der Browser der Client. Privoxy kann, wenn die Ansprüche nicht zu hoch sind, als Sicherheits-Proxy eingesetzt werden, es gibt jedoch andere Proxys, die genau dafür geschaffen sind und mehr Möglichkeiten bei der Konfiguration bieten.
Privoxy ist auf die Erhöhung der Privatsphäre, die Unterdrückung von Werbung und die Veränderung von angeforderten Seiten spezialisiert, kann aber vor oder hinter einen anderen Proxy geschaltet werden, zum Beispiel vor Squid oder Polipo, um sowohl zu filtern, als auch zu cachen.
Versucht der Benutzer eine Webseite aufzurufen, teilt der Browser Privoxy die Zieladresse mit, Privoxy überprüft ob die Adresse abgerufen werden darf, holt wenn die Überprüfung positiv ausgefallen ist die Webseite vom Server, überarbeitet die Seite eventuell und gibt sie an den Browser zur Darstellung weiter.
Enthält die Webseite Grafiken, schickt der Browser für jede Grafik eine neue Anfrage. Privoxy kann dadurch jede Grafik einzeln bearbeiten und Navigationselemente erlauben, aber Werbung abblocken. Privoxy filtert bereits die Webseite selbst, wenn eine Werbegrafik erkannt wird, wird die Adresse umgeschrieben und zeigt auf eine von Privoxy bereit gehaltene Ersatzgrafik. Der Surfer kann so erkennen, dass Werbung vorhanden war, wird aber nicht durch Animationen oder grelle Farben vom Seiteninhalt abgelenkt.
Privoxy läuft auf einer Vielzahl von Betriebssystemen, die (nicht vollständige) Liste umfasst:
Fertige Privoxy-Pakete können bei SourceForge.net runter geladen werden, Privoxy steht unter der GPL 2.
Die Installation erfolgt nach den Gepflogenheiten des Betriebssystems: Bei Windows durch Doppelklick der Exe-Datei, bei den Unix-Derivaten durch Verwendung eines Paketmanagers oder durch Kompilation des Quellcodes.
Ein Hinweis für ElectroBSD- und FreeBSD-Nutzer:
Privoxy ist Teil der Ports-Collection und kann durch make install clean
in
/usr/ports/www/privoxy/
installiert werden, ohne das der Benutzer sich um Abhängigkeiten
kümmern muss.
Auch für die meisten GNU/Linux-Distributionen gibt es angepasste Privoxy-Pakete, deren Benutzung die Installation erleichtern kann.
Unter Windows ist Privoxy direkt nach der Installation einsatzbereit und startet mit jedem Booten. Unter anderen
Betriebssystemen ist eventuell noch ein bisschen Arbeit angesagt, die sich jedoch auf wenige Zeilen beschränkt.
Dort wird Privoxy von der Kommandozeile gestartet und die Konfigurationsdatei config
als Argument
angegeben. Mit der Option --user benutzername.gruppenname
können zusätzlich der Benutzer und
die Gruppe angepasst werden. Wenn Gruppen- und Nutzer-Name identisch sind, reicht die Angabe des Nutzernamens aus.
Unter ElectroBSD und FreeBSD wird – wenn man wie beschrieben die Ports-Collection benutzt – Privoxy nach
/usr/local/sbin/
installiert, die Konfigurationsdateien nach /usr/local/etc/privoxy/
und die Log-Dateien nach /var/log/privoxy/
.
Der manuelle Privoxy-Aufruf lautet folglich:
sudo /usr/local/sbin/privoxy --user privoxy /usr/local/etc/privoxy/config
.
Der Benutzer privoxy
und die gleichnamige Gruppe wurden vom Port bei der Installation angelegt.
Um Privoxy beim Rechnerstart automatisch zu starten muss unter ElectroBSD und FreeBSD
/etc/rc.conf
nur noch um den Eintrag:
privoxy_enable="YES"
ergänzt werden, der Rest läuft über das rc-System.
Unter anderen Betriebssystemem müssen die Pfade entsprechend geändert werden, manchmal liegen die
Konfigurationsdateien in /etc/privoxy/
oder auch im Verzeichnis der Privoxy-Binärdatei.
Viele Pakete bringen ebenfalls ein fertiges Start-Skript mit, die Benutzung sollte dokumentiert sein.
Bevor ein Browser Privoxy als Proxy-Server einsetzt, muss er entsprechend konfiguriert werden. Bei der Vielzahl verschiedener Browser ist es nicht möglich hier jeden einzelnen zu berücksichtigen, die Einstellungen ähneln sich jedoch stark. Ein paar Beispiele wie man die Konfigurationsmasken bei unterschiedlichen grafischen Browsern erreichen kann:
Extras/Verbindungen/LAN-Einstellungen/Erweitert
Edit/Preferences/Network Settings/Manual Proxy Configuration
Settings/Configure Konqueror/Proxy/Use Proxy/Manually Specify Settings/Setup
In der Konfigurationsmaske ist bei HTTP-Proxy und HTTPS-Proxy 127.0.0.1
als Adresse und 8118
als Port einzutragen. Als letzte Hürde gilt herauszufinden ob das Protokoll mit angegeben werden soll.
Bei Internet Explorer und Mozilla Firefox ist dies nicht der Fall, Konqueror verlangt jedoch
http://127.0.0.1
sowie https://127.0.0.1
, ohne das es aus der Eingabemaske
hervor geht.
Kommandozeilenbrowser wie Lynx haben naturgemäß keine grafische Eingabemaske. Sie halten sich an interne
Konfigurationsdateien, oder werten die Variable http_proxy
aus. Diese wird mit
export http_proxy="http://127.0.0.1:8118/"
gesetzt. Am besten in einer Startdatei die beim
Booten aufgerufen wird, alternativ vor jedem Browseraufruf.
Ob die Einstellungen erfolgreich waren, lässt sich durch Aufrufen der Seite
http://config.privoxy.org/ klären.
Im Erfolgsfall meldet sich dort Privoxy mit This is Privoxy 3.0.11
on localhost (127.0.0.1), port 8118, enabled
(Werte können abweichen).
Wird stattdessen nach https://www.privoxy.org/config/ weitergeleitet, so ist die Konfiguration fehlgeschlagen, Privoxy ist nicht gestartet, oder der Browser hat die alte Seite zwischengespeichert. Ein Leeren des Caches oder ein neuer Konfigurationsversuch bringen Klarheit.
Nach der Grundkonfiguration filtert Privoxy bereits mit einer akzeptablen Trefferquote, viele Nutzer nehmen daher keine Anpassungen an der Konfiguration vor. Dagegen ist nichts einzuwenden, auch wenn Privoxy so nicht ausgereizt wird.
Um die Trefferquote weiter zu erhöhen, oder um Privoxy an eigene Bedürfnisse abseits der Werbeunterdrückung
anzupassen, ist die Änderung verschiedener Konfigurationsdateien erforderlich. Sie lassen sich in zwei
Kategorien aufteilen: Aktions-
und Filterdateien
.
Aktionsdateien haben die Dateiendung .action und legen fest, welche Handlung (filtern, blockieren ...) mit welchen Seiten vollzogen werden soll. Im Normalfall werden drei verschiedene Aktionsdateien verwendet:
match-all.action enthält seit Privoxy 3.0.11 die Regeln fest, die grundsätzlich für alle Anfragen gelten, aber von später kommenden Dateien überstimmt werden können.
default.action enthält die Basiskonfiguration und sorgt für Privoxys gute Filterleistung, ohne das der Nutzer dafür einen Finger rühren muss. Diese Datei sollte vom Nutzer nicht geändert werden.
Als letzte Aktionsdatei kommt user.action ins Spiel, dort werden die vom Benutzer gewünschten Seiten-spezifischen Änderungen vorgenommen. user.action kann mit jedem Texteditor angepasst werden, um Fehler zu vermeiden ist für Einsteiger jedoch auch die Nutzung des Webinterfaces ratsam.
Um die Übersicht zu erhöhen können beliebige weitere *.action-Dateien angelegt werden, für die meisten Anwender ist das aber unnötig.
Die Datei default.filter enthält die offiziellen Privoxy-Filter, die von den Privoxy-Entwicklern bereitgestellt werden. Ein Filter ist eine Methode um den Inhalt der aufgerufenen Seite zu verändern. Seit Privoxy 3.0.5 beta können auch die Header mit Privoxy-Filtern verändert werden.
Bevor ein Filter in einer der Aktionsdateien verwendet werden kann, muss er in einer Filter-Datei definiert sein.
In Privoxy können Filter-Dateien noch nicht über das Privoxy-Interface verändert werden, jede Änderung erfolgt von Hand mit Hilfe eines Texteditors.
Wie bei den Aktions-Dateien werden mehrere Filter-Dateien unterstützt und es ist ratsam,
für Eigenkreationen eine getrennte Filter-Datei zu nutzen. Üblicherweise heißst diese user.filter.
In Privoxys Konfigurations-Datei wird dazu die Zeile: filterfile user.filter
auskommentiert. Falls die Datei noch nicht existiert, muss sie vom Nutzer angelegt werden.
Privoxys Webinterface wurde bereits beim Test der Privoxy-Installation angesprochen, der eigentliche Zweck liegt jedoch in der Konfiguration.
Um den Inhalt der Aktionsdateien anzuzeigen,
ruft man im Browser die Adresse
http://p.p/ auf und wählt im erscheinenden Menü die Option
View & change the current configuration
aus.
http://p.p/ ist der kürzeste Weg
zum Privoxy-Interface, die Langform ist die weiter oben benutzte Adresse
http://config.privoxy.org/.
Wie dem Namen zu entnehmen, erlaubt View & change the current configuration
sowohl das
Ändern der Konfiguration, als auch die Kontrolle der Einstellungen. Bevor man hier irgend etwas verändert,
sollte man sich vergewissern, dass die Einstellungen korrekt sowie vollständig sind und Privoxy die drei oben
beschriebenen Aktionsdateien und eventuell ihren Pfad auflistet.
Falls eine der Aktionsdateien fehlt, muss die Privoxy-Standard-Konfigurationsdatei entsprechend angepasst werden. Die Datei ist gut dokumentiert, Änderungen beschränken sich meist auf das Auskommentieren einer Zeile, also dem Entfernen eines Sharp-Zeichens (#).
Privoxy überprüft seine Konfigurationsdateien bei jeder Anfrage auf Änderungen, es ist daher nicht nötig, Privoxy neu zu starten oder ein SIGHUP zu schicken.
Zeigt Privoxy die Nutzung aller drei Aktionsdateien an, kann mit der Konfiguration begonnen werden.
Dies geschieht, wenig überraschend, durch Benutzung des Edit-Buttons. Der View-Button zeigt die Datei
in Textform an, erlaubt aber keine Änderungen. Aus Sicherheitsgründen ist der Editor in der Grundkonfiguration
deaktiviert. Um ihn zu aktivieren muss in der Konfiguration die Zeile enable-edit-actions 0
auf
enable-edit-actions 1
geändert werden. Vorher bitte den dortigen Hinweis auf die Risiken beachten.
Wenn der Editor aktiviert ist, sollte als erstes in der match-all.action die
Standard-Aggressivität eingestellt werden. Sie gilt für alle Seiten, kann aber durch Ausnahmeregeln
umgangen werden. Es kann eine von drei Stufen gewählt werden: Cautious
(Vorsichtig), Medium
(Mittel) und Advanced
(für Fortgeschrittene).
Je aggressiver die Grundeinstellung, desto mehr Werbung und Spionage-Blödsinn wird unterdrückt, es häufen
sich jedoch auch die unbeabsichtigten Effekte und es kann passieren, dass manche Seiten nicht mehr nutzbar
sind. Für den Anfang ist es sicher nicht verkehrt, erste Erfahrungen mit Cautious
zu sammeln und
die Stufe zu erhöhen, wenn man mit der Privoxy-Bedienung etwas besser vertraut ist.
Die Anpassung der match-all.action ist damit abgeschlossen, weitere Schritte sollten in user.action vorgenommen werden, wozu ein wenig Theorie nötig ist.
Aktionsdateien sind in Sektionen (sections) aufgeteilt, die sich wiederum aus Aktionen (actions) und URL-Mustern (URL patterns) zusammensetzen. Aktionen wurden bereits angesprochen, sie legen fest, was Privoxy mit einer Seite machen soll. URL-Muster geben dagegen an, auf welche Seite die Aktionen angewandt werden sollen.
Sie heißen URL-Muster und nicht einfach nur URLs, weil sie durch reguläre Ausdrücke angegeben werden.
Reguläre Ausdrücke erlauben es, mehrere
URLs mit einem Muster abzudecken. Es wäre müßig
jede Werbe-URL einzeln zu behandeln, daher überprüft
Privoxy einfach ob eine URL Zeichenfolgen wie
Werbung
oder banner
enthält. Am Anfang muss man sich noch nicht mit regulären Ausdrücken befassen.
Sektionen dienen dazu, Aktionen und Ziele zu bündeln. Es können sowohl mehrere Aktionen als auch mehrere
URL-Muster auf einmal festgelegt werden. Das ist
praktisch, wenn die gleiche Aktionsfolge für mehrere Seiten gelten soll.
Abteilung
wäre eine elegantere Übersetzung,
Sektion
erfordert vom Leser jedoch weniger Denkaufwand und wird in dieser Anleitung daher bevorzugt.
Unterschiedliche Sektionen dürfen sich widersprechen. Privoxy wertet alle Sektionen nacheinander aus, bei Widersprüchen gelten die Werte der letzten Sektion. Das ist kein Bug sondern ein Feature. Dadurch ist es möglich, erst eine Reihe von Aktionen für eine große Zahl von Zielen vorzunehmen und später Ausnahmen festzulegen.
Das Prinzip ähnelt Paket-Filter-Regeln, es ist jedoch zu beachten, dass viele Paket-Filter bereits die erste passende Regel befolgen und die Bearbeitung abbrechen. Trifft keine spezielle Regel zu, wird die Standard-Regel angewandt, die am Ende der Regelliste steht. Privoxy geht umgekehrt vor: die Standard-Regel wird zuerst gelesen, anschließend wird sie von den folgenden Regeln abgeändert.
Iframes sind Unterseiten, die in eine andere Seite eingebettet werden. Die Unterseite ist ein eigenes Dokument.
Iframes werden hauptsächlich zur Einblendung von Werbung in Textform benutzt, können aber auch Banner, Videos oder Flash-Animationen enthalten. Vom Aussehen her sind sie leicht mit normaler Textwerbung – also Werbung die im gleichen Dokument wie der Nutzinhalt steckt – zu verwechseln.
Ein Beispiel für normale Textwerbung sind Googles Sponsored Links.
Für den Privoxy-Benutzer hat Iframe-Werbung einen großen Vorteil: da der Browser sie von Privoxy gesondert anfordert, kann Privoxy einfach die Lieferung verweigern.
Normale Textwerbung kann nicht einfach verweigert werden, ein Block bezieht sich immer auf das ganze Dokument, der Benutzer würde auch den eigentlichen Inhalt nicht zu sehen bekommen. Textwerbung kann man durch einen anderen Text oder durch Leerzeichen ersetzen, muss dafür aber einen eigenen Filter schreiben. Dazu später mehr.
Blockieren kann Privoxy bereits von selbst, es ist nur noch das Ziel anzugeben.
Als (hoffnungslos veraltetes) Beispiel dient heise.de, dort verwendet man Iframe-Werbung,
die vom Server contentsearch.de.espotting.com
abgerufen wird. Dies lässt sich im Browser
feststellen: bei Mozilla Firefox rechtsklickt man dazu in den Bereich des Iframes und wählt
This Frame/View Page Info
aus, um sich die Adresse anzeigen zu lassen.
Bevor man zum Blockieren nun eine neue Sektion anlegt, sollte man erstmal überprüfen ob eventuell
schon eine vorhanden ist. user.action enthält bereits eine Sektion, der nur eine einzige
Block-Aktion zugeordnet ist. Wenn Privoxy frisch installiert ist, ist schon ein Beispiel angegeben
www.example.com/nasty-ads/sponsor.gif
, dies kann über den nebenstehenden Edit-Button durch
den Espotting-Server ersetzt werden.
Espotting ist eine reine Werbe-Firma, daher ist es unwahrscheinlich, dass man jemals
von deren Servern irgend etwas empfangen wollen wird. Statt nur
contentsearch.de.espotting.com
zu blockieren, kann ein noch allgemeineres Muster
gewählt werden.
Richtig gelesen, auch contentsearch.de.espotting.com
ist bereits
ein – wenn auch sehr einfach zu verstehendes – Muster. Es umfasst jeden
URL,
der die Zeichenfolge contentsearch.de.espotting.com
enthält.
Je kleiner man das Muster macht, desto allgemeiner wird es. Zur Erinnerung: das kürzeste Zeichen ist /
.
Es umfasst einfach alles. Einfach alles zu blocken ist keine gute Idee, ein Kompromiss zwischen
hoher Trefferquote und wenig Fehlern ist in diesem Fall .espotting.com/
. Damit berücksichtigt man
alle Subdomains (alles vor dem ersten Punkt) mit allen Unterseiten (alles hinter dem Slash).
Sobald der Browser nun versucht, eine Espotting.com-Seite aufzurufen, blockiert Privoxy den Aufruf und liefert stattdessen eine Nachricht darüber. Der Benutzer kann nun über einen eingeblendeten Spezial-Link die Seite trotzdem abrufen, sich von Privoxy die für die Seite zuständigen Aktionen anzeigen lassen, oder einfach nur die Werbeunterdrückung befriedigt zur Kenntnis nehmen.
Im Folgenden geht es um die Erstellung und Anpassung eines Privoxy-Filters. Der beschriebene
Filter ist veraltet und dient nur als Beispiel. Leser denen es nur um das Endergebnis,
die Werbeunterdrückung bei Google, geht, können dazu einfach den Filter google
aktivieren,
der seit Privoxy 3.0.6 mitinstalliert wird, aber standardmäßig deaktiviert ist.
Nun zu einem etwas komplexeren Beispiel, der Entfernung von Googles Sponsored Links. Da die Sponsored Links zusammen mit den Suchergebnissen in einer Seite geliefert werden, kann man sie nicht einfach blockieren (ich wiederhole mich). Sie müssen mit einem eigenen Filter behandelt werden.
Um einen Filter zu erstellen, muss man wissen, was man überhaupt filtern möchte. Der Quelltext der Seite hilft weiter. Bei Google.com sind die Sponsored Links wie folgt aufgebaut:
<td height=25 align=center><font color=#6f6f6f size=-1>Sponsored Links</font></td></tr><tr height=7><td></td></tr><tr><td nowrap><font size=-1><a id=aw1 href=/url?q=http://example.org/ onMouseOver="return ss('go to example.org')" onMouseOut="cs()"><b>Werbeseite</b></a><br>Werbetext durch ein<br>unterbrochen<br><font color=green>www.example.org</font><br><br></font></td></tr><tr height=7><td></td></tr><tr><td height=25 align=center><font size=-1><a href=http://www.google.com/url?q=http%3a%2f%2fadwords.google.com%2fmehrparameter class=fl>See your message here...</a></font>
Um dieses Ungetüm zu entfernen muss man es verallgemeinern, wie im folgenden Filter geschehen:
######################### # filter google adwords # ######################### FILTER: google_adwords Remove top and rightside text ads s@Sponsored Links@@Ug s@See your message here...@@U s@<td( class=ch)? id=(taw|tpa|spa)\d.*</td>@<td></td>@Ug s@<a id=aw\d.*</font></td>@</font></td>@Ug
Dieser Filter stammt von Jan Willamowius. Bevor man auch nur darüber nachdenkt, einen eigenen Filter zu erstellen, lohnt es zu schauen, ob man nicht irgendwo kopieren kann.
Vor dem Einsatz eines fremden Filter sollte er dennoch verstanden worden sein. Daher hier eine kurze Erklärung des Aufbaus:
Die ersten drei Zeilen sind ein Kommentar, der den Filter von anderen abtrennt. Sie dienen nur der Übersichtlichkeit in der Filterdatei, auf den Filter selbst haben sie keinen Einfluss.
FILTER:
ist für Privoxy der Beginn eines neuen Filters (Wer hätte das gedacht?).
Die Großbuchstaben sind zwingend, Filter:
wird nicht akzeptiert.
Das erste dem Schlüsselwort FILTER:
folgende Wort gibt den Filternamen an. Dieser Filter heißt
google_adwords
. Im Filternamen sind keine Leerzeichen erlaubt, daher die Verwendung des Unterstrichs.
Alles, was nach dem Filternamen in der gleichen Zeile kommt, wird als Beschreibung des Filters interpretiert.
Hier: Remove top and rightside text ads
. Die Filterbeschreibung wird später von Privoxy
im Webinterface angezeigt und hilft dem Benutzer beim Finden eines passenden Filters.
Die Angabe ist freiwillig aber empfehlenswert.
Die Leerzeile ist – wie der Kommentar – optional.
Die Zeile s@Sponsored Links@@Ug
enthält die erste Filteraktion. Das erste s
gibt die Filterart an:
Suchen und ersetzen. Die @-Zeichen dienen als Trenner zwischen dem zu suchenden Text und dem Ersatz. Da die
letzten beiden @-Symbole ohne Zwischenraum sind, wird kein Ersatz eingefügt. Anders ausgedrückt:
der Suchtext wird in der Seite gelöscht.
Das U
ist eine Privoxy-interne Syntax-Erweiterung und steht für Ungreedy
(nicht gefräßig/gierig)
ist hier ohne Nutzen; schaden tut es allerdings auch nicht (Erklärung dazu kommt später). Das g
steht für global
und gibt an, dass das Suchen und Ersetzen so oft wie möglich durchgeführt werden soll.
Ohne das g
würde die Aktion maximal einmal durchgeführt werden.
s@Sponsored Links@@Ug
bedeutet somit: alle Vorkommnisse von Sponsored Links
ersatzlos streichen.
Die Bedeutung von s@See your message here...@@U
ist analog: See your message here...
streichen wenn vorhanden. Da keine g-Option angegeben ist, wird die Funktion nur einmal vorgenommen.
Mehr ist nicht nötig.
s@<td( class=ch)? id=(taw|tpa|spa)\d.*</td>@<td></td>@Ug
ist schon etwas umfangreicher.
Neuerungen mit Sonderfunktionen sind: runde Klammern, ein Fragezeichen, Pipe-Symbole (Hochstriche),
die Zeichenfolge \d
, Punkte und ein Asteriskus (Sternchen).
Die runden Klammern kennzeichnen die Zeichenfolge class=c
als zusammengehörig. Das Fragezeichen
gehört dazu, es ist ein Quantifizierer und bedeutet: die vorherige Zeichengruppe soll ein- oder keinmal
vorkommen. Ohne die runden Klammern würde das Fragezeichen nur für das letzte
h
gelten.
Die nächsten runden Klammern kommen ohne Fragezeichen daher, der Inhalt soll genau einmal vorhanden sein –
nicht mehr und nicht weniger. Die Pipe-Symbole stehen für eine Auswahl, (taw|tpa|spa)
deckt daher die
Zeichenfolgen taw
, tpa
oder spa
ab. Eine davon muss vorhanden sein, oder das ganze Muster
passt nicht.
\d
ist eine Zeichenklasse und steht für eine beliebige Ziffer.
Der Punkt steht für ein beliebiges Zeichen.
Der dem Punkt folgende Asteriskus gibt – wie das Fragezeichen – die Anzahl des vorherigen
Zeichens oder der Zeichengruppe an. Es steht standardmäßig für: so oft wie möglich. Es ist ein gieriges
(greedy) Zeichen und kriegt nie genug. Der Appetit wird dem Sternchen durch das U
abgewöhnt. Die
Bedeutung ist daher: so oft wie nötig, bis das nächste Teilmuster passt.
Die restlichen Zeichen zwischen den @-Trennzeichen stehen nur für sich selbst und müssen jeweils einmal vorkommen.
Zusammenfassung: s@<td( class=ch)? id=(taw|tpa|spa)\d.*</td>@<td></td>@Ug
sagt Privoxy:
Ersetze alle Zeichenfolgen <td
, denen eine oder keine Zeichengruppe class=ch
folgt,
die vor der Zeichenfolge id=
, wiederum gefolgt von entweder taw
, tpa
oder spa
steht, auf die eine beliebige Ziffer folgt, deren Position vor einer möglichst kleinen Anzahl von beliebigen
Zeichen ist, die wiederum vor den Zeichen </td>
stehen, mit <td></td>
.
Vereinfacht: Eine bestimmte Tabellenzelle wird samt Inhalt entfernt, eine leere Ersatz-Zelle eingefügt.
Manche Leute bezeichnen die Syntax von Perls regulären Ausdrücken auch als lesegeschützt
–
warum auch immer.
Der Ausdruck s@<a id=aw\d.*</font></td>@</font></td>@Ug
enthält keine Neuerungen.
Jede Zeichenkette die sich aus <a id=aw
, einer Ziffer sowie einer möglichst kleinen Anzahl
beliebiger Zeichen, denen </font></td>
folgt, zusammensetzt,
wird durch </font></td>
ersetzt.
Nachdem man den Filter verstanden hat, steht seinem Einsatz nichts mehr im Weg.
Er wird in default.filter
(oder wenn möglich user.filter
) rein kopiert und
ist anschließend als Aktion in den Aktionsdateien benutzbar.
Da der Filter nur für Google gelten soll, legt man über Privoxys Webinterface in user.action
eine
neue Sektion an. Dafür könnte man den Button Insert new section at top
benutzen, es ist jedoch guter Stil,
derartige Sektionen ans Ende zu packen. So wird verhindert, dass später kommende Sektionen die Aktion
überschreiben.
Beim Google-Beispiel ist zwar unwahrscheinlich, dass eine spätere Sektion explizit festlegt,
dass der Adwords-Filter nicht angewandt werden soll. Doch mit der Regel: allgemeine Sektionen nach
vorne, spezielle Sektionen nach hinten
, macht man nichts verkehrt. Befolgen der Regel
hilft zudem beim späteren Wiederfinden der Sektionen.
Um die neue Sektion am Ende von user.action
anzulegen, scrollt man bis zum Ende der Seite und benutzt den
Insert new section below
-Button. Mit dem Edit-Button wird nun die gewünschte Aktion ausgewählt. Er führt
zu einer Liste, die alle verfügbaren Aktionen anzeigt.
Neben jeder Aktion gibt es drei Radio-Buttons, die für Enable
,
Disable
und No Change
stehen. Als Anfangswert ist No Change
aktiviert, was bedeutet,
dass die Sektion die betreffende Aktion nicht beeinflusst. Es gelten die Einstellungen, die von vorherigen
Sektionen vorgenommen wurden. Disable
deaktiviert eine Aktion und überschreibt damit jede vorhergehende
Sektion, die die gleiche Aktion beeinflusst. Enable
aktiviert eine Aktion, auch sie überschreibt jede
vorhergehende Sektion.
Der Filter google_adwords
ist folglich auf Enable
zu setzen. Es ist die einzige Aktion,
die in der Google-Sektion nötig ist. Der Submit
-Button führt zum vorherigen Menü zurück und speichert
die vorgenommene Einstellung.
Der Sektion fehlt nun noch das URL-Muster. Eine Möglichkeit
wäre .google.
, es könnte allerdings schon zu grob sein. Alle gewünschten Google-Domains einzutragen ist
ein brauchbarer Kompromiss. Zum Beispiel .google.de/
, .google.com/
und .google.net/
.
Die Idee, das Ganze durch eine Bündelung als .google.(net|de|com)/
auszudrücken, ist nachzuvollziehen,
funktioniert allerdings nicht. Privoxy erlaubt keine Perl-Syntax in der Domain, sondern erwartet dort
Shell-Syntax, die weniger rechenintensiv, aber deutlich leistungsschwächer ist. Der Pfad wiederum wird mit
Perl-Syntax beschrieben. Am Anfang kann das verwirren – später auch.
Update 2020-12-12: Ab Privoxy-Version 3.0.29 wird Perl-Syntax im Domain-Muster erlaubt wenn
FEATURE_PCRE_HOST_PATTERNS beim Kompilieren aktiviert wurde. Um Perl-Syntax zu aktivieren
muss der Prefix PCRE-HOST-PATTERN:
verwendet werden: PCRE-HOST-PATTERN:\.google\.(net|de|com)/
.
Wer den Adwords-Filter nun auf www.google.de ausprobiert, wird feststellen,
dass die Werbelinks zwar unterdrückt werden, jedoch Anzeigen
und Sehen Sie Ihre Anzeige hier...
stehen bleiben. Da der Filter für die englische Google-Version erstellt wurde, sollte das niemanden überraschen.
Er muss noch angepasst werden.
Der Filter soll entweder Sponsored Links
oder Anzeigen
löschen, und entweder
See your message here...
oder Sehen Sie Ihre Anzeige hier...
. Das schreit nach einer Gruppierung
mit Alternativen. Die beiden regulären Ausdrücke sind nach:
s@(Sponsored Links|Anzeigen)@@Ug s@(See your message here|Sehen Sie Ihre Anzeige hier)...@@U
zu ändern. Auch die deutsche Google-Seite wird nun gesäubert.
Der Filter hat jedoch eine weitere Schwäche: er ist zu allgemein, jedes Wort Anzeigen
wird gelöscht.
Viele wird es nicht stören, wer jedoch nach Anzeigen
sucht, hat ein Problem.
Wenn der Verdacht aufkommt, ein Filter würde zu viel löschen, kann man es leicht überprüfen, indem man ihn
etwas anpasst. Statt nur zu löschen, lässt man ihn ein seltenes Wort einfügen. Ändert man
s@(Sponsored Links|Anzeigen)@@Ug
nach s@(Sponsored Links|Anzeigen)@Von Privoxy gefressen@Ug
und führt die Suche nach Anzeigen
erneut durch, so
sieht man sofort, dass Privoxy zu viel ersetzt. Der Filter muss empfindlicher werden.
Zu erst kann man das g
entfernen, der Filter wird dadurch effizienter und einmal unterdrücken reicht.
Die gesteigerte Effizienz wird man nicht wahrnehmen, wohl aber, dass der Filter nur noch einmal tätig wird.
Momentan leider an der falschen Stelle, nämlich dort wo das Wort Anzeigen
zuerst vorkommt.
Damit der Filter nur noch an der gewünschten Stelle eingreift, muss die Zeichenfolge nach der gesucht wird
vergrößert werden. Schaut man sich die Stelle in Googles Quelltext an, sieht man, dass hinter Werbung
ein schließender Font-Tag, ein schließender TD-Tag und ein schließender TR-Tag stehen. Davor steht ein
öffnender Font-Tag. Als Spezialisierung sollte es ausreichen. Neuer Filter:
s@size=-1>(Sponsored Links|Anzeigen)</font></td></tr>@size=-1>Von Privoxy
gefressen</font></td></tr>@U
Ein Test zeigt, dass Von Privoxy gefressen
an der gewünschten Stelle auftaucht, die
Debug-Zeichenfolge kann nun wieder gelöscht werden.
Werden HTML-Elemente im Suchmuster benutzt, so ist es wichtig, sie auch im Ersatztext anzugeben. Es kann sonst zu unerwünschten Effekten kommen. Im oberen Filter fängt das Suchmuster mit dem Ende eines Font-Tags an, würde man es nicht im Ersatztext ebenfalls angeben, hätte der Browser ein Problem beim Rendern der Seite. Auch die drei schließenden Tags am Ende des Suchmusters würde er vermissen.
Wer keine Lust hat, sich mit der Funktion verschiedener Tags auseinander zu setzen, sollte sicherstellen, keine zu entfernen.
Der Filter arbeitet jetzt korrekt, wenn man nach Anzeigen
sucht, macht aber noch Probleme wenn nach
Sehen Sie Ihre Anzeige hier
gesucht wird. Passiert wahrscheinlich nicht so oft, als Übung dennoch ein
Lösungsvorschlag: s@class=fl>(See your message here|Sehen Sie Ihre Anzeige
hier)...</a></font>@class=fl>Von Privoxy gefressen</a></font>@U
.
Nach einem kurzen Test scheint auch das zu funktionieren, der Ersatztext kann bis auf die Tags gekürzt werden.
Nach der Veränderung sieht der Adwords-Filter nun so aus:
############################################### # Adwords-Filter # # Basiert auf der Arbeit von Jan Willamowius # # http://www.willamowius.de/privoxy.html # ############################################### FILTER: google_adwords Entfernt Googles Adword-Werbung. Hinterlässt blauen Balken zur Kontrolle s@size=-1>(Sponsored Links|Anzeigen)</font></td></tr>@size=-1></font></td></tr>@ s@class=fl>(See your message here|Sehen Sie Ihre Anzeige hier)...</a></font>@class=fl></a></font>@ s@<td( class=ch)? id=(taw|tpa|spa)\d.*</td>@<td></td>@Ug s@<a id=aw\d.*</font></td>@</font></td>@Ug
Erläuterung: Der Kommentar wurde angepasst, um den Urheber zu würdigen. Die Filterbeschreibung wurde geändert, der blaue Balken – der vom Filter nicht erfasst wird – gilt jetzt als Feature. Da er kaum auffällt lohnt es nicht, bei seiner Beseitigung Zeit zu verschwenden. Als Anzeiger, wenn für eine Suche Adwords gekauft wurden, hat er eine neue Bestimmung bekommen.
Die ersten beiden Filterzeilen enthalten keinen gierigen Asteriskus, die U
s wurden daher entfernt.
Da die erste Filterzeilen nur einmal zum Einsatz kommen soll, wurde auch der Globalisierer gestrichen.
Die dritte Filterzeile bleibt unverändert.
Die vierte Filterzeile enthält einen Asteriskus, das U
bleibt, das g
wurde jedoch entfernt.
Noch ein Hinweis zu den drei Punkten in der zweiten Filterzeile: Sie stehen nicht einfach nur für drei Punkte, sondern für drei beliebige Zeichen. Will man die Sonderfunktion ausschließen, muss man ihnen einen Backslash vorstellen. Der Filter ist auch so speziell genug, es wurde hier darauf verzichtet, da es auf Kosten der Lesbarkeit geht. Der Bedeutung von Sonderzeichen muss man sich bewusst sein, sie sind eine häufige Fehlerquelle.
Es wurde erst an der Oberfläche von Privoxy Filtermöglichkeiten gekratzt, für weniger anspruchsvolle Filter und um das Prinzip zu zeigen, sollte es jedoch ausreichen. Wer kompliziertere Filter bauen möchte, besorgt sich am besten ein Buch über perlkompatible reguläre Ausdrücke.
Privoxy-Filter-Test beschleunigt die Erstellung und den Test von Privoxy-Filtern deutlich, Installation und Einrichtung sind allerdings nicht trivial und die (unvollständige) Dokumentation nur in Englisch verfügbar. Die Welt ist ungerecht.
Das Ersetzen von Seiteninhalten ist nicht die einzige Möglichkeit das Erscheinungbild einer Website zu verändern: mit Hilfe von CSS kann man sich die Arbeit deutlich erleichtern. Statt jedes unerwünschte Seiten-Element einzeln zu bearbeiten werden dabei einfach ein paar neue CSS-Anweisungen am Kopf der Seite eingefügt. Den Rest macht der Browser.
Dazu ein Beispiel aus der Privoxys default.filter-Datei:
################################################################################# # # yahoo: CSS-based block for Yahoo text ads. Also removes a width limitation. # ################################################################################# FILTER: yahoo CSS-based block for Yahoo text ads. Also removes a width limitation. s@</head>@<style type="text/css">\n\ /* Style sheet inserted by Privoxy's yahoo filter. */\n\ \#symadbn, \#ymadbn, \#yschsec, \#yschanswr, .yschftad,\ .yschspn, .yschspns {display: none !important;}\n\ \#yschpri {width: 100% }\n</style>\n$0@
Der Filter kommt mit einer einzigen Regel aus, Privoxy soll der Zeichenkette </head>
ein paar CSS-Anweisungen voranstellen. Die wiederum
veranlassen den Browser dazu, Teile der Website verändert oder auch gar nicht anzuzeigen.
Was hier fehlt ist eine ausführlichere Beschreibung ...
Auch wenn Privoxy keine vollständige Anonymität schafft, hilft der Proxy doch beim Vermeiden unnötiger Spuren. Viele Spionage-Server, die ihre Rechenzeit mit der Erstellung von Nutzungsprofilen verschwenden, werden bereits mit der Standard-Konfiguration geblockt.
Achtung: Privoxy hält den Browser (oder andere Programme) nicht davon ab, direkte Verbindungen aufzubauen. Im Normalfall respektieren Browser die Proxy-Einstellungen, eine Reihe von Browser-Plugins sind jedoch schlampig programmiert und ignorieren die Proxy-Einstellungen für eigene Abfragen. In solchen Fällen sieht Privoxy die Abfragen nicht und kann sie auch nicht filtern oder an Tor weiterleiten.
Die IP-Nummer des Privoxy-Benutzers bekommt der Server einer abgerufenen Webseite weiterhin zu sehen, ohne Hilfe eines Gerichts sind einer IP-Nummer im Normallfall jedoch nur Informationen über den Provider, nicht aber über den Surfer zu entlocken.
Wer seine Anonymität weiter steigern möchte, kann zur Einwahl ins Internet ein unregistriertes Prepaid-Mobil-Telefon beziehungsweise ein offenes W-LAN nutzen. Deutlich bequemer ist es, zusätzlich zu Privoxy das anonymisierende Proxy-Netzwerk Tor zu verwenden.
Nach der Tor-Installation muss dazu in Privoxys Konfigurationsdatei die Zeile:
forward-socks4 / 127.0.0.1:9050 .
ergänzt (Privoxy 3.0.3) oder auskommentiert (ab Privoxy 3.0.5) werden. Damit erreicht man Anonymität gegenüber dem Serverbetreiber, doch Privoxys DNS-Abfragen (die Wandlung von Domain-Namen in die zugehörigen IP-Nummer) sind weiterhin unverschlüsselt und für einen lokalen Lauscher mithörbar. Er erhält damit die Information mit welchen Servern Kontakt aufgenommen wird, weiß aber nicht, welche Seiten und welche Inhalte übermittelt werden.
Privoxy kann die DNS-Abfragen auch dem Tor-Netzwerk überlassen, in die Konfigurationsdatei schreibt man dazu:
forward-socks4a / 127.0.0.1:9050 .
In aktuellen Privoxy-Versionen sollte jedoch forward-socks5t
verwendet werden, was aussagekräftigere Fehlermeldungen erlaubt und die Tor-Erweiterung
OptimisticData
unterstützt:
forward-socks5t / 127.0.0.1:9050 .
Die Tor-Nutzung hat nicht nur Vorteile, sie bringt einen spürbaren Geschwindigkeitsverlust mit sich und beim Verbindungsaufbau über Tor kommt es gelegentlich zu Fehlern, in den meisten Fällen reicht es aber aus, die Anfrage im Browser einfach noch mal zu wiederholen.
Keinem Anonymisierungs-Programm sollte blind vertraut werden, ohne das Prinzip dahinter zu verstehen. Vor der ersten Tor-Nutzung empfiehlt sich daher der Besuch der offiziellen Website des Tor-Projekts. Kai Ravens Sicher und anonym im Internet mit Proxys ist eine gute Ergänzung zu dieser Anleitung, besonders der Tor-Abschnitt ist deutlich ausführlicher.
Cookies sind kurze Zeichenketten, die ein Server an den Browser schicken und wieder abrufen kann. Besucht ein Surfer eine Website erneut, kann er mit dem Cookie erkannt werden. Hat er beim letzten Besuch Adresse, Name oder Telefonnummer hinterlassen, können ihm auch diese Daten erneut zugeordnet werden.
Für Onlineshops ist das gelegentlich praktisch, der Benutzer kann sich das Einloggen sparen. Die Kosten sind jedoch die Aufgabe der (begrenzten) Anonymität, der Seitenbetreiber kann ein Nutzungsprofil über mehrere Sessions hinweg anlegen, selbst wenn der Surfer nur stöbert.
Die berechtigte Cookie-Nutzung mit Vorteil für den Surfer ist im Verhältnis zur unberechtigten Nutzung verschwindend gering. Meist dient sie nur Spionage Zwecken, wer einen gewissen Wert auf Privatsphäre legt, sollte Cookies daher standardmäßig vernichten und nur in Ausnahmefällen zulassen.
Viele Onlineshop-Ersteller sind leider zu dumm, Session-IDs zu
benutzen. Ohne Cookies gibt es dort für den Surfer keine Ware und für den Betreiber kein Geld. Wer
unbedingt mit dummen Menschen Geschäfte machen möchte, muss Cookies für diese speziellen Server erlauben.
Verzicht auf optionalen Session-IDs ist keine vorübergehenden
Störung der Geistestätigkeit
, sondern eine andauernde. Mit BGB § 105 Nichtigkeit der Willenserklärung sind daher keine
Probleme zu erwarten.
Kurze Unterbrechung der Ideologie und zurück zur Technik.
Cookies lassen sich von Privoxy komplett vernichten, oder in Session-Cookies ändern. Session-Cookies verfallen, wenn der Browser geschlossen wird. Wer Session-Cookies als Standard-Wert wählt, kann auch bei den oben genannten defekten Shops bestellen, ohne jedesmal die Einstellungen zu ändern.
Sitzt der Surfer nicht hinter einem Proxy, sind ihm seine Seitenaufrufe eh über die IP-Nummer temporär zuordbar, durch Aktivierung von Session-Cookies wird dann keine weiter Beschneidung der Privatsphäre vorgenommen. Viele Leute sitzen allerdings hinter einem Proxy ohne es zu wissen, denn Firmen wie AOL verwenden transparente Proxys, Proxys die unabhängig von den Browsereinstellungen wirksam sind.
Anständige Browser ermöglichen die Cookie-Kontrolle von sich aus, Privoxy ermöglicht es jedoch, Einstellungen für mehrere Browser gleichzeitig vorzunehmen. Wird nur ein Browser benutzt, ist es egal, wo die Einstellungen vorgenommen werden. Ab zwei Browsern ist Privoxy jedoch die komfortablere Lösung.
Privoxy verfügt über folgende Aktionen die für Cookies relevant sind:
Mit crunch-incoming-cookies
vernichtet man eingehende Cookies, bevor sie beim Browser ankommen. Mit
crunch-outgoing-cookies
vernichtet man vom Browser gesendete Cookies.
session-cookies-only
löscht das Haltbarkeitsdatum des Cookies, der weiter oben genannte
Session-Cookie entsteht. Wenn man in einer Sektion session-cookies-only
aktiviert, sind gleichzeitig
crunch-incoming-cookies
und crunch-outgoing-cookies
zu deaktivieren.
Um Missverständnissen
vorzubeugen: die verschiedene Cookie-Einstellungen in verschiedenen Sektionen sind erlaubt. Wenn jedoch eine
der beiden Optionen bereits in einer allgemein gehaltenen anderen Sektion aktiviert wurde, gilt sie auch für
jede folgende Sektion, da ihre Einstellung dort auf No Change
steht. session-cookies-only
wäre
dann wirkungslos, explizites Deaktivieren der beiden Session-Cruncher sorgt vor.
content-cookies
ist in der Filter-Region zu finden, da er im Seitentext (dem Content) arbeitet, anstatt
auf HTTP-Ebene. Er entfernt Metatext- und
JavaScript-Cookies (wenn sie erkannt werden).
Mit JavaScript ist es möglich, Privoxys JavaScript-Cookie-Filter zu umgehen. Über JavaScript können zudem einige Systemvariablen gelesen werden, aus denen eine den Surfer identifizierende Prüfsumme generiert werden kann.
Zum Schutz der Privatsphäre (und der Sicherheit allgemein) ist es sinnvoll, JavaScript nur für vertrauenswerte Websites zu aktivieren und nur, wenn die Verbindung zwischen Website und Anwender verschlüsselt erfolgt.
Es gibt tausende verschiedene Methoden, HTML mit
JavaScript zu erweitern. Die passenden regulären Ausdrücke sind daher komplex und fehleranfällig.
Privoxys JavaScript-Filter sind in Version 3.0.3 etwas zu aggressiv und ersetzen auch schon mal anderen Text,
der wie mögliches JavaScript aussieht. open()
wird zum Beispiel generell nach
PrivoxyWindowOpen()
umgeschrieben. Wer regelmäßig C-, Java- oder Perl-Code im Browser betrachtet,
wird sich dadurch gestört fühlen.
Die Situation hat sich in späteren Privoxy-Versionen nur geringfügig verbessert, Privoxys JavaScript-Filter basieren nach wie vor auf regulären Ausdrücken und wenn ein Seitenbetreiber es darauf anlegt, kann er sie problemlos umgehen, indem er den eigentlichen Code erst im Browser zusammensetzen lässt.
Mittlerweile verfügt nahezu jeder Browser über eigene JavaScript-Optionen, Privoxys JavaScript-Filter kann man daher getrost ignorieren, in keinem Fall sollte man sich auf sie verlassen.
Die meisten Browser schicken – wenn man einem Link folgt – die Adresse der verlinkenden Seite mit.
Referrer
und Referer
sind beides gebräuchliche Bezeichnungen für diese Adresse, die erste
Schreibweise ist korrektes Englisch, die zweite stimmt mit der Schreibweise des
HTTP-Headers überein.
Defekte Browser schicken den Referer-Header grundsätzlich mit, selbst wenn der Benutzer einem Bookmark folgte, die neue Adresse direkt eingegeben hat, oder einen Link in einer E-Mail benutzte.
Der Referrer ist für den Server unwichtig, er kann jedoch Informationen über den Surfer enthalten. Beispielsweise seine E-Mail-Adresse – manche Webmail-Interfaces bauen sie im URL ein – oder eine noch gültige Session-ID, mit der die alte Session des Surfer fortgeführt werden kann (eher unwahrscheinlich, da die Session nur eine bestimmte Zeit lang gilt).
Wird der Referrer von einer Website ausgewertet, kann man generell davon ausgehen, dass es nicht zum Vorteil des Surfer geschieht. Im besten Fall hat der Surfer keinen Nachteil.
Privoxy ermöglicht es, den Referrer zu grundsätzlich zu unterdrücken – manche Seiten die ihn auswerten funktionieren dann aber nicht mehr. Die Download-Seite von Doom9.org ist so ein Fall, der Referrer wird dort benutzt, um Leute auszuschließen, die direkten Links von fremden Seiten folgen, die auf von Doom9.org gehostete Programme zeigen.
Als Surfer kann man den Versuch nachvollziehen: fremde Bandbreite als eigene auszugeben ist schlechter Stil. Der Referrer-Check schließt jedoch auch die berechtigten Surfer von der Nutzung aus, die keinen Referrer mitsenden.
Als Lösung bietet Privoxy gefälschte Referrer. Dabei wird das Wurzelverzeichnis des Servers als Ursprungsadresse
angegeben. Die entsprechende Privoxy-Aktion heißt hide-referrer
, als Option wird im Webinterface
Fake as the root directory of the site
aktiviert.
Referrer-Fälschung erschwert Server-Betreibern das Nachspionieren, kann vom Server-Betreiber aber bemerkt werden. Wenn alle Anfragen von der Homepage zu kommen scheinen ist das verdächtig: auf den meisten Websites sind nicht alle Dokumente von der Homepage aus verlinkt.
Um auch dieses Problem zu vermeiden, kann man Privoxy um die
hide-referrer
-Option
conditional-block
erweitern. Seit Privoxy 3.0.5 beta ist der Patch bereits integriert.
Anschließend wird der Referer-Header innerhalb des gleichen Hosts ungefiltert durchgelassen und nur dann entfernt, wenn die alte und neue Seite von einem unterschiedlichen Host geliefert werden. Für den Server-Betreiber sieht es so aus, als ob der Surfer eine gewöhnliche Browser-Konfiguration hätte und durch Direkteingabe der Adresse auf die Website gelangt wäre.
In den Standard-Einstellungen senden Browser einige Informationen über die Umgebung in der sie laufen
an den Webserver.
Beispiel: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7) Gecko/20040707 Firefox/0.9.1
.
Diese Browser-Kennung heißt User-Agent, für den Server ist die Information unwichtig, anständige
Websites funktionieren in jedem Browser.
Die Übermittlung des User-Agents ist nicht zwangsweise ein Eingriff in die Privatsphäre des Surfers, kann unter Umständen aber genutzt werden, um den Surfer wieder zu erkennen. Wer seinen Browser fertigkompiliert runterlädt und unter Windows nutzt, geht im Rauschen unter. Wer jedoch selbst kompiliert und ein weniger weit verbreitetes Betriebssystem nutzt, fällt auf.
Viele Browser übermitteln nicht nur Version und Betriebssystem an den Server, sondern auch das Datum des Kompilierens. Manch User-Agent wird damit zum Unikat: das Verhalten des Surfers kann auch ohne Cookies nachverfolgt werden.
Da der überwiegende Teil der Surfer Cookies akzeptiert, wird sich kaum ein Server-Betreiber die Mühe machen. Doch besser ist es, sicher zu gehen. Privoxy kann dazu den User-Agent nach Belieben des Benutzers verändern.
Wer nicht an der Browserkennung erkannt werden, sich aber auch nicht als Windows-Nutzer ausgeben möchte, sollte den User-Agent regelmäßig ändern. Sinnvollerweise mit jedem IP-Wechsel.
Manuelles Ändern der Konfiguration ist nicht nur lästig, sie wird auch gelegentlich an der Bequemlichkeit des Privoxy-Benutzers scheitern. Ich benutze daher das Perl-Skript uagen.pl, das den von Privoxy gesendeten User-Agent regelmäßig ändert und dabei Betriebssystem, Plattform, Datum sowie Lokalisierung variiert.
Um auch verschlüsselte Anfragen und Antworten filtern zu können benötigt man eine aktuelle
Privoxy-Version (3.0.29 oder später), die mit FEATURE_HTTPS_INSPECTION
kompiliert
wurde und entsprechend konfiguriert ist. Ob FEATURE_HTTPS_INSPECTION
verfügbar ist
kann man über Aufruf der Privoxy-Status-Seite prüfen.
Ohne die HTTPS-Inspektion kann Privoxy verschlüsselte Anfragen nur durchreichen (oder blocken), Filter können auf sie nicht angewendet werden, da der Inhalt Privoxy nicht im Klartext passiert.
Früher oder später können beim Privoxy-Einsatz folgende Probleme auffallen:
Wird einer der Privoxy-Filter benutzt, so kommt es zu einer Verzögerung in der Darstellung. Die Bearbeitung der Filter selbst dauert nur Sekundenbruchteile, der Grund für die Verzögerung liegt in der Arbeitsweise. Bevor der Mustervergleich auf einer Seite vorgenommen werden kann, muss sie komplett geladen werden.
Die Darstellung ist sprunghaft: der Benutzer sieht erst mal nichts, dann plötzlich die ganze Seite (ohne eventuelle Bilder).
Ohne Privoxy fängt der Browser dagegen schon mit dem Rendern der Seite an, sobald er die ersten Pakete empfangen hat. In dem Moment, wo der Browser in der Seite Verweise auf Bilder findet, baut er parallele Verbindungen auf, um auch sie möglichst schnell darstellen zu können. Der Benutzer empfindet den Vorgang als flüssig und schnell.
Bei einer ausreichend schnellen Verbindung, einem zügig reagierenden Server und einer durchschnittlichen Seitengröße wird sich der Benutzer nicht gestört fühlen. Quälen sich jedoch mehrere hundert Kilobyte große Seiten über ein Modem, wird die Geduld überstrapaziert.
Für regelmäßig betrachtete Seitenmonster lohnt sich daher eine eigene Sektion, in der alle Filter deaktiviert werden. Zum Erkennen von Werbung kann Privoxy dann zwar nicht mehr die im Quelltext angegebene Grafikgröße benutzen, durch den Bilderpfad verraten sich dennoch einige Banner und mit einer entsprechenden Anpassung sollte sich auch der letzte Werbetupfer wieder ausradieren lassen.
Die Fehlermeldung:
Privoxy Configuration access denied
The feature you are trying to access has either been disabled by the Privoxy administrator, or you came here by following an unsafe external link.
ist meist ein Zeichen dafür, dass der Benutzer den Browser angewiesen hat, generell keinen
Referer mehr zu setzen. Wie bereits im Referer
-Abschnitt
erläutert, ist das keine gute Idee, da es unnötig für Aufmerksamkeit sorgt und keine Vorteile
gegenüber einem bedingten Block hat.
Privoxy lässt Änderungen nur über sichere Links zu, fremde Websites könnten sonst über versteckt eingebundene Bilder die Privoxy-Konfiguration verändern. Falls Privoxys Webinterface nicht im Referer auftaucht – also auch wenn der Referer gar nicht gesetzt wurde – enden Zugriffe auf die Konfigurations-Dateien mit obiger Fehlermeldung.
Um das Problem zu lösen kann man die Referer
-Filterung Privoxy überlassen und den
Referer
-Header im Browser wieder aktivieren.
Diese Anleitung ist nicht nur oberflächlich sondern auch teilweise veraltet. Viele Privoxy-Funktionen wurden komplett übergangen.
Das englische Privoxy-Handbuch und die Privoxy-FAQ sollte man als Privoxy-Benutzer kennen, an dieser Stelle daher als Appetit-Häppchen weitere Privoxy-Funktionen:
Privoxy kann übrigens auch benutzt werden um defekte Webshops zu reparieren (veraltet), Lemminge zu kennzeichnen, getarnte Links sichtbar zu machen und um auf mögliche Sicherheits-Probleme mit Gmail hinzuweisen.