Bots nicht mitzählen oder bei den Reports rausfiltern

Hallo,
ich nutze das PHP Tracking und habe so ca. 800(!) Besuche mehr am Tage als mit dem JavaScript Tracking.

Ich denke, das liegt unter anderem an den Bots, da viele Seiten nur einen Aufruf haben.
Wie kann ich die Bots entweder

  1. aussperren
  2. in den Reports rausfiltern (Dimension oder Segment?), also quasi Statistik mit Bots und ohne
  3. zählen der Bots ganz deaktivieren?

Ich muss dazu sagen, das ich den Basic-Tarif in der Innocraft-Cloud habe, also nicht selber hoste.

Danke & Viele Grüße
Olli

Hi,

Ich bin mir im Moment nicht hundertprozentig sicher, denke aber, dass Piwik Bots, deren Useragent als Bot erkannt wird, herausfiltert.

Ich habe gerade nachgefragt und Matomo filtert immer Bots heraus, die von DeviceDetector erkannt werden (matomo/VisitExcluded.php at 3.x-dev · matomo-org/matomo · GitHub)

Du kannst einmal probieren, den User Agent eines Nutzers, der ein Bot ist, hier zu überprüfen:
http://devicedetector.net/index.php

Falls er nicht erkannt wird, kann er dann ergänzt werden.

800 mehr als wie viel?
Du willst gleich 3 Dinge auf einmal?!

Matomo (Piwik) filtert Bots/Spider/Crawler raus. Es ist eher wahrscheinlich, dass viele Besucher heute Tracking blocken. Server Log Tracking blocken ist nicht so einfach bis unmöglich.

Falls du Zugriff auf das access.log file deines Webhost hast, schau doch mal über die Explicit User-Agent Einträge drüber, also die Quelle deiner Statistiken.

Es gibt Bots, Spider, Crawler, die auch mal ohne ihre Kennung unterwegs sind, um einen Unterschied zu erkennen, eben das Cloaking. Mit phantomjs und ähnlich lässt sich sowas machen.

Ansonsten suche nach Listen, in denen die Explicit User-Agents der Bots, Spider, Crawler gelistet sind und vergleiche mit deiner access.log Datei.

Mit dem Chromium Browser kannst du den Googlebot als Fake User-Agent nutzen.
Klick dich mal hier rein: “Explicit Opt-In” → “OK”. Dort ist unten ein GIF mit einem Tutorial.
https://www.penultima.de/opt/

Dankeschön, die Frage war ja vor kurzem schonmal aufgetaucht :slight_smile:

Berechtigte Frage, eine Vergleichszahl wäre schon hilfreich.

Wie schon im anderen Beitrag Frage Trackingunterschiede PHP - Javascript - #7 by Lukas erwähnt, kommt es am Ende darauf an, was Dein Ziel bei der Auswertung Deiner Statistik ist, um sagen zu können, welche Tracking-Variante Dir die besseren Resultate liefert.
Ich würde bei den “800 mehr” erstmal schauen, ob sich abzeichnet, dass es sich da um Menschen handelt oder um etwas anderes.
Dazu würde ich Dir raten, neben der Besucherzahl auch andere Parameter zu betrachten - hat sich die durchschnittliche Verweildauer und die Bounce-Rate stark verändert? Oder folgen die 800+ dem Dir bekannten Besuchsmuster?
Hast Du einmal eine Idee entwickelt, was für ein Traffic sich da neuerdings abbilden lässt, und hast Du den “alles ist anders”-Schock erstmal verdaut kann es sein, dass Du froh bist, diesen Traffic nun “sehen” zu können.
Naja, es sei denn, Du hast sonst eher 20 Besucher pro Tag und findest die jetzt nicht wieder :wink:

Poste gern mal alle Dir auffallenden, sich stark verändernden Parameter wenn Du magst, vielleicht lässt sich daraus eine Erklärung ableiten.
Welcher Browser/Bildschirmtyp ist z.B. am heftigsten angestiegen?
Oder verteilen die 800+ sich über alle Devices/Browser? Da lässt sich sicher einiges finden.

