Kampf den Spambots

In den letzten Jahren wurden viele Strategien entwickelt, um gegen
Spambots und Email-Harvesters vorzugehen. In diesem Artikel soll ein Ansatz
vorgestellt werden, mit dem versucht wird, das Geschäft der Harvesters
zu zerstören.

Spambots, das sind lästige Crawler oder Robots die das Internet nach Emailadressen
durchforsten um diese dann in Datenbanken zu hinterlegen und an etwaige Kunden
zu verkaufen. Es scheint ein ziemlich lukratives Geschäft zu sein, da das
Spamaufkommen stetig wächst; so ergab eine Auswertung von Symantec, dass
der Spamanteil bei knapp 66% liegt und dabei wurden 106 Milliarden Emails gescannt.

Mittel und Wege dem Einhalt zu gebieten gibt es viele – sie reichen vom
maskieren der Emailadressen über JavaScript oder Unicode bzw. der Darstellung
der Emailadresse als Grafikdatei. Eine Liste der gängigen Wege, um die
Emailadresse zu schützen finden Sie hier (http://www.drweb.de/email/spam_harvester.shtml).

Auf SpamHelp.org wird ein Ansatz vorgestellt; dabei wird festgestellt, dass
der Kampf gegen die Spambots durch aussperren, oder ewiges Spammailfiltern zu
defensiv ist. Der Ansatz von SpamHelp.org ist darauf ausgerichtet, die Lukrativität
des Geschäfts mit Spamemails zu zerstören indem die Datenbanken der
Spambots mit Emailadressen "zugespamt" werden.

Hierzu wird schlicht ein Skript programmiert, mit dem bei jedem Seitenaufruf
100 neue Zufallsemailadressen aufgelistet werden; diese wandern bei jedem Spambotbesuch
in deren Datenbank. Doch mit den Emailadressen können zumindest die Kunden
von Spammern nicht viel anfangen, da die Emailadressen schlicht nicht existieren.

Ein Skript, mit dem eine solche Seite generiert werden kann, ist mit den gängigen
Programmiersprachen schnell erstellt.
Es könnte z.B. wie folgt aussehen:

adressbuch.php
<html>
<head>
<title>Emailadressen von Bekannten :-)</title>
</head>
<body>
<h1>Adressbuch…</h1>
<?php
function get_tld() {
//man kann noch mehr TLDs hinzufügen
$tld_data = array("us","ws","tf","cn","ch","at","de","info","biz","aero");

//zufällig ausgewählte TLD wird zurückgegeben
return $tld_data[rand(0,count($tld_data)-1)];
}
//Funktion zur Erzeugung von Zufallszeichenketten für Emailadresse
function create_string() {
$length = rand(5,20);
$chars = "qwertzupasdfghkyxcvbnm123456789WERTZUPLKJHGFDSAYXCVBNM";
srand ((double)microtime()*1000000);
for($index = 0; $index < $length; $index++)
{
$string .= substr($chars,(rand()%(strlen ($chars))), 1);
}
return $string;
}
//Erzeugung von 100 Emailadressen
for($i=0; $i <= 100; $i++)
{
echo "<a href=\"mailto:";
echo create_string()."@".create_string().".".get_tld();
echo "\">".create_string()."</a>";
echo "<br>";
}
?>
<a href="http://www.ihre-seite.de/adressbuch.php?seite=<?php echo
rand(1,1000) ?>" title="Adressbuch - Spambots only">Hier
gibts noch mehr Email-Adressen</a>
</body>
</html>

Dabei besteht es schlicht aus zwei Funktionen; mit der ersten Funktion wird
eine Topleveldomain für die Emailadresse zufällig ausgewählt
(hier kann man natürlich weitere TLDs hinzufügen); mit der zweiten
Funktion werden Zufallsstrings gebildet, die eine Länge von fünf bis
zwanzig Zeichen haben.
In der For-Schleife werden daraufhin mit Hilfe dieser beiden Funktionen 100
Emailadressen samt Mailto-Links erzeugt. Den Link zu einem solchen Skript kann
man jetzt auf der Webseite "verstecken" z.B. als unsichtbare Ebene.
Durch den nochmaligen Aufruf von email-liste.php mit einem zufällig angehängten
Parameter wird der Spambot angeregt sich noch mehr Emailadressen zu holen. Falls
der Spambot so "schlau" sein sollte, und erkennt, dass er im Endeffekt
immer auf das selbe Skript zurückgeschickt wird, könnte man den Parameter
über URL Rewriting z.B. durch das Modul mod_rewrite verstecken.

Der hierfür notwendige Eintrag in eine .htaccess könnte wie folgt
aussehen:

RewriteEngine on
RewriteRule ^adressbuch/seite-(.*)\.html$ adressbuch.php?seite=$1

Dabei müssen sie auch den Link im Skript verändern auf:

<a href="http://www.ihre-seite.de/adressbuch/seite-<?php echo rand(1,100).html
?>" title="Adressbuch - Spambots only">Hier gibts noch
mehr Email-Adressen</a>

Um zu verhindern, dass ein "normaler" Suchmaschinenbot auf diese
Datei hereinfällt, sollte man in der Robots.txt den Bots den Besuch des
Adressbuchs verbieten; d.h. nur Bots, die sich nicht an die Robots.txt halten, fallen darauf rein. In wie weit diese Strategie effizient ist oder gar Abhilfe
verschafft ist natürlich fragwürdig – jedoch ist sie ein aggressives
Mittel um mal gegen die Spammer "zurückzuschlagen".

This entry was posted in PHP Tricks. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *