Startseite » Blog » Digital Analytics
16.11.2015
Analytics Ghost Spam wirksam verhindern: Ein etwas anderer Filter
Tipps zum Aussperren von Referral- und Eventspam in Google Analytics - auch "Ghost Spam" - gibt es jede Menge. Warum also noch ein Artikel dazu? Weil hier eine Idee zur Ergänzung der gängigen Verteidigungsstrategien vorgestellt werden soll, die sich in Tests als durchaus wirksam erwiesen hat.
Die üblichen Filter - und deren Grenzen
Wenn man nach "Analytics Referral Spam verhindern" oder ähnlichen Phrasen bei Google sucht, findet man reichlich Anleitungen zum Einrichten von Filtern, die per "Ausschließen"-Funktion bekannte Spammer aus dem eigenen Profil fernhalten sollen. Das funktioniert zwar ganz gut, allerdings muss man regelmäßig die Berichte nach neuem Spam durchsuchen und hinzukommende Quellen durch Anpassung des Filters abdecken. Diese Methode hilft daher nur "in Schüben"; ist auf Eigeninitiative angewiesen und potentiell fehleranfällig: Wer sich bei der Definition der Regular Expression für den Filter verschreibt (sehr menschlich und nicht unwahrscheinlich), vernichtet im schlimmsten Fall sogar (unwiederbringlich!) Daten, bis es endlich auffällt. Die Entropie muss hierbei auch in möglichst kurzen Abständen durch Aktualisierung der Filter bekämpft werden. Faulere, aber auch mutigere Ansätze basieren daher auf "Einschließen"-Filtern, die aber ebenso ihre Tücken haben und nicht in jedem Fall wirklich sinnvoll genutzt werden können.
Alle diese Lösungen haben eine Schwachstelle, die durch den stetig gestiegenen Bedarf nach Anleitungen zur Bekämpfung von Analytics Spam immer relevanter wird: Spammer kennen diese Tipps und umgehen sie, indem Sie nicht mehr den eigenen oder keinen ("not set") Hostnamen übergeben, sondern der Hostname der "bespammten" Domain - oder eine mit hoher Wahrscheinlichkeit in solchen Filtern erlaubten Domains wie googleusercontent.com - genutzt wird. Das ist mit dem Google Analytics Measurement Protocol problemlos möglich... und mehr und mehr Spammer nutzen genau diesen Weg, um ihre Pageviews oder Events an Filtern vorbei in die Webanalyse der Opfer zu bekommen.
Aus anderen Gründen scheitern auch im Großteil der Fälle Ansätze zur Bekämpfung, die auf dem Blockieren von Spam in der .htaccess des eigenen Servers basieren. Denn der eigene Server ist inzwischen nur noch selten an der Übermittlung der falschen Daten beteiligt. "Ghost Spam" zeichnet sich genau dadurch aus - und diese Form liefert den Löwenanteil des Datendrecks in Google Analytics.
Zuletzt: Auch Versuche des Aussperrens über die Verweisausschlussliste sind zum Scheitern verurteilt, denn diese Funktion hat einen ganz anderen Zweck... ebenso wie die Checkbox zum Ausfiltern bekannter Bots und Spider hier nicht hilft. Was also tun?
Spammer aussperren - ein etwas anderer Ansatz
Dazu soll hier eine andere Methode zur "Verteidigung" vorgestellt werden: Um zu einer gefilterten und möglichst spamfreien Datenansicht als "Arbeitsprofil" für die eigene Website zu kommen, muss ein vom Hostnamen abweichendes Filterfeld her, das in herkömmlichen Spam-Anfragen nicht enthalten bzw. nicht mit dem erwarteten Wert befüllt ist. Dazu bieten sich z. B. benutzerdefinierte Dimensionen und / oder Metriken an. Diese können - einmal in Analytics definiert - durch einfache Anpassung des Trackingcodes für alle Hits mit einem eindeutigen Wert belegt werden. Dieser ist i. d. R. nicht Bestandteil von Spamanfragen, so dass diese es nicht in ein Profil schaffen, welches nur Hits einschließt, die den erwarteten Wert aufweisen. Es sei denn, der Spammer zielt explizit auf eine bestimmte Site und dupliziert daher nach einer Analyse des vorhandenen Trackings die Extrawurst (denn das ist dann auch mit dem Measurement Protocol kein Problem). Sprich: Diese Methode hilft gegen "normale" Spammer aller Art, aber nicht gegen gezielte Manipulation von Daten ausgewählter, bestimmter Websites.
So geht´s:
- Unter Verwalten (oben) -> Property -> Benutzerdefinierte Definitionen -> Benutzerdefinierte Dimensionen einen neuen Eintrag anlegen, benennen und speichern. Ich habe mich hier für eine Dimension auf Session-Ebene entschieden - bei den meisten Implementierungen von Google Analytics sollte aber auch die Ebene "Hit" einwandfrei funktionieren.
- Den Trackingcode auf der eigenen Domain um die Angabe der Dimension erweitern und einen Standardwert für den Filter hier eingeben. Dabei unbedingt beachten, dass man die richtige Dimension mit einem Wert belegt - im Beispiel ist das dimension2, weil der Slot 1 schon genutzt wird. Als Wert kann eine beliebige Konstante verwendet werden. "FU" ist z. B. ein prima Wert für eine Dimension, die Spam abhalten soll 😉
ga('set', 'dimension1', 'FU'); - Nun muss noch eine gefilterte Datenansicht her, die nur den Traffic beinhaltet, der diesen Wert überträgt. Spammer bleiben so draußen. An dieser Stelle ist ein Hinweis unvermeidbar: Es sollte immer eine Datenansicht erhalten bleiben, die ungefilterte Rohdaten enthält. Es empfiehlt sich daher die Anlage einer weiteren, neuen Datenansicht für den Test des Filters und zur späteren Verwendung als spamfreies Arbeitsprofil. Dazu einfach die "Einstellungen der Datenansicht" für die aktuell verwendete Ansicht öffnen und auf "Datenansicht kopieren" klicken, um eine Kopie anzulegen. In dieser Kopie kann dann der entsprechende Filter angelegt werden, indem ein benutzerdefinierter "Einschließen"- Filter auf die eben angelegte Dimension gelegt wird und nur Daten durchlässt, die den eben definierten Wert beinhalten. Für das obige Beispiel wäre dies dann also:
- Fertig
Wenngleich historische Daten fehlen, sollte die neue Datenansicht ab sofort neue, sauberere Daten sammeln, die tatsächlich nur Hits enthalten, die von der eigenen Website stammen. Das ungefilterte Profil sollte demnach höhere Zahlen aufweisen, wenn man wirklich mit Spam zu tun hat und Angaben zu Sessions etc. über einen längeren Zeitraum vergleicht. Damit ist man allerdings "nur" den Mist los, der sonst durch die üblichen Filter nach Hostname etc. kommt. Der Filter ist aber zum Glück sinnvoll kombinierbar mit den anderen Methoden - selbst das Ausschließen der Spammer über die .htaccess des eigenen Servers hilft nun wirklich, die Qualität zu verbessern, denn so erspart man sich den (geringen) Rest an Crawler-Spam, der wirklich noch die echte Website zum Absetzen des Spams verwendet.
Spamkontrollprofil
Um sicherzustellen, dass wirklich nur das ausgefiltert wird, was nicht benötigt wird, ist eine zusätzliche Datenansicht sinnvoll, die genau umgekehrt funktioniert: Es wird ein weiterer Filter angelegt, der alles ausschließt, was das “Passwort” in der benutzerdefinierten Dimension beinhaltet und dieser wird auf eine Kopie der Rohdatenansicht angewendet, die dann der Spamkontrolle dient.
Spam beobachten, Lücken aufdecken
Darüber kann nicht nur Spam separat im Auge behalten, sondern auch Hits identifiziert werden, denen das Passwort fehlt, aber die dennoch in der Arbeitsdatenansicht enthalten sein sollten. Das können verschiedene Dinge sein wie z. B. die Daten von separaten Seiten einer mobilen Fassung der Website oder AMP-Variante, bei der die benutzerdefinierte Dimension fehlt. Ebenso sind externe Dienste wie Warenkörbe, die auf einer anderen Domain liegen und bei denen eine Anpassung des Codes nicht möglich ist, ohne weitere Anpassungen vom Arbeitsprofil ausgeschlossen, wenn man den o. a. Filter dort einsetzt. Daher empfiehlt es sich, das Spamkontrollprofil parallel zur Anpassung einzurichten und den Spamschutzfilter zunächst auf einer Testdatenansicht zu erproben, bevor dieser auf die Arbeitsdaten losgelassen wird.
Die gute Nachricht: Das Kennwort kann auch für Hits unter bestimmten Bedingungen per Filter eingefügt werden, bevor diese durch den Spamfilter “vernichtet” werden. Hier am Beispiel von externen Newsletteranmeldungen, die von einem externen Server (hier. MailChimp) kommen. Wird dieser Hostname gefunden, wird das Kennwort gesetzt.
Wichtig ist, dass dieser Filter vor dem Spamfilter angewendet wird, denn ansonsten sind die Hits vom Newsletterserver schon ausgefiltert und können nicht mehr "gerettet" werden.
Behält man so eine ausreichende Zeit alles im Blick, was lt. Spamkontrolldatenansicht aus den Arbeitsdaten ausgefiltert wird, kann zur Not auf diese Weise nachgebessert und so sichergestellt werden, dass bei Aktivierung des Spamfilters für die Arbeitsdaten keine Lücken in benötigten Daten entstehen.
Wie groß ist mein Spam-Anteil?
Wer wissen will, ob sich die Mühe lohnt, kann unser Tool Analytrix nutzen, um den Spam-Anteil seiner Daten analysieren (Link öffnet neues Fenster) zu lassen, soweit der Spam aus bereits bekannten Quellen stammt. Damit erhält man schnell ein Bild davon, wie groß der Anteil typischerweise in den letzten Wochen und Monaten war und kann auf diese Weise auch nach Implementierung eines Filters "von außen" im Auge behalten, ob noch Hits von bekannten Spammern in den Arbeitsdaten auftauchen.
Vergleiche auf einer Domain mit hohem Spam-Anteil und eher wenigen echten Besuchern über einige Wochen haben gezeigt, dass der o. a. Filter ausreicht, um die Messdaten von Google Analytics deutlich an die eines parallel implementierten Vergleichstools anzunähern. Solange Spammer sich also nicht die Mühe machen, automatisiert das ja durchaus individuell zu gestaltende "schmutzige kleine Geheimnis" aller Sites zu faken, die diese Methode einsetzen (indem z. B. alle benutzerdefinierten Angaben im echten Tracking ermittelt und dupliziert), sollte man damit auf der relativ sicheren Seite stehen und deutlich bessere Daten in der Webanalyse erhalten.
Meinungen, ähnliche Ideen oder Ergänzungen zu dieser Idee als Kommentar oder per Mail sind hochwillkommen! 😉