Potentielle Bots und Headless Browser in Analytics markieren
Zur Bot- und Spam-Traffic-Identifizierung gibt es zahlreiche Blog-Beiträge mit hilfreichen Tipps und Anleitungen, um seine Google Analytics Daten möglichst sauber zu halten. Übliche Maßnahmen sind die Daten in Google Analytics manuell zu sichten und nach Hinweisen zu suchen, die auf Bots und Spam-Traffic schließen lassen. Dies ist zum einen sehr zeitaufwendig und zum anderen bereinigt man die Daten erst im Nachhinein – sprich: Das Kind ist bereits in den Brunnen gefallen. Um einiges sinnvoller ist es, präventiv die Traffic-Daten beim Tracken zu analysieren und ggf. direkt für die Analytics Datenansicht rauszufiltern. Viele Bots sind über den User Agent leicht zu identifizieren. Hierzu muss lediglich im Google Tag Manager über eine JavaScript-Variable der User Agent abgefragt und an die angelegte benutzerdefinierte Dimension in Google Analytics weitergegeben werden.
Problematisch wird es jedoch dann, wenn Crawlern sogenannte Headless Browser verwenden. Vor einigen Wochen veröffentlichte Markus Baersch, ein bekannter Speaker im Bereich SEM und Webanalyse aus dem Raum Köln, einen Blog-Beitrag zur Identifizierung von Headless Browsern. Für diesen Blog-Beitrag habe ich seine Methode getestet.
Was es mit Headless Browsern auf sich hat
Als Headless Browser bezeichnet man Webbrowser ohne grafische Benutzeroberfläche (GUI), welche über ein Command Line Interface (CLI) – eine Kommandozeilen-basierte Oberfläche – gesteuert werden. Sie werden häufig zum Testen von Webseiten genutzt, da sie HTML, CSS und Javascript wie „richtige“ Browser ausführen. Jedoch werden Headless Browser immer häufiger von Crawlern genutzt, um eine Webseite vollständig zu erfassen. Problematisch ist, dass diese von Google Analytics trotz Bot-Filter nicht erkannt werden. Hier stellen sich viele Seitenbetreiber, SEOs und Web-Analysten die Frage, wie Traffic-Daten von Headless Browsern erkannt und rausgefiltert werden können.
Über den User Agent Bots in GA identifizieren
Wie auch Markus Baersch in seinem Blog-Beitrag erwähnt, kann es für die Aufspürung von Bots nützlich sein, den User Agent in Google Analytics sehen zu können. Hierzu müssen lediglich die folgenden 3 Schritte durchgeführt werden:
- Zuerst legt man in Analytics eine benutzerdefinierte Dimension an, über die man den User Agent als sekundäre Dimension einblenden oder in einem benutzerdefinierten Bericht als primäre Dimension einsehen kann. Hierzu einfach unter Verwaltung > Property > Benutzerdefinierte Definitionen > Benutzerdefinierte Dimensionen eine neue benutzerdefinierte Dimension auf Hit- oder Sitzungsebene hinzufügen. Wichtig: Index-Nummer merken.
- Im Google Tag Manager eine JavaScript-Variable anlegen. Den „Namen der globalen Variable“ auf window.navigator.userAgent setzen.
- Im letzten Schritt fügt man in der Google Analytics Variable, in der die GA-Tracking-ID hinterlegt ist, unter Benutzerdefinierte Dimensionen die Variable als Dimensionswert hinzu. Die Index-Nummer entspricht der Nummer vom Index der angelegten benutzerdefinierten Dimension in Analytics.
Testing vom Bot Marker Script
Kommen wir zum Test vom Bot Marker Script. Die Implementierung über den Google Tag Manager ist im Beitrag von Markus beschrieben und ist den Schritten für die User Agent Identifizierung sehr ähnlich. Statt einer JavaScript-Variable legt man eine „Benutzerdefinierte JavaScript Variable“ an. In diese wird das Script, welches auf GitHub hinterlegt ist, eingefügt und unter Formatwert der Rückgabewert undefined auf UNBESTIMMT gesetzt, damit undefined Ergebnisse in Analytics auswertbar sind.
Im Script wird u.a. geprüft, ob es sich um einen bekannten Crawler handelt. Im zweiten Schritt wird im User Agent nach Crawler, Spider oder Bot gesucht. Schlagen beide Tests nicht an, wird anhand einiger Merkmale geprüft, die auf einen Headless Browser hinweisen können, wie beispielsweise die vom Browser übermittelte Screenhöhe und -breite.
Um das Script zu testen, habe ich die Webseite mit Screaming Frog gecrawlt. Hierbei ist zu beachten, dass es nicht reicht die Webseite mit Rendering zu crawlen, um die Crawler-Zugriffe in Analytics zu sehen, da Screaming Frog die ausgehenden Hits an Analytics selbständig blockiert. In Screaming Frog kann man seit Version 12.0 unter Configuration > API Access die Pagespeed-Analyse über die Google PageSpeed Insights API aktivieren. Hierzu muss man nur den Secret Key hinterlegen. Die Pagespeed-Analyse läuft über den Google Lighthouse Report, welcher vom Bot Marker Script als bekannter Bot identifiziert werden sollte.
Beim Crawl konnte man im Analytics Echtzeit-Bericht die Zugriffe des Crawlers sehen. Und schon einen Tag später sehen wir, dass das Bot Marker Script die Pagespeed-Anfragen von Google Lighthouse am vorherigen Tag erkannt und als CHROME-LIGHTHOUSE_UA korrekt markiert hat. Ohne den Marker wären die Zugriffe, abseits der hohen Zugriffsanzahlen, schwer anhand anderer Dimensionen als Crawler zu identifizieren.
Das Script hat außerdem bei zwölf Nutzern angeschlagen und diese als NO_OUTER_DIMENSION markiert, d.h. dass die Browserfenster eine Höhe und Breite von 0 gehabt haben, was auf einen Headless Browser schließen lässt. Die als Headless Browser markierten Zugriffe (alle ohne _UA und nicht als OK markiert) können mit weiteren Dimensionen und Metriken, wie Land, Betriebssystem, Absprungrate, Sitzungsdauer usw. kombiniert betrachtet werden, um weitere Identifikationsmerkmale zu bekommen, welche man beispielsweise über einen Filter oder ein erstelltes Segment ausschließt.
Betrachtet man die benutzerdefinierte Dimensionen „Bot Marker“ und „UserAgent“ in einem Benutzerdefinierten Bericht zusammen, erkennt man, dass Zugriffe ohne User Agent als NO_OUTER_DIMENSION markiert werden. Die 16 Nutzer mit 16 Sitzungen haben insgesamt eine Sitzungsdauer von 0 und eine Absprungrate von 100% – hierbei handelt es sich eindeutig um keine echten Nutzer.
Ein weiteres Beispiel wäre die Kombination aus „Bot Marker“ und Internetanbietern. Alle 34 Nutzer der letzten 30 Tage, die den Internetanbieter „private customer“ haben, sind keine echten Nutzer.
Fazit zum Bot Marker Script
Das Bot Marker Script ist sehr hilfreich für die Bots und Headless Browser Identifizierung, auch wenn es nicht ermöglicht, blind alle markierten Zugriffe über Filter auszuschließen. Vielmehr nimmt es uns Analytics-Nutzern einen Teil der Arbeit ab und minimiert die benötigte Zeit nach der Suche von Bot-Kriterien. Zudem werden die Webseiten-Zugriffe „zur Laufzeit“ geprüft und nicht erst in Google Analytics. Die Implementierung dauert keine 5 Minuten mit dem Google Tag Manager, weshalb ich das Script von Markus jedem Analytics-Nutzer, der möglichst saubere Daten haben möchte, empfehlen würde. Es gilt aktuell noch nicht als fertig und kann zur gegebenen Zeit noch erweitert oder ausgebessert werden.