Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BotTracker Tabellen leer #38

Open
anwaltde opened this issue Nov 2, 2015 · 16 comments
Open

BotTracker Tabellen leer #38

anwaltde opened this issue Nov 2, 2015 · 16 comments

Comments

@anwaltde
Copy link

anwaltde commented Nov 2, 2015

Hi,

Nachdem mit der neuen Version der BotTracker nun zu laufen scheint, bleiben jedoch die Tabellen leer.

Wir importieren alle 5 Minuten ein Logfile.

python /var/www/html/piwik/misc/log-analytics/import_logs.py --url=http://localhost/piwik/ --idsite=1 --recorders=4 --add-sites-new-hosts --enable-http-errors --enable-http-redirects --enable-static --enable-bots --enable-reverse-dns --log-format-name common_complete /var/log/varnish/varnish.log >/dev/null 2>&1

Liegt es evtl. am Custom Format?

www.anwalt.de 66.249.75.100 - - [02/Nov/2015:10:40:11 +0100] "GET http://www.anwalt.de/verzeichnis/rechtsanwaelte.php?stadt=Willich&thema=Instandhaltungspflicht&cityid=6720&distance=30&lat=51.264961&lon=6.551767&p=3&sr=664567 HTTP/1.1" 200 12303 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

www.anwalt.de 66.249.75.92 - - [02/Nov/2015:10:40:34 +0100] "GET http://www.anwalt.de/verzeichnis/rechtsanwaelte.php?stadt=Ilsede&thema=Kaufvertrag&cityid=7262&pid=7 HTTP/1.1" 200 6568 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Gruß

Sascha

@Thomas--F
Copy link
Owner

Ich fürchte, es liegt an Piwik bzw. dem Logfile-Import. Beim Import werden entweder die Hooks nicht korrekt abgearbeitet oder der UserAgend-String kommt anders als erwartet.

Das BotTracker-Plugin arbeitet bisher nur, wenn die Webseite über die PHP-API getracked wird.
Ich werde aber den Import mal genauer testen. Vielleicht kommt der UserAgend ja doch in einer Variable mit.

@e-dschungel
Copy link

Ich habe das Problem auch mit dem Standard-Apache-Logformat.
Gibt es schon neuere Erkenntnisse hierzu?

@Thomas--F
Copy link
Owner

Ich hab den LOG-Import mal getestet und herausgefunden, dass als "user agent" immer "Piwik/LogImport" ankommt. Eine Ermittlung von Bots anhand des user-agent-Strings ist damit unmöglich.

Wenn jemand einen Weg kennt, beim Log-Import an den user agent, die siteID und die URL zu kommen kann ich was machen.
Bisher hole ich die Daten über $_REQUEST[...] bzw. $_SERVER[...]

@anwaltde
Copy link
Author

@Thomas--F Könntest du mir sagen, wo ich die user-agents bzw. den Eintrag "Piwik/LogImport" finde? Würde das gerne nachstellen und testen

Hat sich erledigt: /var/www/html/piwik/tmp/logs/log.txt

@e-dschungel
Copy link

Der dem Importskript übergebene Useragent "Piwik/LogImport" ist hier hart kodiert:
https://github.com/piwik/piwik-log-analytics/blob/f15f7271439380dbc7366aa117d3c8add358c264/import_logs.py#L1226

Einen anderen Weg an den Useragent zu kommen kenne ich leider nicht. Vielleicht sollten wir einen Bugreport/Featurerrequest bei Piwik einreichen?

@tillsteinbach
Copy link

Wenn beim Importer "--enable-bots" gesetzt ist haben die Einträge eine "Bot" oder "Not-Bot" variable in der der original User-Agent steht. Kann man das vielleicht nutzen?

@Thomas--F
Copy link
Owner

Hast du da eine Beschreibung oder ein Beispiel?
Wenn der Agent im Plugin ankommt kann ich den auf jeden Fall auswerten.

@tillsteinbach
Copy link

tillsteinbach commented Jun 24, 2016

Ich bin da nicht tief im code, aber es sind jeweils "Benutzerdefinierte Variablen" mit dem User-Agent. Sofern das Plugin auf Benutzerdefinierte Variablen zugreifen kann, sollte das klappen.

Du musst irgendwie in deinem Callback an "$visit" kommen, da sollte es dann $visitor['customVariables'] geben. Irgendwie muss es ja Mechanismen geben um an den $visit zu kommen, denn sonst wird dem Hook ja nichts übergeben. So richtig tief bin ich aber nicht in den APIs, sorry

Allerdings müsste dann auch die benutzerdefinierte Variable schon vor dem Hook gesetzt sein. Schwierig, schwierig. Ansonsten muss der Log-Importer die variable ja auch im Request mitschicken. Dann steht sie vermutlich irgendwo als "_cvar": "_cvar — Visit scope custom variables. This is a JSON encoded string of the custom variable array (see below for an example value)."

@e-dschungel
Copy link

In dem aktuell benutzten Hook isExcludedVisit gibt es IMHO keine Möglichkeit an $visit zu kommen. Der Hook bekommt nur eine Referenz auf einen bool übergeben, der sagt, ob der Besuch geloggt wird oder nicht. Evtl. kann man den Hook makeNewVisitObject benutzen?

@Thomas--F
Copy link
Owner

Thomas--F commented Aug 14, 2016

Die Hauptaufgabe des Plugins soll es ja sein, die Bots aus dem normalen Besucherlog auszuschließen, daher der Hook "isExcludedVisit".
Ich habe jetzt 2 Stunden nach einer Möglichkeit gesucht, aus dem Import-Script an die CustomVariable "Bot" bzw "Not-bot" zu kommen - bisher ohne Erfolg. Ich bekomme ja nicht mal die SiteID übergeben.

Der Hook "makeNewVisitObject" greift aber erst später und dann kann ich den Bot nicht mehr sauber ausschließen.
Aktuell sehe ich keine sinnvolle Lösung für das Problem.
Möglicherweise hilft ein FeatureRequest in Piwik um beim Aufruf im den Hook "isExcludedVisit" den UserAgent und die siteID direkt übergeben zu bekommen. Vorhanden sind die Daten und die Änderung ist leicht (habe ich gerade getestet).
Zeile 93 in core/Tracker/VisitExcluded.php:
Piwik::postEvent('Tracker.isExcludedVisit', array(&$excluded, $this->idSite, $this->userAgent));
Beide Werte kommen dann auch sauber im Plugin an.

Update:
Besser direkt das Array "$this->request", da ist alles drin, was ich brauche:
Piwik::postEvent('Tracker.isExcludedVisit', array(&$excluded, $this->request, $this->userAgent));

@tillsteinbach
Copy link

Ich würde das sehr begrüßen und den Feature Request unterstützen.

@e-dschungel
Copy link

Ich habe mal einen Issue bei Piwik aufgemacht: matomo-org/matomo#10415

@e-dschungel
Copy link

Piwik 2.16.3 enthält den erweiterten Hook.

Thomas--F added a commit that referenced this issue Oct 3, 2016
Thomas--F added a commit that referenced this issue Oct 3, 2016
@Thomas--F
Copy link
Owner

Ich habe den Fix jetzt im master-branch eingestellt. Der lokale Test bei mir hat funktioniert.
Hat jemand von euch Zeit, die Änderung zu testen bevor ich den Code freigebe?

@e-dschungel
Copy link

e-dschungel commented Oct 21, 2016

Auch in meinem Test funktioniert soweit alles.
Scheinbar ist "letzter Zugriff" immer die aktuelle Zeit beim Logimport. Ist das ein Bug oder so gewollt?

@Thomas--F
Copy link
Owner

Aktuell ist das mit der "Zugriffszeit" erstmal so. Ich muss noch etwas suchen und testen, wie ich eine sinnvolle Zugriffszeit bekomme.
Im Server-Log steht ja zumindest sekundengenau der Zugriff. Mal sehen, ob der immer im gleichen Format kommt und ob ich den einfach in einen Timestamp umwandeln kann.
Das folgt dann aber im nächsten Release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants