Chez WiziShop nous gérons pour le compte de nos commerçants des centaines de milliers de formulaires et malheureusement, quand il y a des formulaires, il y a des bots qui les spamment.

Pour les détecter nous utilisons des techniques classiques (honeypot, CSRF Token, etc.) ainsi que des contrôles que nous avons développés en interne en analysant le user-agent (type de navigateur, version de celui-ci), le nom d’hôte correspondant à l’IP et sa géolocalisation.

Cela a très bien fonctionné, mais, il y a deux mois, les bots sont devenus beaucoup plus fort que nous :

Courbe montrant le nombre de spam par jour

En vert foncé, vous pouvez voir le nombre de mails que l’on a tenté d’envoyer, en vert clair, les mails bien reçu et, en rouge, le nombre de “spam report”.

En clair, les bots sont passés entre les mailles de notre filet… …surtout sur le formulaire d’inscription à la newsletter (allez savoir pourquoi)

Les conséquences étaient très rapidement visibles sur la dérivabilité de nos emails, surtout chez nos amies de Microsoft (hotmail, live, outlook, etc.)

Il nous fallait une solution rapide pour pouvoir trier facilement les bons formulaires des mauvais formulaire (comme pour les bons et les mauvais chasseurs) et après avoir testé des dizaines de services, celui qui a retenu notre attention est CleanTalk

Ne vous fiez pas au design (horrible) du site, car leur API “spam_check” fonctionne terriblement bien et, en plus, elle est compatible RGPD !

De notre côté nous continuons d’utiliser nos filtres de base qui épurent une grande partie des bots et nous avons rajouté pour ceux qui ne se font pas prendre une vérification sur CleanTalk.

Pour cela, il nous suffit d’appeler la méthode API en lui passant l’IP et l’email de celui qui vient de valider le formulaire et pour éviter de divulguer l’IP et l’email de l’utilisateur nous passons ceux-ci avec du hachage SHA-256.

Impression d’écran de postman avec les APIs CleanTalk

Comme vous pouvez le voir dans cet exemple, le retour JSON est extrêmement lisible et donne les valeurs spam_rate et appears autant pour l’IP que pour l’email.

Nous avons décidé que si l’IP ou l’email à la valeur appears à 1 et un spam_rate supérieur à 0,7 alors nous considérons le demandeur comme un bot.

Nous avons rajouté, aussi, au-dessus de cela un système de cache pour ne pas demander une IP ou un email plus d’une fois toutes les 48h, cela permet d’éviter un trop grand nombre d’appels sur l’API de CleanTalk, et donc une trop grosse facturation (celle-ci s’établit sur le nombre d’appels), surtout, que souvent, les bots utilisent soit la même IP, soit la même adresse email pour spammer un grand nombre de formulaires.

Depuis nos statistiques, d’envois d’emails liés à la validation de formulaires, vont beaucoup mieux :

Courbe montrant qu’il n’y a plus de spam

Pour finir, si vous cherchez à éradiquer les bots, je ne peux que vous conseiller CleanTalk et si jamais une personne de chez CleanTalk passe sur ce blog, s’il vous plait, engagez une ou un véritable UX-Designer, vous avez un bon produit, mais une expérience utilisateur catastrophique… 🤷