Der Bau einer Spambot-Falle
Mittlerweile habe ich keine Lust mehr, die .htaccess manuell per Hand zur Verbannung von Spambots zu Pflegen. Im Internet bin ich auf eine gute Idee gestoßen, mit der man Spambots mit einer Falle einfangen und für immer von der Seite verbannen kann. Das hört sich ein wenig nach spannender Jagd an. Ist es auch.
Denn diese Spambots kommen irgendwann zu irgendwelchen Zeiten und verursachen einen großen Traffic und damit natürlich auch Webhosting-Kosten. Und was sie noch für einen Schaden anrichten (Datenklau o.ä.) kann man nur vermuten.
Zeit etwas automatisiertes zu tun. Hier meine Wunschliste für eine Spambot-Falle:
- Zunächst möchte ich identifizieren, welcher Zugriff von einem Spambot stammt
- Falls ich einen Spambot identifiziert habe, möchte ich seinen User Agent per .htaccess sperren
- Zusätzlich möchte ich die User Agents der Spambots in einer Datei festhalten, um zu vergleichen, ob er ein weiteres Mal zuschlägt.
- Wenn ja: Lasse ich ihn 10 sek. warten und zeige ihm anschließend seine eigene IP als Hyperlink. Soll er damit machen, was er will 🙂
- Wenn nein: werde ich den User Agent nach ein paar Tagen aus der .htaccess löschen
- Weiterhin will ich per E-Mail darüber informiert werden, wenn ein Spambot in die Falle gegangen ist
- Und der Clou: ALLES AUTOMATISCH ! Ich will nur noch über die Aktionen informiert werden.
Mal sehen, ob`s klappt…
Die Falle
Wann kann man einen Spambot als solches identifizieren ? Ich habe viele Ansätze widerworfen, bis auf einen: Alle Robots verfolgen Hyperlinks und speichern diese. Geben wir ihm einen Link, den gute Robots (Google Bot, MSN Bot, …) laut Standard ignorieren sollen. Sprich: Erzeuge ein Unterverzeichnis, welches in der robots.txt für Robots ausdrücklich verboten ist und verlinke (aus Versehen und unauffällig – Ist schließlich eine Falle) von der Startseite auf dieses Verzeichnis.
Dann passiert folgendes:
Gute Robots sagen: „Halt ! Privatsphäre. Hier habe ich nichts zu suchen.“ Und ignorieren dieses Verzeichnis.
Böse Spambots sagen: „Mir doch egal ! Umso spannender.“ und crawlen unerlaubt das verbotene Verzeichnis.
In dem Verzeichnis muss natürlich eine index.php liegen, die dann den Spambot identifiziert und weitere Aktionen (siehe Wunschliste) einleitet. Ich gehe folglich davon aus, dass jeder Robot, der die robots.txt missachtet, für die Ewigkeit von der Seite verbannt wird und bei zukünftigen Besuchen ein „Error 403 – Forbidden!“ zu sehen bekommt. Ist das gerecht ? Ich denke, das ist eine logische Konsequenz. Fangen wir an…
Technische Umsetzung mit PHP (ab jetzt Grundkenntnisse in .htaccess und PHP gefragt)
1. Unterverzeichnis xyz anlegen, welches folgende Dateien enthält:
- 1×1.gif (1×1 Pixel Gif-Bild – Ist für Besucher unsichtbar auf der Startseite)
- blacklist.dat (chmod 777 – hier werden die User Agents gespeichert)
- blacklist.php
- index.php
2. Die robots.txt wird zusätzlich erweitert um
User-agent: * Disallow: /xyz/
3. die Startseite (bei CMS meißt als Template editierbar) um einen unsichtbaren Link erweitern. Dies ist dann die Spambot-Falle:
4. index.php und blacklist.php bearbeiten und für die eigene Serverumgebung anpassen.
Hier alle Dateien als Download: spambot_trap.
Die Grundidee stammt von http://www.kloth.net/internet/bottrap.php. Die automatische .htaccess-Erweiterung und einige andere Funktionalitäten habe ich selbst umgesetzt… Mal sehen, was so die nächste Zeit passiert.
Achso: Die Funktionalität, die lange nicht wiedergesehene Spambots automatisch aus der .htaccess löscht, ist noch nicht umgesetzt. Folgt vielleicht noch…