Seit langem sind mir Besucher-Tracker ein Dorn im Auge. Daher sind Domains wie
www.etracker.de und
google-analytics.com seit einiger Zeit bei mir im lokalen DNS-Server gesperrt, so dass diese aus meinem lokalen Netz nicht mehr aufgerufen werden können.
Leider wird grade etracker oftmals so penetrant eingesetzt, dann man einfache Unterseiten oder Downloads nicht mehr aufrufen kann, wenn deren Seite nicht mehr erreichbar ist.
Daher habe ich mir jetzt einen lokalen "Proxy" für dieses Problem erstellt. Das Setup ist simpel:
- Ein lokaler DNS-Resolver wird so konfiguriert, dass er für den betreffenden Host die Adresse eines eigenen Webservers zurückliefert.
- Der Webserver erhält einen neuen VHost, der für die Hostnames der betreffenden Websites verantwortlich ist.
- Ein CGI-Script liest die URL aus dem Aufruf-Parameter und sendet eine Weiterleitung an die betreffende Adresse ohne dass irgendwelche Statistiken zentral gespeichert werden.
Nachfolgend meine dafür verwendeten Konfigurationen und Scripte.
Zuerst der DNS-Server. In meinem Fall BIND. Dazu habe ich eine "tracker"-Zone angelegt, die folgendes enthält:
$TTL 3600
@ IN SOA localhost. root.localhost. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 192.168.0.1
* IN A 192.168.0.1
Dabei ist 192.168.0.1 mein lokaler Webserver mit dem nachfolgend beschriebenen CGI.
In der Haupt-Konfiguration wird dann folgendes hinterlegt (am Beispiel etracker.de):
zone "etracker.de" {
type master;
file "/etc/bind/db.tracker";
};
Der Dateiname bezeichnet die oben genannte Zonen-Datei.
Damit ist der DNS-Server bereit und sollte Anfragen nach www.etracker.de auf 192.168.0.1 umleiten.
Im Webserver wird ein zusätzlicher VHost benötigt. In meinem Fall, am Beispiel etracker:
<VirtualHost *>
ServerName www.etracker.de
DocumentRoot /var/www/tracker
<Directory /var/www/tracker>
AllowOverride All
</Directory>
</VirtualHost>
Zusätzliche Adressen (auch von von anderen Datensammlern) können mit ServerAlias hinzugeügt werden.
Unter /var/www/tracker liegt dann folgende
.htaccess-Datei:
DirectoryIndex index.py
Options +ExecCGI
AddHandler cgi-script py
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/index.py
RewriteRule ^.*$ /index.py
und folgende
index.py
#!/usr/bin/python
import os
vars = os.environ['QUERY_STRING']
import re
pat = re.compile(r'^.*url=(?P[^&]*)&.*$')
try:
m = pat.match(vars)
assert m != None
print 'Status: 301 Bypass tracking-URL'
print 'Location:', m.group('url'), '\n'
except:
print 'Status: 404 Cannot find destination'
print 'Content-Type: text/plain\n'