Piwik wird zunehmend populär, dank der Unterstützung durch OpenX und gerade in Deutschland durch die Ansicht, dass IP-Adressen personenbezogene Daten sind und deren Speicherung die explizite Erlaubnis des Seitenbesuchers bedürfen. Doch der Wechsel zu Piwik allein reicht nicht - auch Piwik speichert die IP-Adressen. Aber da die Software auf dem eigenen Server läuft, kann man sie nach eigenen Wünschen und Vorstellungen verändern. Die IP-Adressen lassen sich auf viele Wege entfernen - vom einfachen Hack bis zum Plugin. ">

Nehmen Sie Kontakt mit mir auf:
 










Fragen?

Martin Gamnitzer

 

Piwik ohne IP-Speicherung – mit Plugin

Update 2010-02-25: Diese Version ist veraltet. Der neuen Version 0.2 habe ich einen eigenen Artikel gewidmet.

Update 2010-02-22: Das Plugin findet man jetzt auch im Piwik-Trac.

Die Trackingsoftware Piwik wird zunehmend populär, dank der Unterstützung durch OpenX und gerade in Deutschland durch die Ansicht, dass IP-Adressen personenbezogene Daten sind und deren Speicherung die explizite Erlaubnis des Seitenbesuchers bedürfen.
Doch der Wechsel zu Piwik allein reicht nicht – auch Piwik speichert die IP-Adressen. Aber da die Software auf dem eigenen Server läuft, kann man sie nach eigenen Wünschen und Vorstellungen verändern.
Die IP-Adressen lassen sich auf viele Wege entfernen – vom einfachen Hack bis zum Plugin (das am Artikelende verfügbar ist).

1. Stufe: Quick & Dirty

Der sicherlich populärste Hack lässt sich in nur einer Zeile realisieren: In der Datei /core/Tracker/Visit.php wird der Wert “location_ip” im Array “visitorInfo” einfach mit einer Null statt der IP belegt.

Soweit so einfach. Wenn wir Piwik aber nun erweitern wollen – sagen wir durch das Plugin “GeoIP” – bekommen wir ein Problem: Das Plugin benötigt die IP-Adresse, um daraus auf die Stadt des Besuchers zu schließen. Dummerweise steht an der entsprechenden Stelle eine Null.

2. Stufe: Sicher ist sicher

Der alte Hack muss raus, die IP-Adresse muss an anderer Stelle gelöscht werden. Ein optimaler Ort scheint die Funktion “saveVisitorInformation” zu sein, auch diese liegt in /core/Tracker/Visit.php.
In dieser Funktion wird das Array “visitorInfo” in der Datenbank gespeichert. Also ändern wir den Wert direkt vor der Speicherung. Und für den Fall, dass ein anderes Plugin danach nochmal auf die IP-Adresse zugreifen muss, schreiben wir sie zurück ins Array.
Konkret heißt das: Wir suchen in der Funktion “saveVisitorInformation” die Zeile

Piwik_Tracker::getDatabase()->query( "INSERT INTO [...] ");

Direkt DAVOR beginnt unser Hack mit diesen zwei Zeilen:

$ipHelper = $this->visitorInfo['location_ip'];
$this->visitorInfo['location_ip'] = 0;

Und direkt nach dem Query erfolgt der Abschluss:

$this->visitorInfo['location_ip'] = $ipHelper;

Fertig!

3. Stufe: Vom Hack zum Plugin

Solche Hacks haben natürlich immer ihre Nachteile und sollten möglichst vermieden werden. Denn mit dem nächsten Update sind die Änderungen dahin und wenn man sie nicht dokumentiert hat, fängt man wieder von vorne an. Auch gibt es viele Nutzer, die zwar eine einfache LAMP-Anwedung auf ihrem Server oder Webspace zum Laufen bringen können, aber nie etwas im Quellcode ändern würden – “man könnte ja was kaputt machen”.

Der nächste logische Schritt ist also die Überführung des Hacks in ein Plugin. Wie so ein Piwik-Plugin aufgebaut ist, zeigt das ExamplePlugin, auch das GeoIP-Plugin kann als Anregung genutzt werden. Kern unseres Mini-Plugins ist eigentlich nur ein Hook für das Event “Tracker.newVisitorInformation” und eine gekoppelte Funktion, die mal wieder im Array visitInfo die IP mit eine Null überschreibt. Doch genau diese Aktion hat uns zu Beginn Kopfzerbrechen bereitet! Deshalb ist es wichtig, dass unser Plugin erst nach dem GeoIP Plugin ausgeführt wird. Dazu reicht es, diese Reihenfolge auch beim Aktivieren der Plugins zu beachten. Zur Sicherheit hilft auch noch ein Blick in die config/config.ini.php im Bereich “[Plugin_Tracker]“. Hier sollte GeoIP an zweiter Stelle, nach “Provider” aufgelistet sein.

Noch ein kleiner Tipp, weil wir gerade in der Konfiguration herumspielen: Wer es nicht mag, dass Piwik standardmäßig den gestrigen Tag anzeigt, fügt am Ende noch zwei Zeilen ein:

[General]
default_day = "today"

Zurück zum Plugin. Hier kann es nun heruntergeladen werden:

Download NoIpPlugin.zip

Die Installation läuft wie bei allen Piwik-Plugins: Die Zip-Datei in den Ordner “plugins/” schieben und entpacken (oder lokal entpacken und per FTP in den Ordner schieben), im Backend aktivieren und ggf. kontrollieren, dass die Reihenfolge wie oben beschrieben eingehalten wird.
Wenn alles funktioniert, zeichnet GeoIP die Städte weiterhin auf, statt der IP steht nur noch eine “0″ in der Datenbank. Wenn man alte Datensätze auch noch bereinigen will, sollte man im MySQL-Client seiner Wahl noch “UPDATE piwik_visitor_log” SET location_ip = 0″ ausführen.

Ich hoffe, alle Nutzer kommen damit klar. Ich freue mich über Feedback.

Kommentare sind geschlossen.