
Il y a des choses parfois qui m’énervent et en ce moment ce sont tous ces sites qui utilisent des captcha dans le but de lutter contre le spam sur un formulaire. Outre le fait que le Captcha n’est pas un système infaillible (les robots spammeurs en cassent un grand nombre), ce système est lourd pour l’utilisateur moyen et gênant pour les personnes souffrant de problèmes visuels. Certes pour ces dernières, il existe une fonction auditive leur permettant d’écouter le captcha, mais très peu de systèmes en sont équipés. Enfin bref, le captcha est un système pénible, il suffit de lire l’article à ce sujet sur Wikipedia : http://fr.wikipedia.org/wiki/Captcha.et je vais vous montrer comment installer un système moins contraignant, invisible et tout aussi efficace.
Voici la problématique rencontrée à l’époque. Sur un site personnel que j’ai relancé il y a 1 an et demi, j’avais créé un système de commentaires simple afin que les visiteurs puissent commenter les actualités que je postais. Problème, ce système s’est vite retrouvé spammé avec une trentaine de spams par jour. N’ayant pas le temps de modérer tous les jours, j’ai donc installer mon propre système sans captcha. Le résultat est flagrant : en 1 an, j’ai eut 0 spam.
La première chose à faire pour le formulaire, c’est d’installer un système de « minuterie ». A chaque fois qu’un visiteur arrive sur la page, le formulaire est créé et en champs caché est enregistrée la date en seconde. Lorsque le formulaire est posté, si la différence entre la date d’arrivée sur la page et la date de post est de – de x secondes (dans mons exemple 15 secondes) alors on enregistre pas. En effet, si un visiteur réel, veut commenter, il affiche la page, il lit la news (ou lit les autres commentaires s’il a déjà posté), il remplit les champs et écrit son message. J’ai estimé ce temps à 15 secondes. Vous pouvez prendre une valeur plus petites, mais plus vous la diminuez moins vous serez efficaces contre les robots qui postent toutes les X secondes. Avec cette protection, vous supprimez une bonne partie de votre spam. Il vous reste l’équivalent du captcha, mais invisible pour l’utilisateur.
Que font généralement les robots ? Ils remplissent les champs du formulaire . Le but du jeux pour les contrer c’est de mettre des champs vides que les robots voudront remplir. Attention toutefois d’en mettre plusieurs et de vérifier qu’aucun de ces champs ne soient remplis. Les robots ne remplissent pas toujours la totalité des champs dans un formulaire d’où l’utilité de mettre plusieurs champs vide, le robots en remplira forcément un ou plusieurs.
Pour information, je viens de regarder dans mes logs, sur 94 tentatives sur la journée du 26 février dernier, aucun SPAM n’est passé, preuve que ma technique fonctionne. Voici un exemple de code de formulaire, il vous faudra l’adapter à votre site.