| Accueil | FAQ | Statistiques | Divers | Contact |
Anti-spam : comment plomber les spambots
Ils sont bêtes et méchants, ils ont faim et adorent dévorer les pages HTML remplies d'adresses emails: faisons-leur plaisir et donnons-leur ce qu'ils aiment.
Introduction :
Les spambots sont utilisés par les spammeurs pour voler vos adresses emails. Ils existent sous toutes les formes possibles: scripts, programmes avec interface graphique ou simple ligne de commande. Beaucoup utilisent les moteurs de recherche pour récupérer des pages HTML, en extraire les emails puis suivre les liens vers d'autres pages etc, pour constituer de grosses bases de données d'emails pour mieux vous spammer.
Le script Perl ci-dessous effectue cette tâche avec juste une trentaine de lignes, utilisable sur tout serveur Apache ayant le module mod_rewrite activé et, surtout, le fait en toute "transparence". L'un des avantages de mod_rewrite est que si vous ne possédez pas de serveurs dédié ou mutualisé mais un simple hébergement avec CGI, à partir du moment où votre hébergeur a activé ce module vous pourrez utiliser ce script sans devoir modifier la configuration de votre vhost mais tout simplement en rajoutant quelques lignes dans un fichier .htaccess à la racine de votre répertoire. D'autres modules peuvent être utilisés notamment l'excellent mod_security mais celui-ci n'est généralement jamais installé sur un serveur par défaut et la configuration des dernières versions (2.xx) n'est pas vraiment à la portée de tous.
Fonctionnement :
Le script fonctionne de la sorte :
Avant toute chose, voici un aperçu du résultat: [test normal] - [test de débogage (emails/liens visibles)]
Configuration :
En utilisant mod_rewrite vous disposez de 2 possibilités: inclure les instructions dans le vhost de votre site (serveurs dédiés ou mutualisés) ou un fichier .htaccess (simple hébergement supportant CGI).
Exemple de configuration #1: fichier de configuration Apache (les 2 lignes à rajouter sont en rouge) :
Exemple de configuration #2 fichier .htaccess :
Créez un fichier .htaccess à la racine de votre site WWW afin que tous les sous-répertoires soient affectés par la redirection, par exemple :
Ajout des faux liens :
Sur la page index de votre site, créez au moins un faux lien redirigeant vers une page .htm qui n'existe pas en le cachant dans des <DIV> invisibles.
Exemple :
Le script :
Bien que certains soient plus sophistiqués que d'autres pour éviter les pièges, ils ont tout de même un point commun qui ne joue pas en leur faveur: ce sont des programmes. On peut donc les piéger sans trop de difficultés, tout en prenant soin quand même de ne pas trop les prendre pour des idiots.
<VirtualHost xxx.xxx.xxx.xxx:80>
DocumentRoot /home/www/domaine.com/httpd
ServerAlias domaine.com www.domaine.com
ServerName domaine.com
<Directory /home/www/domaine.com/httpd>
Options -Indexes +Includes
...
# redirection pour l'anti-spambot eatme.pl:
RewriteEngine on
RewriteRule \.htm$ /cgi-bin/eatme.pl
</Directory>
...
</VirtualHost>
Redémarrez Apache après la modification.
home
|--www
|--.htaccess
|--httpd
|--cgi-bin
Ajoutez au fichier .htaccess les deux lignes suivantes.
RewriteEngine on
RewriteRule \.htm$ /cgi-bin/eatme.pl
<div style="display:none;">
<a href="nimportequoi.htm">cliquez ici</a>
</div>
Il ne reste plus qu'à copier le fichier eatme.pl dans votre répertoire /cgi-bin.
#!/usr/bin/perl
######################################################################
#
# [Script]: eatme.pl
#
# [Version]: v0.10 - 05-07-2007
#
# [Auteur]: Jerome Bruandet
#
# [Description]: script perl permettant de donner de fausses adresses
# emails aux spambots. Cree aussi de nouvelles pages aux noms aleatoires
# qui elles-mêmes renvoient sur de nouvelles listes de faux emails.
#
# [Nécessite]: serveur apache + perl + mod_rewrite (ou mod_security)
#
# [Installation]: cf http://spamcleaner.org/fr/misc/eatme.html
#
######################################################################
#=================== DEBUT DE LA CONFIGURATION ======================#
# les lettres de l'alphabet qui serviront a créer de faux email.
@alphabet=('a','b','c','d','e','f','g','h','i','j','l','m',
'n','o','p','r','s','t','u','v');
# extensions utilisees pour les faux emails:
@tld=('.net','.com','.org','.fr','.de','.eu');
# extension des fausses page HTML. Par defaut '.htm'
# si vous modifiez l'extension, pensez aussi a modifier la regle
# de redirection de mod_rewrite:
$extension= ".htm";
# nombre maxi de caracteres a generer pour le nom et le domaine
# des email:
$max_car=13;
# nombre maxi d'emails a generer (evitez de mettre une valeur
# superieure à 200 pour ne pas trop charger la page et rendre
# mefiants les spambots):
$max_emails=150;
# nombre maxi de liens renvoyant sur d'autres pages d'emails:
$max_liens=8;
# nombre de pages a generer: apres $max_pages, le script arretera
# de creer des liens afin d'eviter une boucle sans fin et une
# surcharge du serveur (le spambot pourrait continuer a relever
# des emails a l'infini...). La valeur doit etre inferieure à 100.
$max_pages=10;
# message a afficher pour les utilisateurs qui tomberaient par erreur
# sur la page:
$message_404="Erreur: la page demandée n'existe pas!";
# pour debogage:
# 0= masque les emails et les liens dans des <div> (defaut)
# 1= affiche les emails et les liens
$debug=0;
#===================== FIN DE LA CONFIGURATION ======================#
print "Content-type: text/html\n\n";
# On affiche une erreur pour les utilisateurs "normaux". Seule cette
# partie leur sera visible, le reste sera cache dans le code HTML/CSS.
# On ajoute aussi "noindex,nofollow" afin d'eviter que les robots
# classiques (googlebot etc) ne se prennent les pieds dans notre piege:
print qq~<html><head>
<meta name="robots" content="noindex,nofollow">
</head><body>
<h1>$message_404</h1>
~;
# Partie cachee aux utilisateurs mais bien visible pour les spambots:
print "<div style='display:none;'>" if not $debug;
$nb_lettres=@alphabet;
$nb_tld=@tld;
# On verifie si on a deja affiche $max_pages:
$URL = $ENV{'REDIRECT_URL'};
if ($URL=~/(\d{1,2})\Q$extension\E$/i){
if ($1>=$max_pages){goto NO_PAGES}
$count=$1;
}
$count++;
# Creation des fausses pages/liens:
$HOST= 'http://'.$ENV{'HTTP_HOST'};
for (1..$max_liens){
$HTML_page=&genere_chaine."$count$extension";
print "<a href=\"$HOST\/$HTML_page\">$HTML_page</a><br>\n";
}
print "<p>";
NO_PAGES:
# Generer les fausses adresse emails:
for (1..$max_emails){
$user_name = &genere_chaine;
$domain_name=&genere_chaine;
$ext=$tld[int(rand($nb_tld))];
print "<a href='mailto:$user_name\@$domain_name$ext'>$user_name\@$domain_name$ext</a> \n";
}
print "</div>" if not $debug;
print "</body></html>";
exit;
######################################################################
sub genere_chaine{
$chaine="";
$nb_car= rand($max_car);
$nb_car+=2 if $nb_car<4;
for (1..$nb_car){
$lettre = int(rand($nb_lettres));
$chaine.=$alphabet[$lettre];
}
return $chaine;
}
######################################################################
![]()