Unerwünschtes crawlen der Website durch Bots bzw. Spider verhindern

Website Crawler, auch Spider oder allgemeiner Robots bzw. Bots genannt, durchforsten das Internet und analysieren automatisch Internetauftritte um diese zu indexieren. Was bei Google, Bing und Co. erwünscht ist kann bei anderen „Besuchern“ aber auch schnell zur Last werden. Dies kann, sogar im wahrsten Sinne des Wortes, schnell zur Last werden und zwar für den jeweiligen Server auf dem die Webseite gehostet wird und der ständig unter Volldampf läuft.

Um bestimmte Bots vom durchsuchen der eigenen Website auszuschließen gibt es 2 Methoden. Zum einen mit Hilfe einer robots.txt Datei und als zweite Lösung die, mit Hilfe von URL rewrite Regeln in einer .htaccess Datei.

Ich möchte deshalb nur näher auf die zweite Methode eingehen, da das befolgen der Anweisungen einer robots.txt keine Pflicht darstellt und sich einige Spider nicht daran halten.

Die robots.txt Methode

Im Dokumenten-Root wird eine Datei mit dem Namen robots.txt erstellt und diese enthält Anweisungen welche Projektverzeichnisse ein Suchmaschinen-Robot lesen und welche er nicht lesen darf. Eine Datei kann exemplarisch folgendermaßen aussehen:

User-agent: UniversalRobot/1.0
User-agent: AndererRobot
Disallow: /admin/
 

In Zeile eins und zwei wird angegeben, für welche Robots (User-agent) die nachfolgenden Anweisungen gelten. Dies geschieht pro Zeile, falls keine Wildcards (*) verwendet werden.

Im zweiten Teil werden die Anweisungen selbst notiert. Diese Zeile beginnt mit Disallow (engl. verbieten), gefolgt vom Verzeichnis für die das Verbot gilt.

In unserem Beispiel wird dem Robot „UniversalRobot/1.0“ und „AndererRobot“ der Zugriff auf das Verzeichnis /admin/ verboten.

Weitere Informationen gib es hier.

Die URL rewrite Methode

War die robots.txt Methode noch optional für den Crawler, so ist die URL rewrite Methode verpflichtend. Wird ein Crawler, der ausgeschlossen werden soll erkannt, so kann er tatsächlich am Lesen einzelner Bereiche oder gesamten Website gehindert werden.

Im Dokumenten-Root wird eine Datei mit dem Namen .htaccess erstellt oder falls schon vorhanden ergänzt. Diese Datei enthält Anweisungen welcher Suchmaschinen-Robot die Website spidern darf und wer nicht. Eine Datei kann exemplarisch folgendermaßen aussehen:

RewriteEngine On
RewriteBase /RewriteCond %{HTTP_USER_AGENT} (BLEXBot|Baiduspider|Baiduspider-video|Baiduspider-image|moget|ichiro|MJ12bot|AhrefsBot|Yandex|NaverBot|Yeti|YoudaoBot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} (pcbrowser|propowerbot|prowebwalker)RewriteRule .* – [R=403,L]

Ein paar Erläuterungen zum Inhalt:

  • RewriteEngine On
    Aktiviert die RewriteEngine die benötigt wird damit das ganze funktioniert.
  • RewriteBase /
    Definiert den Pfad von wo aus es losgeht. In der Regel ist hier keine Änderung notwendig.
  • RewriteCond %{HTTP_USER_AGENT} (BLEXBot| YoudaoBot) [NC,OR]
    Jeder Spider der eine Seite aufrufen/lesen möchte teilt dem Webserver (Apache) über den HTTP_USER_AGENT mit, wer er ist. Meldet sich ein Spider mit Namen „BLEXBot“ so kommt unsere RewriteCond (Abfrage) zum Tragen. Mehrere Spider werden mit einem | voneinander getrennt. Wenn mehr als eine Zeile verwendet werden soll, muss noch ein „OR“ am Zeilenende verwendet werden. Hierbei handelt es sich um ein logisches Oder und die nachfolgende(n) Zeile(n) werden auch berücksichtigt.
  • RewriteRule .* – [R=403,L]
    Die Spider, auf die die oben genannten Regeln zutreffen, bekommen einen Statuscode 403 geliefert, der ihnen ein verboten (forbidden) liefert. Die Spider werden also am lesen der Website gehindert

Mein aktueller Regelsatz sieht wie folgt aus:

RewriteCond %{HTTP_USER_AGENT} (BLEXBot|Baiduspider|Baiduspider-video|Baiduspider-image) [NC,OR] RewriteCond %{HTTP_USER_AGENT} (moget|ichiro|MJ12bot|AhrefsBot|Yandex|NaverBot|Yeti|YoudaoBot) RewriteRule .* – [R=403,L]

Weitere Regeln und Informationen zum Thema findet Ihr hier und hier.

Kontrolle der URL rewrite Methode

Um den Erfolg der genannten Maßnahmen zu kontrollieren, werfen wir einfach einen Blick in unsere Server-Logfiles:

198.20.66.122 – – [02/Aug/2013:04:13:40 +0200] „GET /kontakt.htm HTTP/1.1“ 403 1240 „-“ „Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup.com/crawler.html)“
198.20.66.122 – – [02/Aug/2013:04:13:44 +0200] „GET /ueber-uns.htm HTTP/1.1“ 403 1240 „-“ „Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup.com/crawler.html)“
198.20.66.122 – – [02/Aug/2013:04:13:47 +0200] „GET /katalog.htm HTTP/1.1“ 403 1240 „-“ „Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup.com/crawler.html)“

Hier können wir sehen, dass der BLEXBot Spider am crawlen der Website gehindert wurde. Ziel erreicht.

Guten Appetit wünscht
Chefkoch

geschrieben von: Chefkoch

Chefkoch

Hi, ich bin der Chefkoch und arbeite als Webworker und Programmierer. Hier blogge ich über Joomla, WordPress, Windows und den ganzen Web-Rest. Wenn ich nicht vorm Monitor sitze fotografiere ich gerne oder Jogge durch die Gegend.

Ein Gedanke zu „Unerwünschtes crawlen der Website durch Bots bzw. Spider verhindern

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.


*