Bot-Erkennung...
Gunnar
- php
Moin!
Ich protokolliere jeden Zugriff für meine Homepage. Da die natürlich auch von Suchmaschinen etc. durchforstet wird, möchte ich in meinem Protokoll am liebsten direkt in einem Feld einen Hinweis unterbringen, wenn es sich um einen Bot handelt.
Es geht mir nicht darum, die Dinger auszuschließen, aber für meine Statistik wäre es wichtig, nach Besucher und Bot unterscheiden zu können.
Jetzt gibt es ja z.B. bei Forensoftware direkte Angaben, ob ein Besucher ein Bot ist- nur, wie machen die das?
Kann ich anhand einer bestimmten IP-Ziffer oder sonstiger Merkmale, die beim Klicken auf meine Seite abfragbar wären, feststellen ob es ein Bot ist?
Bin für jeden Tip dankbar, vielleicht ist so etwas ja schnell umsetzbar!
Hi,
Kann ich anhand einer bestimmten IP-Ziffer oder sonstiger Merkmale, die beim Klicken auf meine Seite abfragbar wären, feststellen ob es ein Bot ist?
User Agent ist dein Stichwort.
Allerdings ist das alles nicht 100%, da ich mich durch ändern meines User Agents z.B. auch selber als Suchmaschine ausgeben kann etc.
~dave
Hi!
Ich hab schon einige 'Bots' geschrieben. Die wurden bisher auch nicht erkannt. Ob beim unendlichen craften beim Onlinegame (Star Wars Galaxies war da furchtbar) oder beim Abgrasen von Internetseiten. Das Spiel koennte einen craftbot daran erkennen, dass er sehr regelmaessig immer auf die gleichen Koordinaten einer Taste klickt. Das hat mein Bot aber nicht. Deshalb muesste das Spiel in meinem System schnueffeln, ob grad z.B. Auto-It laeuft. Webseiten kkoennen, wie schon erwaehnt, zwar checken welcher User Agent grad wirklich was macht, aber die Angabe ist faelschbar und wenn ich eh einen standard Browser benutze sowieso hinfaellig.
Soetwas wie eine 'Bot-IP' gibts nicht. Woher auch?
Was kannst Du machen, um einen Bot zu erkennen? Wenn er auf das von Dir benutzte System zugeschnitten ist, gar nichts. Fuer Bots die wild in der Gegend rumspammen oder Suchmaschinenspider kannst Du versuchen einige 'Fallen' aufzustellen. Fuer User nicht sichtbare Inputfelder, die der Bot dann ausfuellt und aehnliches. Tipps findest Du im Archiv und auch per Google zuhauf.
Soetwas wie eine 'Bot-IP' gibts nicht. Woher auch?
Google hat eine Reihe von IP-Adressen die ausschließlich der Google-Bot verwendet.
Soetwas wie eine 'Bot-IP' gibts nicht. Woher auch?
Google hat eine Reihe von IP-Adressen die ausschließlich der Google-Bot verwendet.
Okay. Dennoch gibts keine allgemeinen Botadressen. Wir reden hier ja nicht nur von Suchmaschinenbots, denke ich.
moin,
Es geht mir nicht darum, die Dinger auszuschließen, aber für meine Statistik wäre es wichtig, nach Besucher und Bot unterscheiden zu können.
Ich erfasse meine Stats mit Ajax. Da sind die Bots gar nicht erst "dabei".
Hotti
Ich erfasse meine Stats mit Ajax. Da sind die Bots gar nicht erst "dabei".
Der Google-Bot kann bei meinen Seiten seit geraumer Zeit sowohl mit einfachen JavaScript-"Links" (onclick) alsauch mit Cookies umgehen.
Ich erfasse meine Stats mit Ajax. Da sind die Bots gar nicht erst "dabei".
Der Google-Bot kann bei meinen Seiten seit geraumer Zeit sowohl mit einfachen JavaScript-"Links" (onclick) alsauch mit Cookies umgehen.
Danke für den Hinweis. Da werde ich wohl doch mal ne Spalte für den USER_AGENT anlegen um das mitzukriegen, wollte ich schon längst mal gemacht haben ;-)
Hotti
Ola!
Jetzt gibt es ja z.B. bei Forensoftware direkte Angaben, ob ein Besucher ein Bot ist- nur, wie machen die das?
Kann ich anhand einer bestimmten IP-Ziffer oder sonstiger Merkmale, die beim Klicken auf meine Seite abfragbar wären, feststellen ob es ein Bot ist?
Da gibt es Diverses:
Nichts davon ist 100%ig zuverlässig (am wenigsten der User-Agent-Header), aber für eine Statistik sollte es ausreichen. JavaScript-/Ajax-Fähigkeiten würde ich schon nicht mehr als Merkmal dazunehmen; da halte ich die Fehlerquote für zu hoch.
Viele Grüße vom Længlich
Hello,
Nichts davon ist 100%ig zuverlässig (am wenigsten der User-Agent-Header), aber für eine Statistik sollte es ausreichen. JavaScript-/Ajax-Fähigkeiten würde ich schon nicht mehr als Merkmal dazunehmen; da halte ich die Fehlerquote für zu hoch.
Was ist denn bei Robots üblich bezüglich der Folgerequests?
Holt sich ein Robot sofort die ganze Seite nebst in dieser vermerkten Image-, Link- und weiteren Elementen, oder holt er diese erst später?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Was ist denn bei Robots üblich bezüglich der Folgerequests?
Holt sich ein Robot sofort die ganze Seite nebst in dieser vermerkten Image-, Link- und weiteren Elementen, oder holt er diese erst später?
Kommt drauf an - feratel kommt z.B. vorbei, dann dauerts ein paar Minuten und irgend ein Crawler mit einem Java-User-Agent ruft alle links auf die er irgendwie finden kann.
Slurp (Yahoo) kommt sporadisch zwischendurch mal vorbei und sucht ein paar Seiten auf - folgerequests sind so nicht wirklich erkennbar.
- User-Agent-Header bekannter Bots. Bei vielen unbekannten Bots steht auch irgendwas mit "bot" oder "robot" drin.
Ich würde mich nicht darauf verlassen, dass nicht irgend ein Browser oder oder ein Proxy zufällig den string "bot" enthält :)
Da muss man höllisch aufpassen: Nachbarschaft (arsch) oder specialist (cials) sind Dinge die z.B. von Spamfiltern schnell mal als indiz herangezogen werden.
- Wer die robots.txt anfragt, ist höchstwahrscheinlich ein Bot.
Oder jemand der neugierig ist um zu erfahren, was Bots nicht lesen/indizieren sollen :) um es dann selbst zu lesen.
- Wer Formulare in Secundenbruchteilen ausfüllt und abschickt, ist so gut wie sicher ein Bot.
Oder jemand der mit automatisch ausgefüllten Formularen arbeitet (Opera kann das) und einfach nur den submit-Button klicken muss.
Shalom!
Ich würde mich nicht darauf verlassen, dass nicht irgend ein Browser oder oder ein Proxy zufällig den string "bot" enthält :)
Ja, "bot" ist vielleicht ein bißchen zu gefährlich, "robot" dagegen dürften wirklich sehr überwiegend Bots sein.
Da muss man höllisch aufpassen: Nachbarschaft (arsch) oder specialist (cials) sind Dinge die z.B. von Spamfiltern schnell mal als indiz herangezogen werden.
Stimmt. Aus solchen Gründen hat es sich ja bewährt, Punkte zu vergeben, und die Nachricht nicht gleich wegen eines solchen Merkmals zu entsorgen.
- Wer die robots.txt anfragt, ist höchstwahrscheinlich ein Bot.
Oder jemand der neugierig ist um zu erfahren, was Bots nicht lesen/indizieren sollen :) um es dann selbst zu lesen.
Klar, aber das ist wohl wesentlich weniger wahrscheinlich als ein echter Bot.
- Wer Formulare in Secundenbruchteilen ausfüllt und abschickt, ist so gut wie sicher ein Bot.
Oder jemand der mit automatisch ausgefüllten Formularen arbeitet (Opera kann das) und einfach nur den submit-Button klicken muss.
Wenn ich etwas längeres schreibe, tue ich das meistens im Texteditor und kopiere den Text dann in das Textfeld, um zu verhindern, daß er verloren ist, wenn die Session zwischenzeitlich den Geist aufgegeben hat. Mit Reload + Paste + Submit bin ich dann auch verdächtig schnell.
Aber hier geht es ja gar nicht um die zuverlässige Klassifizierung einzelner Clients (die wohl unmöglich ist), sondern um eine Statistik. Und um Maßnahmen, mit denen man ungefähr abschätzen kann, wie viele Besucher nun Bots sind. Mit den genannten Möglichkeiten sollte die Statistik näher an der Realität sein als wenn man gar keine Bot-Erkennung versucht, und ganz exakt wird so eine Statistik eh nie.
Viele Grüße vom Længlich
Wenn ich etwas längeres schreibe, tue ich das meistens im Texteditor und kopiere den Text dann in das Textfeld, um zu verhindern, daß er verloren ist, wenn die Session zwischenzeitlich den Geist aufgegeben hat. Mit Reload + Paste + Submit bin ich dann auch verdächtig schnell.
Falscher Browser :D
Wenn ich etwas längeres schreibe, tue ich das meistens im Texteditor und kopiere den Text dann in das Textfeld, um zu verhindern, daß er verloren ist, wenn die Session zwischenzeitlich den Geist aufgegeben hat. Mit Reload + Paste + Submit bin ich dann auch verdächtig schnell.
Falscher Browser :D
Die Methode von Længlich wird in 100 Jahren noch gut funktionieren (neben kleinen Nebeneffekten, dass man vieleicht noch eine Kopie aufbewahrt etc.) während du dich auf der unendlichen Suche nach dem "richten Brower" befindest ... ebenfalls :D
She:kon!
Die Methode von Længlich wird in 100 Jahren noch gut funktionieren (neben kleinen Nebeneffekten, dass man vieleicht noch eine Kopie aufbewahrt etc.) während du dich auf der unendlichen Suche nach dem "richten Brower" befindest ... ebenfalls :D
Vor allem hat sie auch schon vor Jahren funktioniert. ;-)
Ich habe mit Windows 3.1 unter MS-DOS angefangen, dann Win 95, dann 98, dann XP verwendet. Einige Angewohnheiten sind eben noch aus einer Zeit, wo ich immer mit Abstürzen und Datenverlust gerechnet habe. Daß sich heutzutage viele meiner Programme auch Sachen merken, die ich nicht explizit gespeichert hatte, Daten nach einem Absturz wieder retten können, sowieso seltener abstürzen etc. pp., freut mich alles sehr, aber ich fühle mich trotzdem immer noch am wohlsten, wenn ich alle paar Minuten speichere.
Viele Grüße vom Længlich
Moin!
Ich protokolliere jeden Zugriff für meine Homepage. Da die natürlich auch von Suchmaschinen etc. durchforstet wird, möchte ich in meinem Protokoll am liebsten direkt in einem Feld einen Hinweis unterbringen, wenn es sich um einen Bot handelt.
Ich halte es für sinnvoll, alle zum Zeitpunkt des Zugriffs verfügbaren Daten
zu speichern (zum Beispiel auch eine Namensauflösung der IP vornehmen, weil
sich der Name später änderen könnte).
Ob es ein Bot oder ein Benutzer war, kannst du dann Jahre später noch durch
eine gschickte Abfrage deiner Daten herausbekommen.
Speicherst du hingegen zum Zeitpunkt des Zugriffs interpretierte Daten,
und du machst zum Zeitpunkt der Interpretation einen Fehler, dann speicherst
du Müll der wertlos ist ...
Eine Tabellenspalte Bot(Boolean) o. ä. ist m. erachtens überflüssig ...
Moin!
Ich protokolliere jeden Zugriff für meine Homepage. Da die natürlich auch von Suchmaschinen etc. durchforstet wird, möchte ich in meinem Protokoll am liebsten direkt in einem Feld einen Hinweis unterbringen, wenn es sich um einen Bot handelt.
Ich halte es für sinnvoll, alle zum Zeitpunkt des Zugriffs verfügbaren Daten
zu speichern (zum Beispiel auch eine Namensauflösung der IP vornehmen, weil
sich der Name später änderen könnte).Ob es ein Bot oder ein Benutzer war, kannst du dann Jahre später noch durch
eine gschickte Abfrage deiner Daten herausbekommen.Speicherst du hingegen zum Zeitpunkt des Zugriffs interpretierte Daten,
und du machst zum Zeitpunkt der Interpretation einen Fehler, dann speicherst
du Müll der wertlos ist ...Eine Tabellenspalte Bot(Boolean) o. ä. ist m. erachtens überflüssig ...
Das von Langarm vorgeschlagene Punktesystem scheint mir für eine spätere Auswertung am sinnvollsten zu sein. Alle Kriterien, die auf einen Bot hindeuten mit einem Punktwert bewerten. Und dann in den gespeicherten Daten wühlen:
select
von vorgestern
bis übermorgen
alle Adressen die
(nach Gewichtunssystem aus Forum)
mehr als 25 Punkte haben
Dann kannst du auch schnell mal die Gewichtung des Punktesystems änderen oder dir Beispielsweise Adressen ausgeben lassen die mehr als 30 Punkt ahben und und und