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.0User-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 OnRewriteBase /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
Als Chefkoch arbeite ich als Systemadministrator und Programmierer. Hier blogge ich über Joomla, Magento, WordPress und Windows. In meiner Freizeit fotografiere ich viel, fahre mit meiner Yamaha XT660R oder Jogge durch die Gegend.
Ein Gedanke zu „Unerwünschtes crawlen der Website durch Bots bzw. Spider verhindern“