@Lukas
hier kommt jetzt wieder ein typischer Richard-Vorschlag… my apologies
Wäre es nicht klasse, wenn die DEMO installation, die meines Wissens die Matomo-Website und dieses Forum trackt dupliziert werden könnte, so dass man sich dort die Ergebnis-Unterschiede zwischen JS-tracking und php-tracking im Vorfeld ansehen könnte?
Wie Olis Bericht aufzeigt, führt ein nachträglicher Wechsel ja zu einer Verzerrung der Datenlage, drum wärs ja am besten man wüsste von vorne herein, welcher Weg der bessere für das jeweilige Projekt ist.
So eine öffentliche Vergleichsquelle würde uns hier auch das Diskutieren/Helfen vereinfachen, es würde natürlich voraussetzen, dass alle Seitenbesuche zeitgleich via JS-tracking und php-tracking erfasst werden, aber das sollte ja eigentlich kein Problem sein, oder?

Hallo,
erstmal vielen Dank für Eure Ausführungen und Meinungen.

Mit dem PHP Tracker habe ich im Schnitt 1200 Besucher am Tag.
Wenn ich einen Tag mal den JavaScript Tracker nutze (PHP-Tracker dann natürlich aus), dann habe ich nur 400-500 Besucher am Tag. Bei den Seitenaufrufen verhält es sich genauso was das Verhältnis angeht.

Wenn Matomo die Bots nicht mit zählt, ist das schon ein krasser Unterschied, wie ich finde.
Nur durch DoNotTrack oder AdBlocker kann ich mir das nicht erklären.

Ich poste hier mal den PHP-Tracker Code von mir. Ggf. ist da ja was verkehrt oder zuviel?

$local_time=date("H:i:s");

require_once '/Path/to/piwik/PiwikTracker.php';
PiwikTracker::$URL = 'https://abcde.innocraft.cloud';
$t = new PiwikTracker( $idSite = 9);
$t->setTokenAuth('12345678980');
$t->setUserAgent($_SERVER['HTTP_USER_AGENT']);
$t->setBrowserLanguage($_SERVER['HTTP_ACCEPT_LANGUAGE']);
$t->setLocalTime($local_time);
$t->setIp($_SERVER['REMOTE_ADDR']);
$t->setBrowserHasCookies(true);
$t->doTrackPageView($seitenname);
$t->setPlugins($flash = true, $java = true, $silverlight = true, $pdf = true);

Ist da was verkehrt oder zuviel?

Btw: Wie kann ich die Auflösung etc mit dem PHP-Tracker tracken?

Der Besucherfluss hat sich übrigens nicht zwischen PHP und JavaScript Tracker nicht geändert, außer die Menge. Was auffällt ist das ich ganz viele Seitenaufrufe habe mit nur einem Aufruf. Das sind meist alte Artikel. Es sind immer direkte Aufrufe mit einem Absprung. Z.B. von IP 109.230.0.0.

Die Seite hat die Hauptnutzer in Deutschland (News-Seite). Die meisten von den direkten Aufrufen kommen aus dem Ausland (Slowakei, Korea, China, Russland etc)

Grundsätzlich möchte ich den PHP-Tracker weiter verwenden, schön wäre es jedoch, wenn ich die nicht realen Besucher irgendwie filtern könnte…

Danke & Viele Grüße
Olli

Hallo,

Ich glaube auch nicht, dass es nur daran liegt (auch wenn man den Anteil nicht unterschätzen darf).

Garnicht (okay, mit umständlichen selbstgeschreibenen Lösungen)

@Olli, kannst du einmal in deine Serverlogs schauen und für einige der verdächtigen Besucher die User Agents raussuchen und hier posten. Vielleicht ist es eh ein bekannter Bot, der nur noch nicht von DeviceDetector erkannt wird.

Leider habe ich keine Ahnung von dem PHP Tracker, aber was mir hier logischer erscheint ist, dass du die Roh-Daten MIT Bots, Spider und Crawler, also allen Server Requests ohne Filter, für einen Vergleich benötigst.
Probiere mal auf der Kommandozeile (Linux) mit einem grep deiner access_log Datei das hier:
grep -v "piwik" /pfad/zu/logs/access_log | grep -o '17/Jan/2018' | wc -w
Datum und Pfad natürlich anpassen.
Vorher prüfen, wann die letzte access_log archiviert wurde.
Als Ergebnis wird eine Zahl ausgegeben. Diese Zahl zeigt dir, wie viele Server requests es (ohne mit dem Wort “piwik”) an diesem Tag gegeben hat. Vergleiche diese mit den Pageviews (Visits Overview) für diesen Tag.
Zum Vergleich: Auf einer meiner Websites sind es ~3 Mal mehr Server Requests (access_log Datei) als Pageviews (Matomo Visits Overview).
Du kannst den grep natürlich noch erweitern.
Wie genau das ist, kann ich aber auch nicht sagen.
Benutzung auf eigenes Risiko.

Habe mal eben einen Artikel geschrieben mit ein paar Kommandozeilentools zur leichteren Auswertung der Server Log access_log Dateien.


Verwendet, wenn ihr könnt, eine Kopie der access_log.

Laut Dokumentation per

setResolution()

Das von @Lukas bereits erwähnte Problem besteht darin, dass Du Breite/Höhe in php nicht hast, der Server weis beim Ausführen des Codes nicht, wie die Browserdimension ist, dass erschließt sich erst wenn später JS im Browser ausgeführt wird.

Was mich an Deinem Tracking-Code stutzig gemacht hat sind die Zeilen

$t->setBrowserHasCookies(true);
$t->setPlugins($flash = true, $java = true, $silverlight = true, $pdf = true);

Du ergänzt hier scheinbar statische Default-Werte, die nichts mit dem aktuellen Aufruf zu tun haben - bei Bots würde ich erwarten, dass "setBrowserHasCookies" bei einer Prüfung false sein müsste.
Ob das innerhalb der Auswertung zur Verwirrung führt kann ich nicht sagen, aber es wäre das Erste, was ich mal versuchsweise rausnehmen würde.

Ich bin offen gestanden nicht ganz sicher, ob Du beim Auswerten der Server Logs einfach fündig werden wirst -
am Ende triffst Du dort auf dreierlei Logs:

  1. Solche, die Matomo korrekt als Bots erkannt und nicht als Besucher gewertet hat,
  2. die fragwürdigen Aufrufe, die in Matomo beim php tracking auftauchen und
  3. die “echten” Besucher, die Du vom JS-tracking kennst.

Wie sich Dir da auf Anhieb erschließen soll, welche zur zweiten Kategorie gehören ist mir nicht klar geworden.
Um das zu beschleunigen wäre es u.U. eine Idee, das anonymisieren der IPs in Matomo für einen kurzen Zeitraum abzuschalten, um danach gezielt nach den fraglichen IPs aus der neuen Besuchergruppe in den Logs suchen zu können.
Das ist natürlich streng genommen Datenschutz-technisch tabu, ich erwähne es mal als pragmatische Möglichkeit.

Danke, das habe ich mal rausgenommen…

Hmmmm, noch so ein Thema.
Check doch mal, was deine Server Log Dateien an Statistiken hergeben. Die sind so ziemlich die genauesten.
Habe gerade einen Artikel darüber geschrieben und in einem Nachbarthema gepostet.

… mit ein paar Kommandozeilentools zur leichteren Auswertung der Server Log access_log Dateien.
https://pen-ultima.blogspot.de/2018/01/matomo-server-log-vs-javascript.html

Verwende, wenn du kannst, eine Kopie der access_log.

plugins/PrivacyManager/DoNotTrackHeaderChecker.php:

    protected function isHeaderDntFound()
    {
        return (isset($_SERVER['HTTP_X_DO_NOT_TRACK']) && $_SERVER['HTTP_X_DO_NOT_TRACK'] === '1')
            || (isset($_SERVER['HTTP_DNT']) && substr($_SERVER['HTTP_DNT'], 0, 1) === '1');
    }

Weitere Antwort hier:

Eine kleine Ergänzung noch:
Falls man alle access_logs nach user agents durchsuchen will, hilft dieses Snippet von der DeviceDetector Seite:

zcat ~/path/to/access/logs* | awk -F'"' '{print $6}' | sort | uniq -c | sort -rn | head -n20000 > /home/matomo/top-user-agents.txt

Es gibt alle eindeutigen User Agents aus.

Ich verstehe gerade überhaupt nicht, was DoNotTrack mit der frage von @MrSnuts zu tun hat, ob Piwik auch Bots ignoriert, wenn man nicht das Javascript Tracking verwendet. (Antwort ist “Ja”)

Hallo,
das Kommando habe ich mal ausgeführt.
Kann ich die Textdateien hier irgendwie hochladen?

Hallo,

Ich vermute mal, dass das Ergebnis sehr groß ist, also poste es lieber hier und schreib den Link:
https://gist.github.com

Top User Agents 18.01.2018:

Außerdem noch folgenden Befehl:
grep -v "piwik" ~/access.log.03.4 | grep -v -i "bot" | grep -v -i "crawl" | grep -v -i "spider" | grep -v -i "slurp" | grep -v -i "google" | grep -v -i "bing" | grep -v -i "yandex" | grep -w '18/Jan/2018' | awk -F\" '{print $6}' | sort | uniq -c | sort -n > sort002.txt

Hallo,

Ich habe alle Diskussionen zu @Olli’s Problem mal hierher verschoben, weil ich langsam den Überblick verliere.

Ja, danke, ging mir auch so :wink:

Hallo,

Die Liste enthält eine Menge Bots, aber alle die ich getestet habe (bis um die 200) werden von DeviceDetector erkannt.

Off-Topic:
Microsoft Office Excel 2014: !?!
AfD-Verbotsverfahren JETZT!: Eine sehr effektive Methode, seine Nachricht unter die Leute zu bringen.

@Lukas, der Kommandozeilenbefehl von DeviceDetector tut nichts anderes, als die in meinem Artikel, allerdings ohne Filter für einen bestimmten Tag und ohne Bot, Spider, Crawler Filter. Das “zcat” kann man sich sparen, sowie auch das “head -n20000”. Wichtiger Bestandteil ist das Split und Sort. Somit bekommt man eine schöne Übersicht. Das ganze kann auch mit den IPs gemacht werden, sowie vieles mehr. Einfach den awk Befehl anpassen.

Bei dem DNT Einwurf zu später Stunde habe ich wohl was durcheinander gebracht, weil ich zeitgleich einen DNT detector gebastelt habe. Ich war dem Bot Detecting schon auf der Spur, bin aber zu später Stunde nicht eindeutig fündig geworden, also habe keine Badword-Liste gefunden. Es gibt aber einige PHP Functions diesbezüglich, also das wird serverseitig erledigt, ohne Javascript.

Olli, ein Count mit und ohne Filter wäre hilfreich gewesen. Deine geposteten Files haben sehr viel mehr “Pageviews” als du “Besucher” angegeben hast, oder du hast die Befehle von mir nicht mit Datum-Filter verwendet. Zudem sind zu einem Vergleich die “Pageviews” aus Matomo nötig.
Server Log Tracking: "Schnitt 1200 Besucher am Tag."
JavaScript Tracking: "400-500 Besucher am Tag."
In der Datei ohne Filter: “61288” (Pageviews)
In der Datei mit Filter: “48291” (Pageviews)

Also bei mir kamen die Pageviews aus Matomo (Javascript Tracking) mit den Count Ergebnissen aus den Kommandozeilenbefehlen mit Filter(!) sehr nahe. Eines passte sogar genau. Bei einem anderen mit Brut Force Attacks überhaupt nicht.

Bezüglich Blacklist bin ich jetzt fündig geworden und habe meinen Artikel nochmal überarbeitet, mehr hilfreiche Befehle und Infos zur Blacklist von Matomo und Fake User Agents von Spam-Bots und Brute Force Attacks.


Habe unter anderem ein Wordpress am laufen. Die Brut Force Attacken machen da den Großteil der Server Log Einträge aus.
Im Quellcode von Matomo habe ich keine Funktion zur Erkennung und Filterung von Fake User Agents gefunden, aber die Bot-Blacklist.
/piwik/vendor/piwik/device-detector/regexes/bots.yml

Hallo,
Eine kleine Begriffserklärung für alle um die Verwirrung aufzuklären. Matomo parst seit den Anfangszeiten den User Agent um die Browser/OS und ähnlichen Reports zu erstellen. Zusätzlich werden auch Bots erkannt.
Da diese Liste die mit jedem Matomo Update größer geworden ist und auch anderen Entwicklern helfen kann, wurde sie unter dem Namen DeviceDetector in einen eigenen Programmteil ausgelagert.
Die Datei die du gefunden hast, ist ein Teil davon und beinhaltet alle regex zur Erkennung.

Matomo verwendet diese Liste um Bots zu erkennen und nicht in der Statistik zu inkludieren.

Falls der User Agent von einem Bot nicht erkannt wird (was man unter http://devicedetector.net/ testen kann), macht ihr @SteveG eine Freude, wenn ihr dort ein Github Issue mit Details aufmacht (oder gleich einen Pull Request mit Tests).

Bots ohne markanten UserAgents zu erkennen wird schwieriger, da jeder Filter nicht eindeutig ist und auch echte Nutzer erwischen kann.