Welche Optionen gibt es, um Webcrawler zu erkennen, die nicht erkannt werden möchten?
(Ich weiß, dass die Auflistung von Erkennungstechniken es dem intelligenten Stealth-Crawler-Programmierer ermöglichen wird, eine bessere Spinne zu entwickeln, aber ich glaube nicht, dass wir jemals in der Lage sein werden, intelligente Stealth-Crawler zu blockieren, nur diejenigen, die Fehler machen.)
Ich spreche nicht über die netten Crawler wie Googlebot und Yahoo! Schlürfen. Ich finde einen Bot schön, wenn es:
- identifiziert sich als Bot in der Benutzeragentenzeichenfolge
- liest robots.txt (und gehorcht es)
Ich spreche von den schlechten Crawlern, die sich hinter gewöhnlichen Benutzeragenten verstecken, meine Bandbreite nutzen und mir nie etwas zurückgeben.
Es gibt einige Falltüren, die eine aktualisierte Liste erstellen können (danke Chris, gs) :
- Hinzufügen eines Verzeichnisses, das nur in der robots.txt aufgeführt (als nicht zulässig) aufgeführt ist,
- Hinzufügen unsichtbarer Links (möglicherweise als rel = "nofollow" markiert?),
- style = "Anzeige: keine;" auf Link oder übergeordneten Container
- unter einem anderen Element mit höherem Z-Index platziert
- erkennen, wer die Großschreibung nicht versteht,
- Erkennen Sie, wer versucht, Antworten zu veröffentlichen, aber das Captcha immer nicht besteht.
- Erkennen von GET-Anforderungen an reine POST-Ressourcen
- Intervall zwischen Anforderungen erkennen
- Reihenfolge der angeforderten Seiten erkennen
- Erkennen, wer (konsistent) https-Ressourcen über http anfordert
- Erkennen, wer keine Bilddatei anfordert (dies in Kombination mit einer Liste von Benutzeragenten bekannter bildfähiger Browser funktioniert überraschend gut)
Einige Fallen würden sowohl von "guten" als auch von "schlechten" Bots ausgelöst. Sie können diese mit einer Whitelist kombinieren:
- Es löst eine Falle aus
- Es Anfrage
robots.txt
? - Es löst keine weitere Falle aus, weil es gehorcht hat
robots.txt
Eine andere wichtige Sache hier ist:
Bitte erwägen Sie Blinde, die einen Bildschirmleser verwenden: Geben Sie den Menschen die Möglichkeit, mit Ihnen in Kontakt zu treten, oder lösen Sie ein (Nicht-Bild-) Captcha, um weiter zu surfen.
Welche Methoden gibt es, um die Webcrawler, die versuchen, sich als normale menschliche Besucher zu maskieren, automatisch zu erkennen?
Update
Die Frage ist nicht: Wie fange ich jeden Crawler? Die Frage ist: Wie kann ich die Wahrscheinlichkeit maximieren, einen Crawler zu erkennen?
Einige Spinnen sind wirklich gut und analysieren und verstehen tatsächlich HTML, XHTML, CSS-Javascript, VB-Skript usw.
Ich habe keine Illusionen: Ich werde sie nicht schlagen können.
Sie wären jedoch überrascht, wie dumm einige Crawler sind. Das beste Beispiel für Dummheit ist (meiner Meinung nach): Alle URLs in Kleinbuchstaben umwandeln, bevor sie angefordert werden.
Und dann gibt es eine ganze Reihe von Crawlern, die einfach nicht gut genug sind, um die verschiedenen Falltüren zu umgehen.