Zugriffe auf die eigene Website aus Google Analytics filtern

Heute möchte ich einmal weniger über das Thema SEO als über das Thema Google- Analytics berichten. Viele werden das Problem kennen. Man möchte die eignen Zugriffe aus der Webseitenstatistik entfernen, jedoch haben viele von uns einen normalen Internetanschluss mit dynamischer Zuteilung einer IP- Adresse. Google Analytics bietet von Haus aus nur Filter für IP- Adressen oder Provider- Domains. Wie kann man nun die eigenen Zugriffe sauber filtern ohne Browser- Plugins zu verwenden oder JavaScript komplett zu deaktivieren? Ich habe mir die schon im Netz bekannten Verfahren angesehen:
  • Anpassungen der hosts- Datei

Hierbei wird folgender Eintrag in der Host- Datei hinzugefügt: 127.0.0.1        google-analytics.com Mit diesem Eintrag findet der Browser den Server von Google Analytics nicht mehr und kann daher die Besuche „aller“ Webseiten nicht mehr melden. Und genau hier haben wir dann schon das eigentliche Übel. Mit diesem Eintrag haben wir Google- Analytics komplett auf dem lokalen Computer deaktiviert. Hinzu kommt, dass wir diese Änderung an jedem Computer vornehmen müssen und dazu noch über Administratoren- Rechte verfügen müssen.
  • Verwendung von DynDNS um Google- Analytics zu deaktivieren

Eine bessere und flexiblere Lösung habe ich mir nun ausgedacht. Ich erstelle für jeden Standort den ich filtern möchte einen DynDNS- Host. Ich habe dazu den Dienst xxw.at gewählt, da dieser noch eine spezielle Funktion bietet, die ich ganz zum Schluss der Konfiguration noch benötige. In den Routern der Standorte habe ich die Aktualisierung der DynDNS- Hosts eingerichtet. Dank der einfachen Update- URL lässt sich dazu fast jeder Router dazu bringen ein Update durchzuführen. Im nächsten Schritt habe ich ein PHP- Script geschrieben um die DynDNS- Host- Einträge in aktuelle IP- Adressen aufzulösen und daraus ein JavaScript- Array zu erzeugen und dies in eine separate JavaScript- Datei zu schreiben:
<?php

$dns = array('dns1','dns2','dns3','dns4');
$domain = 'proxyland.de';

 $txt .= 'var ips = [';
 $r = 0;
foreach ($dns as $host) {
     $res = gethostbyname($host . '.' . $domain);
if (filter_var($res, FILTER_VALIDATE_IP)) {
         $txt .= '"' . $res . '",';
         $r++;
     }
 }
if ($r > 0 ) $txt = substr($txt, 0, -1);
 $txt .= '];';
 $myfile = fopen("iplist.js", "w");
fwrite($myfile, $txt);
fclose($myfile);

?>
Listing: create_iplist.php
In meinem Beispiel werden hier die Hosts dns1.proxyland.de, dns2.proxyland.de, dns3.proxyland.de und dns4.proxyland.de aufgelöst und damit das JavaScript- Array aufgebaut. Damit erstellen wir die benötigte Includedatei für unsere eigentliche Website. Als nächstes müssen wir aus unserem CMS oder Shopsystem die aktuelle Remote- Adresse (IP- Adresse des jeweiligen Webseitenbesuchers) in eine JavaScript- Variablen übertragen:
<script>
var myip = ‚{$smarty.server.REMOTE_ADDR}’;
</script>
<script type="text/javascript" src="iplist.js"></script>
Diesen Code setzen wir vor unseren eigentlichen Aufruf von Google- Analytics. Normalerweise sieht ein Aufruf von Google- Analytics wie folgt aus:
<script type="text/javascript">
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
        ga('create', 'UA-xxxxxxxx-x', 'auto');                   
        ga('set','anonymizeIp',true);
        ga('send', 'pageview');
</script>
Diesen Code dürfen wir jetzt aber nur noch aufrufen, wenn Die aktuelle Remote- Adresse (myip) nicht in unsere IP- Liste (ips) vorkommt. Daher erweitern wir unseren Google- Analyticscode wie folgt:
<script type="text/javascript">
    if (ips.indexOf(ownIP) <= -1) {
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
        ga('create', 'UA-xxxxxxxx-x', 'auto');                   
        ga('set','anonymizeIp',true);
        ga('send', 'pageview');
}
</script>
Damit haben wir dann unsere eigenen Zugriffe komplett aus dem Google- Analytics- Account gefiltert. Natürlich könnten wir z.B. anstelle den Code komplett nicht ausführen zu lassen eine andere Property-ID angegeben umso die internen Zugriffe weiterhin gesondert tracken zu können. Hier sind der Fantasie kaum Grenzen gesetzt. Doch halt! Sind wir schon fertig? Nein! Noch nicht ganz, den wir arbeiten ja schließlich mit dynamischen IP- Adressen und wir haben eben eine statische JavaScript- Datei erstellt. Das bedeutet wir müssen in regelmäßigen Abständen das JavaScript- Array erneut erstellen lassen. Dies können wir einfach mit dem Aufruf der Datei create_iplist.php machen. Entweder man ruft diese über einen Cronjob als CLI über PHP auf oder aber wir nutzen die (eben erwähnte) Sonderfunktion von xxw.at. Hier kann ich mein PHP- Script als externe Aktion angeben. Sobald das Nameserver- System die neuen IP- Adressen übernommen hat ruft der Dienst xxw.at mein PHP- Script auf. Ich hoffe ich habe Euch einen weiteren kleinen Anreiz gegeben und einen Lösungsansatz gezeigt, wie man Zugriffe von Internetanschlüssen mit dynamischer IP- Adresse kontrolliert in Google- Analytics ausschließen oder umleiten kann.
  • Verwendung unterschiedlicher Webserver / DNS- Auflösung

Eine weitere Möglichkeit wäre die Trennung von internem und externen Traffic schon sehr viel früher zu trennen. Nämlich zum Zeitpunkt der Namensauflösung der Domain. Es spricht doch nichts dagegen über interne Nameserver eine andere IP- Adresse als die für externe Besucher auszuspielen. So könnte man für alle internen Anfragen zum Beispiel eine 192.168.x.x Adresse auslösen auf der dann eine gespiegelte Version des eigentlichen Onlineshops installiert ist. In dieser „Kopie“ sollte dann natürlich kein Tracking- Code in den Templates eingebaut sein. Diese Lösung ist etwas aufwendiger, da man für diese Lösung einen eigenen Nameserver mit Windows oder Linux betreiben muss um das Zonefile der Domain zu hosten. Außerdem muss natürlich der Shop auf dem gesiegelten System auch immer aktuell gehalten bzw. regelmäßig gespiegelt werden, damit die eigenen Mitarbeiter auch das sehen was externe Besucher sehen können.   Siehe auch:  
Zugriffe auf die eigene Website aus Google Analytics filtern
Markiert in:             

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.