Matomo tracked keine Bots

Nachdem ich jetzt 2 Tage damit vebracht habe Matomo beizubringen auch Bots zu tracken, hoffe ich, dass ich hier die notwendige Hilfe dazu bekomme. Nachdem es sich bei einem bestimmten Projekt nur darum geht nur Bots zu tracken, sind normale User nachrangig, sodass ich den normalen Tracker Code gleich gar nicht verwende. Zumal für Bots auch mit dem Image Tracking sinnfrei, weil weder Javascript noch andere statische Sourcen geladen werden. Deswegen hab ich gleich den PHP Client installiert.

Als erstes habe ich Daten aus der access_log importiert, was zunächst nur bedingt funktioniert hat, weil es während des Imports zu MySQL Fehlern kam, weil die User Agents zu viele Zeichen haben. Dazu gilt anzumerken, dass ich das Plugin für Bots auch installiert hatte. Das Feld für den UA war/ist zu klein gewählt, sodass ich die 100 Zeichen erweitert habe. Somit klappte schon mal der Import.

Es gab dann aber doch ein Problem nach dem Import. Für den Import habe ich den Parameter

–enable-bots

angegeben. Als der Import fertig war wurde in der Übersicht angezeigt, dass keine Bots importiert wurden. Warum keine?

Dieses Bots Plugin funktioniert jedoch so, wie es soll, wenngleich ich etwas mehr erwartet hätte. Ist aber for free, sodass es schon okay ist.

Den PHP Client habe ich wie beschrieben durch den Parameter

bots=1

ergänzt. Somit sollten eigentich alle Voraussetzungen erfüllt sein. Sind sie nicht oder ich hab ein Verständnisproblem. Das Tracken an sich, wenn man das mit den Bots mal außen vor lässt, funktioniert, aber keine Bots. In der Besucherübersicht sehe ich bei den importierten Daten jeweils ein “Not-Bot” bei den herkömmlichen Besuchern. Bei den regulären Aufrufen fehlt diese Angabe. In jedem Fall tauchen egal wo keine Bots auf, Ausnahme dieses Bot Plugin.

Die Frage ist nun, was muss man (noch) tun damit Bots genauso angezeigt werden, wie “Non-Bots”?

Hallo,

Die Situation mit bots ist recht kompliziert, da anscheinend niemand das Tracken von Bots prioritisiert hat.

DeviceDetector

Matomo verwendet DeviceDetector für das Erkennen von UserAgent. Dabei gibt es auch eine ausführliche Liste von UserAgents von Bots, die regelmäßig aktualisiert wird. Unter https://devicedetector.lw1.at/ kannst du testen, ob ein useragent als bot erkannt wird.

https://devicedetector.lw1.at/%20Mozilla%2F5.0%20(compatible;%20Googlebot%2F2.1;%20+http:%2F%2Fwww.google.com%2Fbot.html)

Standardmäßig ignoriert Matomo alle Daten von diesen Bots, aber wenn man im Tracking request bots=1 setzt, kann dies ignoriert werden. (Does Piwik track search engine bots or other spider / robots? FAQ - Analytics Platform - Matomo)

Log Analytics

Log Analytics inkludiert eine sehr kurze Liste von sehr häufigen bots (matomo-log-analytics/import_logs.py at 99e3b5385073f92a33dec4d70741ee7007509ce9 · matomo-org/matomo-log-analytics · GitHub), damit nicht Unmengen an Anfragen an Matomo gesendet werden, die dann dort eh nicht gespeichert werden. Mit –enable-bots kann man diesen Filter ignorieren.

Bot Tracker plugin

Das Bot Tracker - Matomo Plugins Marketplace ist nicht vom Matomo team, sondern von Thomas Fasselt, also solltest du bei Fragen eher ihn kontaktieren. Wenn ich den Programmcode richtig verstehe enthält das Plugin aber eine BotListe und hat somit überhaupt nichts mit dem Rest von Matomo zu tun. Außerdem scheint das Plugin nicht mehr gewartet zu werden


