«

»

Aug
08

Werbung sowie Analysetools aus Webseiten automatisch filtern

CrapProxy-2010-08-08

Das Filtern von Webseiten liegt mir schon seit geraumer Zeit für unser Netzwerk am Herzen.
Zuerst fing ich an am DNS rumzuspielen was dann irgendwann ausuferte und nicht mehr administrierbar wurde.
Dann spielte ich mit Squid und bin dabei geblieben.
Browserseitig (zBspl. mittels AdBlock) wollte ich nichts machen da das auf jedem Client stattfinden muss und nicht jeder hier Firefox nutzt.

Das Problem allerdings sind ganz generell diese statischen Filterlisten.

Irgendwer muss diese administrieren und ständig auf einem aktuellem Stand halten.
Sobald es wieder einen neuen Analysedienst gibt muss man dessen Domains ermitteln was teilweise durch den Javascript Müll nicht gerade vereinfacht wird.
Die Listen die es im Netz gibt, hatte mal mit Dansguardian rumgespielt, sind entweder nicht aktuell oder filtern nicht das was ich gefiltert haben will.

Nun gut. Ich habe jetzt einen anderen Ansatz:

Ausgehend davon das der Referer mitteilt “woher man kommt” und “wohin man geht” kann man eigentlich Prima einen Filter aufbauen.

Einfach ausgedrückt läuft es darauf hinaus das man von Analytics/Werbung ausgehen kann wenn die Domain der Ziel URL nicht der Domain des Referrers entspricht.
Beispiel:
Ich Rufe www.domain.tld auf, innerhalb dieser Seite wird auf www.schlimm.tld verlinkt.
Der Browser schickt dann den Referrer “www.domain.tld” mit dem Ziel “www.schlimm.tld”.

Es gibt nun, wie immer, ein paar Fallstricke:

Zum einen ist es ja ansich legitim das man auf externe Domainsverlinkt, zBspl. eine Normale Suche in einer Suchmaschine tut dies.

Desweiteren haben Seiten meistens Subdomains die die Last auf mehrere Server verteilen sollen (images.domain.tld, files.domain.tld, …).

Ein anderes Problem was statische Filter haben ist das man die geblockten Seiten nicht mehr direkt aufrufen kann.
Was ungeschickt ist wenn man zBspl. selbst einen Analyse Dienst nutzt aber als Benutzer davor geschützt werden will.

Ich habe mal in Perl einen kleinen Proof-Of-Concept geschraubt.

Er lauscht an Port 3128 auf allen IP-Adressen.
Es gibt keinerlei Sicherheitsprüfungen / Zugriffskontrollen.
Er filtert alles bei dem ein Referrer vorhanden ist und die Hauptdomain nicht dem Referer entspricht (images.domain.tld -> www.domain.tld funktioniert somit).
Er braucht Perl sowie folgende Module: libwww-perl, liburi-perl, libhttp-proxy-perl.
Perl ist erstmal nur ein Zwischenschritt da sich damit einfach Ideen testen lassen. Wirklich performant ist das nicht.
Ich habe hier eine Virtuelle-Box mit Debian am Start, wenn wer es wünscht kann ich die hier auch Hochladen.

Download:

Hinterlasse eine Antwort

Ihre E-Mail-Adresse wird nicht veröffentlicht.

Sie können diese HTML-Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

What is 2 + 2 ?
Please leave these two fields as-is:
IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)