Académie php anti-spam -1



Ce simple code écrit en php génère des adresses e-mails qui sont offertes aux robots des spammers afin de polluer leurs bases de données et ainsi alourdir leurs coûts. Il s’agit de la contre-attaque la plus dissuasive mise au point à ce jour à l'encontre de cette profession de parasites.

Leurs robots recherchent inlassablement dans toutes les pages des sites visités les chaînes de caractères "mailto:" et "%@%.%". Qu'à cela ne tienne, elles nous serviront efficacement d’appât. Plusieurs semaines seront nécessaires au spammer pour détecter le problème et exclure notre site tout entier de sa chasse aux adresses. Il verra pendant ce temps la valeur marchande de sa base de données se déprécier et subira ensuite le coût du nettoyage.

L’alternance de voyelles et de consonnes empêche la détection automatique des e-mails invalides par leurs programmes d’épuration :

<html>
<Head>
<title>mailto:mes_addresses_e-mails</title>
<meta name="robots" content="noindex,follow">
</Head>

<body>
<p><u>A l’attention de Jeanne</u></p>
<p>Voici mon carnet d’adresses : </p>
<p>
<?
// générer un nombre aléatoire d’adresses e-mails, ici compris entre 30 et 40.
$randnumber=rand()%10;
$number=$randnumber+30;
$z=0;
for ($z=0; $z<$number; $z++)
{

// générer aléatoirement une suite de caractères plausibles pour le nom du destinataire.
$INITIALE = chr(rand(ord("A"), ord("Z")));// lettre aléatoire majuscule pour l’initiale du prénom.
$Initiale = strtolower($INITIALE);// la même lettre en minuscule pour l'adresse email.
$B = substr("BCDFGJLMNPRSTVZ",(rand()%14),1);// consonne aléatoire majuscule pour la première lettre du nom.
$b = strtolower($B);// la même lettre en minuscule pour l'adresse email.
$c = substr("iouauyayoiui",(rand()%11),2);// paire de voyelles cohérente ensuite.
$d = substr("nnttrncrtrsprch",(rand()%13),2);// paire de consonnes cohérente.
$e = substr("aeiouy",(rand()%6),1); // et on continue pour constituer le nom tout entier.
$f = substr("bcdfgjlmnprstv",(rand()%14),1);
$g = substr("aeiouy",(rand()%6),1);
$h = substr("bcdfgjlmnprstv",(rand()%14),1);
$i = substr("aeiouy",(rand()%6),1);

// générer aléatoirement une suite de caractères plausibles pour le site.
$j = substr("bcdfgjlmnprstv",(rand()%14),1);
$k = substr("aeiouy",(rand()%6),1);
$l = substr("nnttrncrtrsprch",(rand()%13),2);
$m = substr("aeiouy",(rand()%6),1);
$n = substr("bcdfgjlmnprstv",(rand()%14),1);
$o = substr("iouauyayoiui",(rand()%11),2);
$p = substr("bcdfgjlmnprstv",(rand()%14),1);

// générer pour plus de réalisme un séparateur, 2 fois sur 5 en moyenne
$Q = substr("trs-_",(rand()%5),1);

// générer une extension, et préférablement pas toujours la même.
$ext[1]="com";
$ext[2]="net";
$ext[3]="org";
$ext[4]="fr";
$ext[5]="ch";
$ext[6]="be";
$ext[7]="ca";
$r = $ext[(rand()%7)];

// assembler
$Nom=$c.$d.$e.$f.$g.$h.$i;
$Site="@".$j.$k.$l.$m.$Q.$n.$o.$p;
$Ext=".".$r;
$VarMail=$Initiale.$b.$Nom.$Site.$Ext;

// et enfin imprimer
print "<a href=\"mailto:$VarMail \">$INITIALE. $B$Nom</a> &nbsp;&nbsp;&nbsp;";
}
?>
</p>
<p>Reviens tout à l’heure pour les autres adresses e-mail qu’il me reste à te communiquer.</p>
<p>Cordialement,</p>
<p>Paul</p>
</body>
</html>

(Copiez d'abord le code dans un fichier .txt, et de là dans votre générateur de pages web afin d'éviter les erreurs d'interprétation des caractères spéciaux)

Chaque rafraîchissement de la page génère une nouvelle série d’adresses e-mails avec une probabilité infime de correspondre à des coordonnées réelles. Démo dans une nouvelle fenêtre.

la balise <meta name="robots" content="noindex,follow"> de la section <Head> interdit l’indexation par les autres robots. Et juste au dessus figure un titre alléchant.

Les spammers ne respectant pas les protocoles, on peut tout à fait leur interdire l’accès au fichier dans robots.txt. Cette simple insertion suffira pour y conduire les plus malveillants.

Le fichier doit être placé dans le répertoire d’un forum ou à la racine du site et quelques liens, éventuellement invisibles pour l’internaute (style="visibility:hidden") mais pas pour les moteurs, doivent pointer dans sa direction. Alternativement, un simple lien sur la page d'index fait l'affaire.

Il est possible, mais pas encore répandu, pour les spammers d’utiliser un programme de test de la validité des noms de sites générés aléatoirement. La parade consistera à fournir un nom de site valide mais vide de contenu, comme par exemple un hébergement gratuit ou son propre site à condition de désactiver le collecteur de mails... Nombre d’autres solutions enore plus coûteuses pour le spammer sont à l'étude.

Une réponse du spammer peut consister à s'interdire l'accès à la page en question. La parade la plus simple est de générer des noms de fichiers aléatoires (code à publier). Le site tout entier finira par être exclu, et pas seulement une page, ce qui est le but recherché.

Il faudra aussi renouveler régulièrement le texte de la page : "A l’attention de Jeanne ...etc." ainsi que le titre du document, ce qui n'est pas compliqué à automatiser (code à publier).

Et enfin, pour le piment, on peut inclure un compteur de visites. Avant de s'interdire tout accès à un site, le robot du spammer se crée une véritable accoutumance quelques semaines durant.

Le code présenté est efficace mais la parade des spammers devrait intervenir d’ici quelques mois, c’est une question de survie pour des parasites qui ne savent rien faire de bon de leurs 10 doigts. Venez donc revisiter cette page régulièrement pour les mises à jour.

Inclure ce code dans son site est un acte citoyen responsable.

GP