Anonymisieren von IP-Adressen mit Google Analytics
Obwohl Google Analytics die IP-Adresse eines Besuchers ausschließlich zu Geo-Lokations-Zwecken nutzt und anschließend verwirft, wurde der Ruf laut, Google solle IP-Adressen gänzlich “unbrauchbar” machen.
Parallel zur Veröffentlichung des Deaktivierungs-Add-On für Browser (siehe auch Blog-Post vom 04. Juni 2010) wurde ebenfalls eine neue Funktion für den Google Analytics Tracking Code (GATC) verfügbar. Diese jüngste und meines Erachtens nach effektivste Entwicklung zur Wahrung der Privatsphäre eines Website-Besuchers erweitert den GATC um die Funktion _anonymizeIp().
Wie binde ich _anonymizeIp() in den Tracking Code ein?
Für den Einsatz von Google Analytics existieren derzeit drei (3) verschiedene Tracking Code, die alle mehr oder minder den gleichen Funktionsumfang aufweisen:
- Tracking Code urchin.js (urchinTracker)
- Tracking Code mit ga.js (pageTracker)
- asynchroner Tracking Code (_gaq.push)
Die Funktion _anonymizeIp() kann aber nur bei zwei der drei verwendet werden.
Tracking Code mit urchin.js
Bei der Verwendung des “alten” Tracking Code auf Basis von urchin.js kann die Funktion _anonymizeIp() leider nicht verwendet werden.
Tracking Code mit ga.js
Im Tracking Code, der noch ga.js verwendet (auch synchroner Tracking Code), kann die Zeile “_gat._anonymizeIp();” direkt vor dem Aufruf der Zeile “pageTracker._trackPageview();” eingesetzt werden. So wird aus dem originalen GATC
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-xxxxxx-y");
pageTracker._trackPageview();
} catch(err) {}
</script> ein Tracking Code, der IP-Adressen anonymisiert:
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-xxxxxx-y");
_gat._anonymizeIp();
pageTracker._trackPageview();
} catch(err) {}
</script> Hinweis: Sollten Sie die Code-Beispiele hier kopieren und auf Ihren Seiten anwenden wollen, vergessen Sie bitte nicht, Ihre eigene Google Analytics Kontonummer anstelle von UA-xxxxxx-y zu verwenden!
asynchroner Tracking Code
Setzen Sie den asynchronen Tracking Code auf Ihrer Website ein, ist die Anpassung dessen ebenfalls ein Leichtes. Hierbei muss die Funktion _anonymizeIp() einfach nur “gekapselt” werden, sodass aus dem originalen GATC
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxxx-y']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script> ein Tracking Code entsteht, der IP-Adressen anonymisiert:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxxx-y']);
_gaq.push(['_gat._anonymizeIp']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script> Hinweis: Sollten Sie die Code-Beispiele hier kopieren und auf Ihren Seiten anwenden wollen, vergessen Sie bitte nicht, Ihre eigene Google Analytics Kontonummer anstelle von UA-xxxxxx-y zu verwenden!
Prüfen der Funktionalität
Um nun die Funktionalität zu prüfen, benötigen Sie ein Tool wie beispielsweise Firebug für den Mozilla Firefox. Nachdem Sie Firebug installiert und aktiviert haben, öffnen Sie im Firefox die maßgebliche Seite. Im Bereich Net -> All suchen Sie dann nach einem Eintrag “Get __utm.gif?utmwv=…” und klicken dann auf das Pluszeichen davor. Wählen Sie dann die Registerkarte Params. Darunter sollten Sie dann bei korrekter Implementierung der Funktion den Eintrag “aip 1″ vorfinden:

Funktion und Auswirkung
Natürlich wirft eine solche Funktionserweiterung Fragen nach der Funktionsweise und der Genauigkeit der Daten bei deren Einsatz auf. Beides soll nachfolgend kurz erläutert werden.
Wie funktioniert _anonymizeIp() ?
Sobald _anonymizeIp() in den GATC eingebunden ist, wird bei allen IP-Adressen das letzte Oktett (die Ziffernfolge nach dem letzten Punkt) entfernt und gegen eine “0″ ersetzt. So werden beispielsweise aus den IP-Adressen 82.100.197.197 und 80.10.192.168 die “neuen” IP-Adressen 82.100.197.0 und 80.10.192.0 – ganz einfach, nicht wahr?
Welche Auswirkung hat der Einsatz von _anonymizeIp() auf die Akkuratesse meiner Analysedaten?
Die Analysedaten sind natürlich nach wie vor korrekt, da die IP-Adresse nicht zur Berechnungen der Cookie-Informationen genutzt wird. Die einzige Einschränkung, die Sie erfahren könnten, ist eine geringfügige Abweichung bei den geo-lokalisierten Daten auf Stadtebene. Da durch die Entfernung des letzten Oktetts der IP-Adresse eine eindeutige Zuordnung zu Städten nicht mehr möglich ist, kommt es zu Überschneidungen in den Besucherzahlen.
Warum ist das so?
Angenommen ein Carrier hat zwei IP-Subnetze definiert: Subnetz A: 192.168.1.0 / 25 und Subnetz B: 192.168.1.128 / 25. Wie Sie wissen, erstreckt sich in diesem Beispiel der Bereich in Subnetz A von 192.168.1.0 bis 192.168.1.127 (wobei die erste IP-Adresse das Netz kennzeichnet und die letzte IP-Adresse als Broadcast-Adresse fungiert). In Subnetz B ist das ähnlich; das Netz reicht von 192.168.1.128 bis 192.168.1.255 (auch hier ist die erste IP-Adresse die Netzkennzeichnung und die letzte dient dem Broadcast). Vergibt nun dieser Carrier die IP-Adressen aus Subnetz A ausschließlich in Aachen und die aus Subnetz B ausschließlich in Berlin kann die Zuordnung der IP-Adressen zu den Städten einfach und eindeutig von Statten gehen:
192.168.1.19 = Aachen 192.168.1.200 = Berlin 192.168.1.158 = Berlin 192.168.1.121 = Aachen 192.168.1.97 = Aachen
Die Verteilung wäre nun wie folgt: 40% der Besucher kamen aus Berlin und 60% kamen aus Aachen.
Wenn nun aufgrund der Verwendung der Funktion _anonymizeIp() das letzte Oktett (also die Ziffernkombination nach dem letzten Punkt) der IP-Adresse entfernt wird, wird dieses mit einer Null (0) ersetzt, sodass sich die vorher genannten IP-Adressen plötzlich alle im Subnetz A befinden:
192.168.1.19 --> 192.168.1.0 = Aachen 192.168.1.200 --> 192.168.1.0 = Aachen 192.168.1.158 --> 192.168.1.0 = Aachen 192.168.1.121 --> 192.168.1.0 = Aachen 192.168.1.97 --> 192.168.1.0 = Aachen
Die Verteilung ändert sich nun wie folgt: 0% der Besucher kamen aus Berlin und 100% kamen aus Aachen.
Bevor jetzt aber ein Aufschrei durch die Menge geht, sei Ihnen gesagt, dass die Geo-Lokations-Daten auch schon vorher – also vor der Einführung der Funktion _anonymizeIp() – nur “Näherungswerte” waren bzw. sind. Der Umstand liegt darin begründet, dass für die Auswertung der Standorte in Google Analytics primär die Einwahlknoten der Nutzer geo-lokalisiert werden. Aber das wussten Sie bestimmt schon…
Fazit
Die Funktionserweiterung des Tracking Code um _anonymizeIp() ist ein probates Mittel, IP-Adressen mit minimalem Aufwand zu anonymisieren. Hoffentlich ist das auch für die Herren Datenschützer ausreichend. Die Zukunft wird es zeigen…
[...] Webalytics: Anonymisieren von IP-Adresse mit Google Analytics [...]
[...] Anleitung, wie man die IP-Adressen anonymisiert, findet man dort: Anonymisieren von IP-Adressen mit Google Analytics . Das habe ich auch eben gemacht, schadet ja nix, ist eh wumpe ob mit oder ohne IP-Adresse. Wozu [...]
Neben der Änderung des Tracking-Codes sind noch Anpassungen der Datenschutzerklärung zu tätigen. Den Betroffenen muss die Möglichkeit eines Widerspruchs gegen die Erstellung von Nutzungsprofilen eingeräumt werden. Eine genaue Anleitung findet man hier:
http://www.datenschutzbeauftragter-info.de/google-analytics-datenschutzkonform-einsetzen/
Das Fazit ist interessant.
@ Dr. Datenschutz
Es ist richtig, dass die Datenschutzerklärung entsprechend angepasst werden muss, aber das war ja auch nicht Gegenstand des Posts.
[...] Google bietet mittlerweile extra für deutsche Nutzer ihres Dienstes die Möglichkeit die protokollierten IP-Adressen zu anonymisieren. Diese sollte man auch unbedingt nutzen, denn auch wenn der Herr Caspar sich vielleicht nicht für Ihre private Website interessiert, so gibt es garantiert irgendeinen anderen Kasper da draußen, der die Chance zur Abmahnung wittert und sich sein Säckel füllen möchte. Wie man den Google Analytics Code entsprechend anpasst findet man z.B. hier gut erklärt. [...]
[...] Analytics in der Datenschutzinformation (DSI) der Website hinweisen,implementieren der Funktion anonymizeip(),über die Möglichkeit der Deaktivierung der Google Analytics-Funktion mittels eines Browser [...]
Super Beitrag. Habe dies in meinen Projekten auch umgesetzt.
[...] ist der Vertrag zur Auftragsdatenverarbeitung mit Google (§ 11 BDSG – Vertrag) einzuhalten.Unter blog.webalytics.de gibt es eine Ausführliche Beschreibung wie sich die IP-Adressen anonymisieren lassen.Zudem wird [...]
[...] Zur Anleitung: Anonymisieren von IP-Adressen mit Google Analytics [...]