2010-11-05 10 views
10

Die Zeit vergeht, aber immer noch keine perfekte Lösung ... Sehen Sie, ob jemand eine gute Idee hat, Bot von menschlich geladenen Web-Seite zu unterscheiden? State of the Art lädt immer noch eine lange Liste von bekannten SE-Bots und Parser USER AGENT?Der beste Weg, Bot vom User Agent zu erkennen?

Der Test muss durchgeführt werden, bevor die Seite geladen wird! Keine Gifs oder Captchas!

+0

möglich Duplikat von [Tell Bots abgesehen von menschlichen Besuchern für Statistiken?] (Http://stackoverflow.com/questions/1717049/tell-bots-apart-from-human-visitors-for-stats) –

+0

Pekka, ja es ist sehr ähnlich! Aber da drüben gab es keine akzeptierte Lösung ... wer weiß, vielleicht kann uns jemand diesmal aufklären? :-) – Riccardo

Antwort

1

Der User Agent wird vom Client gesetzt und kann somit manipuliert werden. Ein bösartiger Bot würde Ihnen also sicher keinen I-Am-MalBot User Agent schicken, sondern sich selbst eine Version von IE nennen. Die Verwendung des Benutzeragenten zur Verhinderung von Spam oder ähnlichem ist daher sinnlos.

Also, was möchten Sie tun? Was ist dein letztes Ziel? Wenn wir das wüssten, könnten wir besser helfen.

+0

Ich muss USER-Statistiken sammeln, nicht-menschliche User-Agenten herausfiltern, möchte dies alleine tun, keine Tools wie Google Analytics, bitte! – Riccardo

+0

Obwohl dies ein nützlicher Artikel an sich ist, gilt es nicht als _answer_; Wäre als Kommentar besser geeignet gewesen, meiner Meinung nach. –

+0

@Core: Nein, das ist kein Kommentar. Ich antworte, dass er das Problem auf diese Weise nicht lösen kann. Zumindest gibt es keinen Grund für einen Downvote. – NikiC

3

Ohne eine Herausforderung (wie CAPTCHA), schießen Sie nur im Dunkeln. Der Benutzeragent kann trivialerweise auf eine beliebige Zeichenfolge eingestellt werden.

4

Wenn möglich, würde ich einen honeypot Ansatz zu diesem versuchen. Es wird für die meisten Benutzer unsichtbar sein und wird viele Bots entmutigen, auch wenn sie nicht funktionieren werden, da sie speziellen Code für Ihre Seite implementieren könnten, der das Honeypot-Feld übersprungen hat, sobald sie Ihr Spiel herausgefunden haben. Aber es würde viel mehr Aufmerksamkeit von den Besitzern des Bot erfordern, als es sich für die meisten wahrscheinlich lohnt. Es wird Tonnen von anderen Websites geben, die Spam ohne zusätzlichen Aufwand akzeptieren.

Eine Sache, die von Zeit zu Zeit übersprungen wird, ist, dass der Bot denkt, dass alles gut gelaufen ist, keine Fehlermeldungen oder Seitenverweigerung, einfach die Seite wie für jeden anderen Benutzer neu laden, außer überspringen Hinzufügen des Bots-Inhalts zur Site. Auf diese Weise gibt es keine roten Flaggen, die in den Bots-Logs aufgenommen werden können und auf die der Besitzer reagiert, es wird viel mehr Nachforschungen anstellen, um herauszufinden, dass Sie die Kommentare ablehnen.

+1

Honeypots sind ein ziemlich guter Ansatz für den Umgang mit automatisierten "lässigen" Webspidern Natürlich können sie nicht mit irgendeiner gezielten Bot-Aktivität helfen. – Gareth

+0

Ja, ich denke nicht, dass hier der Kampf gegen bösartige Bots endet, aber dies ist ein guter erster Schritt, und es kann Ihre Seite für eine Weile Spam freihalten, bis Sie wirklich populär werden und Bots beginnen, Sie anzugreifen speziell, dann musst du dein Spiel ein wenig aufwerten. –

+0

