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:

Output bei Firebug zum Testen der Funktion _anonymizeIp()

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…

 

 

10 Kommentare zu „Anonymisieren von IP-Adressen mit Google Analytics“

Kommentieren

Follow us:
Abonnieren Sie unseren Blog!
Folgen Sie uns auf Twitter!
Folgen Sie uns auf Facebook!
Folgen Sie uns auf LinkedIn!
Feedburner-Abo
RSS Feed für Reader abonnieren

oder geben Sie Ihre E-Mail-Adresse an:

Kategorien
Archive