Die beste Lösung wäre meiner Meinung nach ein Matomo plugin zu schreiben, welches beim Tracking das Ergebnis von DeviceDetector anschaut und wenn ein Bot erkannt wird, diese Anfrage nicht ignoriert, sondern normal abspeichert und vielleicht noch eine Custom Dimension mit dem Namen des Bots hinzufügt. So sollte man dann schöne Statistiken über die Bots machen können. Jedoch hat dieses Plugin noch niemand geschrieben.

Das mit dem Bots Plugin hab ich nur erwähnt, weil es trotz aller anderer Einstellungen das einzige ist, was überhaupt Bots erfasst. Von daher und wie Du selbst schreibst, hat es mit den eigentlichen Funktionen von Matomo aber nichts zu tun.

Alles andere was Du schreibst, habe ich gemacht. Die besagten Parameter werden trotz der Doku aber scheinbar ignoriert, wobei dieser Bots Parameter nur bei der Nutzung des PHP Client einen Sinn macht und auch nur dort funktionieren kann. Den PHP Client nutze ich und auch mit diesem angehängten Parameter, aber da tut sich nichts in Sachen Bots. Alles andere wird aber so getracked wie vorgesehen. Von daher ergibt sich für mich der Verdacht, dass man irgendwann mal dazu übergegangen zu sein scheint, dass Bots überhaupt nicht mehr erfasst werden und die besagten Schalter keine Wirkung zeigen.

Das mit dem vorgeschlagenen Plugin wäre natürlich brilliant, aber wieviele brauchen so was schon. Andererseits, wenn es vorhanden wäre, würde man es sicherlich nicht missen wollen.

2014 gabs das Problem wohl schon mal:

Ich glaube der Ursache langsam auf die Schliche zu kommen. Durch den Import der access_log wurden benutzerdefinierte Variablen angelegt, die den Parametern des Import Befehls entsprechen. Wenn ich mir nun einen Bericht erstelle und dafür Benutzerdefinierte Variable auswähle und dann Bots wähle, bekomme ich alle Zugriffe angezeigt, die ein Bot sind. So weit so gut, allerdings fehlen 2 wichtige und zwar der Bingbot und Googlebot. Da fragt sich jetzt warum, zumal ich bei jedem Import fehlerhafte Log Einträge angezeigt, bzw. die Menge. Eine denkbare Ursache wäre nun, dass der UA dieser beiden Bots zu lange ist und deswegen nicht importiert werden können. Das gleiche Problem hatte ich auch bei dem BotTracker Plugin.

Die Frage, die sich nun stellt, wo werden diese UAs gespeichert. Im Klartext stehen diese nicht in der DB. Dann müsste man mal checken, wie viele Zeichen für dieses Feld erlaubt sind oder das Import Script kann mit der Menge an Zeichen nicht umgehen?!

Den Teil habe ich oben übersprungen: Das log-analytics script fügt mit --enable-bots auch eine custom varible (nicht custom dimension) mit bots hinzu. Das funktioniert aber wieder nur für die wenigen bots aus der log-analytics liste

Matomo speichert nie die User Agents, sondern immer nur die Ergebnisse von DeviceDetector. Daher meine Idee ein Plugin zu schreiben, welches den Namen des Bots in eine CustomDimension schreibt.

Ich will hier nichts versprechen, was ich nicht halten kann. Aber wenn ich morgen Zeit habe, probiere ich aus, ob so ein Plugin einfach machbar ist.

Also irgendwo müssen die UAs ja gespchert werden. Ansonsten würden mir die UAs im Bericht nicht angezeigt werden. Oder kommen die vom DeviceDetector?

Aber jetzt noch was ganz verrücktes. Ich hab mir grad mal das Import Script angsehen. Fällt Dir dazu irgendwas ein…?

# A good source is: http://phpbb-bots.blogspot.com/
# user agents must be lowercase
EXCLUDED_USER_AGENTS = (
    'adsbot-google',
    'ask jeeves',
    'baidubot',
    'bot-',
    'bot/',
    'ccooter/',
    'crawl',
    'curl',
    'echoping',
    'exabot',
    'feed',
    'googlebot',
    'ia_archiver',
    'java/',
    'libwww',
    'mediapartners-google',
    'msnbot',
    'netcraftsurvey',
    'panopta',
    'pingdom.com_bot_',
    'robot',
    'spider',
    'surveybot',
    'twiceler',
    'voilabot',
    'yahoo',
    'yandex',
)