Gut für Formulare .... – Riccardo

1

Die Entwickler von SO sollten wissen, warum sie Captcha verwenden, um zu verhindern, dass Bots Inhalte bearbeiten. Der Grund ist, dass es tatsächlich keine Möglichkeit gibt, sicher zu sein, dass ein Client kein Bot ist. Und ich denke, dass es nie geben wird.

1

Ich selbst codiert Web-Crawler für verschiedene Zwecke. Und ich benutze einen Webbrowser UserAgent.

Soweit ich weiß, können Sie Bots nicht von Menschen unterscheiden, wenn ein Bot einen legitimen UserAgent verwendet. Wie:

Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Chrome/9.0.570.1 Safari/534.11 

Das einzige, woran ich denken kann, ist JavaScript. Die meisten benutzerdefinierten Web-Bots (wie die, die ich code) können JavaScript-Codes nicht ausführen, weil es ein Browser-Job ist. Aber wenn der Bot verlinkt ist oder einen Webbrowser verwendet (wie Firefox), dann wird es unentdeckt bleiben.

+0

Benutzerdefinierte Web-Bots sicherlich * konnte Javascript ausführen, auch wenn sie nicht in einem grafischen Browser ausgeführt werden – Gareth

+0

@Gareth ich stimme zu, meine Antwort bearbeitet. Ich beziehe mich eigentlich auf einfache Scraper, die kein Javascript benötigen. Ich denke, die Mehrheit von denen nicht. – Ruel

1

Was die anderen gesagt haben, stimmt in gewissem Maße ... Wenn ein Bot-Hersteller möchte, dass Sie denken, dass ein Bot ein echter Benutzer ist, gibt es keine Möglichkeit, das zu vermeiden. Aber viele der bekannten Suchmaschinen identifizieren sich selbst. Es gibt eine Liste hier (http://www.jafsoft.com/searchengines/webbots.html) unter anderem. Sie könnten diese in eine Datenbank laden und dort suchen. Ich glaube mich zu erinnern, dass es gegen die Benutzervereinbarung von Google ist, benutzerdefinierte Seiten für ihre Bots zu erstellen.

0

Ich bin sicher, dass ich eine votedown auf diese nehmen werde, aber ich hatte es schreiben: Constructive

In jedem Fall Captchas ist der beste Weg, gerade jetzt gegen Bots zu schützen, kurz Genehmigung aller von Nutzern eingereichten Inhalte.

- Bearbeiten -

Ich habe gerade bemerkt Ihr P. S., und ich bin sowieso nicht sicher, ob ein Bot ohne die Interaktion mit ihm zu diagnostizieren. In diesem Fall ist es am besten, wenn Sie die Bots so früh wie möglich abfangen und eine 1-monatige IP-Beschränkung implementieren. Nach dieser Zeit sollte der BOT aufgeben, wenn Sie ständig HTTP 404 zurücksenden. Bot's werden oft von einem Server ausgeführt und ändern ihre IP nicht, also sollte dies als mittelmäßiger Ansatz funktionieren.

+0

(IP) Proof of Concept: Es gibt keine öffentliche Proxy-Ketten-Implementierung für PHP/Perl/Python. (Es kann zwar einen einzigen Proxy geben, aber normalerweise sind Bots nicht so paranoid) –

0

Ich würde vorschlagen, Akismet, ein Spam-Schutz-Plugin, anstatt jede Art von Captcha oder CSS-Trick, weil es sehr gut bei der Erfassung von Spam ist, ohne die Benutzerfreundlichkeit zu ruinieren.

0

Ehrliche Bots, wie z. B. Suchmaschinen, greifen in der Regel auf Ihre robots.txt zu. Von diesem können Sie ihre useragent Zeichenkette erlernen und sie Ihrer Botliste hinzufügen.

Natürlich hilft das nicht mit bösartigen Bots, die vorgeben, menschlich zu sein, aber für einige Anwendungen könnte das gut genug sein, wenn Sie nur Suchmaschinen-Bots aus Ihren Logs filtern wollen (zum Beispiel).