14 Stimmen

Wie kann ich Bots programmatisch erkennen?

Wir haben eine Situation, in der wir Besuche und Besucher auf Seitenaufrufen protokollieren und Bots unsere Datenbank verstopfen. Wir können keine Captcha oder andere Techniken wie diese verwenden, weil dies ist, bevor wir überhaupt nach menschlicher Eingabe fragen, im Grunde protokollieren wir Seitenzugriffe und wir möchten nur Seitenzugriffe von Menschen protokollieren.

Gibt es eine Liste mit bekannten Bot-IPs? Funktioniert die Überprüfung bekannter Bot-Benutzer-Agenten?

19voto

Guffa Punkte 663241

Es gibt keine sichere Methode, um alle Bots zu erwischen. Ein Bot könnte sich genauso verhalten wie ein echter Browser, wenn jemand das wollte.

Die meisten ernstzunehmenden Bots identifizieren sich eindeutig in der Agentenzeichenfolge, so dass Sie mit einer Liste bekannter Bots die meisten von ihnen ausfindig machen können. Zu der Liste können Sie auch einige Agent-Strings hinzufügen, die einige HTTP-Bibliotheken standardmäßig verwenden, um Bots von Leuten abzufangen, die nicht einmal wissen, wie man den Agent-String ändert. Wenn Sie nur die Agent-Strings der Besucher protokollieren, sollten Sie in der Lage sein, diejenigen herauszufiltern, die in der Liste gespeichert werden sollen.

Sie können auch eine "Bösewichtfalle" aufstellen, indem Sie einen versteckten Link auf Ihre Seite setzen, der zu einer Seite führt, die in Ihrer robots.txt-Datei herausgefiltert ist. Seriöse Bots würden dem Link nicht folgen, und Menschen können ihn nicht anklicken, sodass nur Bots, die die Regeln nicht befolgen, die Datei anfordern.

9voto

RHSeeger Punkte 15604

Das hängt von der Art des Bots ab, den Sie aufspüren wollen:

1voto

dc2009 Punkte 842

Können Sie Request.Browser.Crawler verwenden, um Crawler programmatisch zu erkennen;

Halten Sie Ihre Liste der anerkannten Crawler vorzugsweise auf dem neuesten Stand, wie hier beschrieben http://www.primaryobjects.com/cms/article102.aspx

0voto

Assaf Lavie Punkte 67504

Ich denke, dass viele Bots anhand des User-Agents identifizierbar sind, aber sicher nicht alle. Eine Liste bekannter IPs - darauf würde ich mich auch nicht verlassen.

Ein heuristischer Ansatz könnte funktionieren. Bots sind in der Regel viel schneller beim Verfolgen von Links als Menschen. Vielleicht können Sie die IP eines jeden Kunden verfolgen und die durchschnittliche Geschwindigkeit ermitteln, mit der er Links folgt. Wenn es ein Crawler ist, folgt er wahrscheinlich jedem Link sofort (oder zumindest viel schneller als Menschen).

0voto

berkay Punkte 3839

Ich glaube nicht, dass es eine Liste von Botnet-IP-Adressen geben wird. Botnet-IP-Adressen sind nicht statisch, und niemand weiß, wer die Bots sind, einschließlich der Nutzer, die sich wie Bots verhalten.

Ihre Frage ist im Moment wohl ein heißes Forschungsgebiet Ich bin neugierig, ob jemand eine Lösung für dieses Problem finden kann.

Sie können jede Art von Technik verwenden und verstehen, ob es sich um einen Menschen handelt oder nicht, dann können Sie die Protokolle erhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X