Ich bin mir auch gerade nicht mehr ganz sicher. Welchen Bericht meinst du? Wo siehst du die UAs?

Ich weiß nicht, was du meinst. Das ist genau, was ich oben geschrieben und verlinkt habe:

Wenn ich mir einen Bericht erstellen lasse und dazu Benutzerdefinierte Variablen und Bot auswähle, bekomme ich einen Bericht von allen Bot Zugriffen und bei jedem Bot steht der UA darunter.

Das mit den Excluded Bots und --enable-bots irritiert mich jetzt. --enable-bots heißt doch, dass auch die Bots mit importiert werden sollen, oder nicht? Was soll dann das mit den Excluded Bots? Ich hab die jetzt mal alle rausgenommen, aber dadurch ändert sich auch nichts. Es gibt bei jedem Import weitere invalid log lines und das dürften dann der googlebot und der msnbot sein.

Okay, ich weiß jetzt, wo die Unklarheit ist:

Matomo macht hier gar nichts. Es wird weder der Bot erkannt, noch der User Agent gespeichert.

Stattdessen ist das alles log-analytics. Standardmäßig ignoriert es alles aus der EXCLUDED_USER_AGENTS liste. Mit --enable-bots dreht man das Verhalten um und es werden die Einträge aus EXCLUDED_USER_AGENTS nicht mehr ignoriert und es wird der User Agent des Bots als eine custom variable (nicht custom dimension) in Matomo mitgespeichert. In Matomo siehst du also dann diese Custom Variable.

Aber dabei werden nicht die vielen hundert Bots, die Matomo erkennen kann berücksichtigt, sondern nur die paar aus der log-analytics liste.

Die UAs stehen übrigens schon als Klartext in der DB. Siehe matomo_log_visit und dann in der Spalte custom_var_k1, die beim Import angelegt wird.

Ne, das kann so nicht stimmen. Ich kann es drehen und wenden wie ich will, also Einträge hinzufügen oder alles rausnehmen, aber googlebot und msnbot werden nie importiert.

Wie sieht bei dir eine Log-Zeile von googlebot aus?

Genauso wie alle anderen, nur dass die UAs von Google und Bing länger sind als alle anderen, aber eben keine 200 Zeichen

66.249.66.209 - - [23/May/2020:14:17:39 +0200] "GET / HTTP/1.1" 200 16037 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.92 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" - gzip 0/303049

Ich habe diese Zeile in logs.txt gespeichert und mit sudo -u www-data python import_logs.py logs.txt --url=https://dev.matomo/ --idsite=1 --enable-bots importiert und wie erwartet, wird die Zeile importiert mit der custom_variable Bot gesetzt.

Lass mich das mal austesten

Also importiert wird was, aber ich sehe es nicht in Matomo…

Ich habe inzwischen nachgeschaut und es scheint, als sollte es recht einfach sein das Plugin zu schreiben. Ich werde es also morgen mal ausprobieren.

Nehme Dich in mein Abendgebet mit auf! :wink:

Also ich hab jetzt mal alles platt gemacht und Matomo nochmal neu installiert, weil ich vorher schon einiges geändert hatte, was womöglich zu den Tracking Problemen geführt hat. Ich hab auch das BotTracker Plugin weggelassen und siehe da, es funktioniert alles so wie vorgesehen. Also bezogen auf den PHP Client und dem Tracken von Bots. Das Einzige, was jetzt noch genial wäre, wäre eine Kennzeichnung in “Besuche in Echtzeit” auf dem Dashboard, ob es sich um einen Bot handelt oder nicht. In der Besucher Log Ansicht wird es angezeigt.So wie es jetzt ist, glaub ich grad nicht, dass Du etwas mit einem Plugin noch besser machen könntest. Ich will Dich aber nicht davon abhalten… :slight_smile: