Filtrer les robots spammeurs de formulaires sans captcha
Depuis nos débuts en 1999 la lutte contre le spam par formulaire a toujours été un défi. J'ai toujours prôné une approche qui ne péjore pas l'expérience utilisateur, c'est à dire sans imposer un captcha au visiteur. Je vous partage quelques techniques ci-après qui nécessitent une connaissance minimale de html/css pour être comprises.
Tout d'abord quelques définitions:
Qu'est-ce qu'un robot envoyeur de pourriel (spambot)
Ce sont des programmes qui parcourent automatiquement les pages des sites web à la recherche de formulaires. Lorsqu'ils rencontrent un formulaire, ils analysent les champs présents, remplissent les données et postent le formulaire.
Dans un formulaire de contact, il y a fréquemment un champ multi-lignes pour le message du visiteur (Champ remarque, commentaire, votre message, etc...). C'est le plus souvent dans ce champ que le robot va délivrer son message avec le plus souvent des liens vers des sites internet.
Pour les autres champs il s'agit souvent de données fictives, le but n'étant pas d'être recontacté.
Qu'est-ce qu'un captcha
Un CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart) est un mécanisme de sécurité utilisé sur les sites web et les applications pour distinguer les utilisateurs humains des programmes automatisés (robots). Il se présente généralement sous la forme d’un défi à résoudre, comme la reconnaissance de caractères déformés, la sélection d’images correspondant à un thème précis ou une simple case à cocher.
Les limites du captcha de type texte déformé
Les CAPTCHA ont été conçus à une époque où les ordinateurs étaient nettement moins performants que les humains pour reconnaître des images, du texte ou des objets.
Bon nombre d'IA en 2026 sont plus performantes que les humains pour reconnaitre des caractères déformés si bien que des déformations de texte sont de plus en plus marquées pour filtrer les robots.
En regardant les exemples 1 et 2, on se rend bien compte qu'à partir d'une certaine complexité, ni l'humain ni l'IA ne peut fiablement répondre à la question.
Techniques de filtrage
Pour filtrer les robots, il faut d'abord comprendre leur fonctionnement. Plus de 99% des spams sont opportunistes. Cela signifie que les robots cherchent des formulaires qui répondent à certains critères et postent du spam sans savoir à qui ils s'adressent.
La plupart d'entre-eux analysent le code source de la page (code html) à la recherche d'une balise <form> puis ils scannent les balises <input> <select> <textarea> afin de produire un envoi de formulaire basé sur les champs en présence.
Pour être efficace en terme de vitesse, la plupart des robots scannent le html avec des moyens limités. Ils font de la recherche pure texte au lieu de faire un parsing rigoureux du code html.
Astuce N° 1: Le champ commenté
<input type='text' name='field1' />
-->
Nous sommes ici en présence d'un commentaire html qui s'ouvre avec <!-- et se ferme par --> Tout ce qui se trouve à l'intérieur du commentaire est ignoré par les navigateurs web. Cependant plus de 50% des robots vont considérer que le champ nommé "field1" fait partie du formulaire et ils vont le poster.
Il suffit alors de rejeter les formulaires qui contiennent "field1" côté serveur.
Astuce N° 2: Le champ non visible avec valeur constante (entité html)
Pour les robots qui ne se font pas prendre au piège avec l'astuce 1. On peut créer un champ avec une valeur constante qui fait réellement partie du formulaire.
Les styles CSS pour ce champ ont pour but de le rendre invisible sans utiliser display: none, visibility: hidden ou opacity: 0 car certains navigateurs ne postent pas les champs invisibles.
On préférera un width: 1px; height 1px; border: 1px solid transparent;
Quant à la valeur constante, on utilise ici une entité html. @ (représente le caractère @)
La grande majorité des robots ne résolvent pas les entités alors que tous les navigateurs le font. Côté serveur il faut vérifier que le champs "field2" contient la valeur "@". La plupart des robots vont poster la chaine "@"
Et pour la suite...
Le robots se modernisent et utilisent de "vrais" navigateurs pour envoyer du spam. Si bien que les filtres présentés ici ne sont plus efficaces.
Les deux astuces présentées ci-dessus ont l'avantage d'être en pure html/css et réduisent fortement le nombre de formulaire à traiter avant d'avoir recours à des techniques plus poussées. En 2026 plus de 95% des spams sont filtrés avec ces deux astuces sur notre plateforme CMS.
Javascript est utilisé pour la validation des formulaires (pour éviter l'oubli de champs etc.). On peut donc utiliser Javascript pour ajouter des tests anti-robots.
Je présenterai probablement ces techniques lors d'un prochain article.



