Erkennen von Browser-Spoofing und Robotern aus einer User-Agent-Zeichenfolge in PHP

8

Bisher bin ich in der Lage, Roboter aus einer Liste von User-Agent-Strings zu erkennen, indem ich diese Strings mit bekannten User-Agents abgleiche, aber ich frage mich, welche anderen Methoden es gibt, um php zu verwenden, da ich weniger Bots als erwartet abrufe diese Methode.

Ich möchte auch herausfinden, wie man erkennen kann, ob ein Browser oder ein Roboter einen anderen Browser mit einem User-Agent-String spoofiert.

Jeder Rat wird geschätzt.

EDIT: Dies muss mit einer Protokolldatei mit Zeilen wie folgt geschehen:

129.173.129.168 - - [11 / Okt. / 2011: 00: 00: 05 -0300] "GET /cams/uni_ave2.jpg?time=1318302291289 HTTP / 1.1" 200 20240 "http: //faculty.dentistry. dal.ca/loanertracker/webcam.html "" Mozilla / 5.0 (Macintosh; U; PPC Mac OS X 10.4; de-US; rv: 1.9.2.23) Gecko / 20110920 Firefox / 3.6.23 "

Das bedeutet, dass ich neben den Zugriffszeiten das Benutzerverhalten nicht überprüfen kann.

    
user1422508 14.11.2012, 03:57
quelle

5 Antworten

13

Zusätzlich zum Filtern von Schlüsselwörtern in der User-Agent-Zeichenfolge hatte ich Glück, einen versteckten Honigtopf-Link auf allen Seiten zu platzieren:

%Vor%

Dann in "autocatch.php" notieren Sie die Sitzung (oder IP-Adresse) als Bot. Dieser Link ist für Benutzer unsichtbar, aber seine versteckte Eigenschaft wird von Bots hoffentlich nicht realisiert. Wenn Sie das style-Attribut herausnehmen und es in eine CSS-Datei einfügen, hilft das vielleicht noch mehr.

    
laifukang 14.11.2012 04:09
quelle
5

Weil, wie bereits erwähnt, Sie User-Agents & amp; IP, diese können nicht für eine zuverlässige Bot-Erkennung verwendet werden.

Ich arbeite für eine Sicherheitsfirma und unser Bot-Erkennungsalgorithmus sieht ungefähr so ​​aus:

  1. Schritt 1 - Sammeln von Daten:

    a. Überprüfen Sie User-Agent vs IP. (beide müssen richtig sein)

    b. Überprüfen Header-Parameter (was fehlt, was ist die Reihenfolge und etc ...)

    c. Überprüfen Sie das Verhalten (früherer Zugriff und Einhaltung der robots.txt, allgemeines Verhalten, Anzahl der besuchten Seiten, Besuchsraten usw.)

  2. Schritt 2 - Klassifizierung:

    Durch die Verifizierung der Daten wird der Bot als "Gut", "Schlecht" oder "Verdächtig" eingestuft

  3. Schritt 3 - Aktive Herausforderungen:

    Verdächtige Bots unterliegen folgenden Herausforderungen:

    a. JS Challenge (kann es JS aktivieren?)

    b. Cookie Challenge (kann es Coockies akzeptieren?)

    c. Wenn immer noch nicht schlüssig - & gt; CAPTCHA

Dieser Filtermechanismus ist SEHR effektiv, aber ich glaube nicht, dass er von einer einzelnen Person oder sogar einem unspezialisierten Anbieter repliziert werden könnte (für eine Sache müssen Herausforderungen und Bot-DB ständig vom Sicherheitsteam aktualisiert werden).

Wir bieten eine Art "do it yourself" -Tools in Form von Botopedia.org , unserem Verzeichnis, das für IP / verwendet werden kann. User-Name Cross-Verification, aber für eine wirklich effiziente Lösung müssen Sie sich auf spezialisierte Services verlassen.

Es gibt mehrere kostenlose Bot-Überwachungslösungen, einschließlich unserer eigenen, und die meisten werden die gleiche Strategie verwenden, die ich oben beschrieben habe (oder ähnlich).

GL

    
Igal Zeifman 14.11.2012 11:51
quelle
4

Über den Vergleich von Benutzeragenten hinaus würden Sie ein Protokoll der Aktivität führen und nach Roboterverhalten suchen. Oft beinhaltet dies das Überprüfen auf /robots.txt und das Laden von Bildern. Ein weiterer Trick besteht darin, den Kunden zu fragen, ob er JavaScript hat, da die meisten Bots ihn nicht als aktiviert markieren.

Aber Vorsicht, Sie könnten aus Versehen einige Menschen bekommen, die wirklich Menschen sind.

    
Kyros 14.11.2012 04:03
quelle
2

Nein, Benutzeragenten können gefälscht werden, damit sie nicht vertrauenswürdig sind.

Zusätzlich zur Suche nach Javascript- oder image / css-Ladevorgängen können Sie auch die Seitenladegeschwindigkeit messen, da Bots Ihre Website normalerweise schneller crawlen werden als jeder menschliche Besucher herumspringen würde. Aber das funktioniert nur für kleine Sites, populäre Sites, die viele Besucher hinter einer geteilten externen IP-Adresse (große Corporation oder Universitätsgelände) haben, könnten Ihre Site mit Bot-ähnlichen Raten erreichen.

Ich nehme an, Sie könnten auch die Reihenfolge messen, in der sie geladen werden, während Bots in einer ersten Crawl-Reihenfolge crawlen würden, wo menschliche Benutzer normalerweise nicht in dieses Muster passen, aber das ist etwas komplizierter zu verfolgen     

WebChemist 14.11.2012 04:14
quelle
1

Ihre Frage bezieht sich speziell auf die Erkennung mithilfe der User-Agent-Zeichenfolge. Wie viele schon erwähnt haben, kann dies verpönt werden.

Um zu verstehen, was beim Spoofing möglich ist, und um zu sehen, wie schwierig es zu erkennen ist, sollten Sie die Kunst in PHP mit cURL am besten lernen.

Im Wesentlichen mit cURL fast alles, was in einem Browser (Client) Anfrage gesendet werden kann, mit der bemerkenswerten Ausnahme der IP gefälscht werden kann, aber auch hier versteckt sich ein bestimmter Spoofer auch hinter einem Proxy-Server, um Ihre Erkennung zu beseitigen IP.

Es versteht sich von selbst, dass die Verwendung der gleichen Parameter bei jeder Anforderung die Erkennung eines Spoofers ermöglicht, aber das Rotieren mit verschiedenen Parametern macht es sehr schwierig, wenn nicht unmöglich, Spoofer unter echten Verkehrsprotokollen zu erkennen / p>     

T9b 18.03.2013 15:39
quelle

Tags und Links