Premier contact avec le spam sur kiznet.fr

Jusqu’à maintenant, je n’avais jamais eu de soucis avec le spam sur kiznet.fr, et je ne m’en plaignait pas. Et là, il y a trois jours, tout à commencé : environ 1 000 spams en commentaires par jour. J’ai d’abord mit en place Akismet pour Django (avec quelques bidouilles). Le spam est passé de 1 100 à 900. Moins pire, mais c’est pas la joie. J’ai alors fait ce que je m’étais juré de ne jamais faire (et j’ai encore mal, je vous l’assure) : j’ai mit en place un captcha (en l’occurrence, reCAPTCHA). J’ai honte, mais au moins, ça fait moins mal. Outre le défi psychologique personnel qu’à représenté la mise en place du captcha, je me suis heurté aussi à un soucis technique : tous les snippets que j’ai trouvé concernant reCAPTCHA n’ont servi à rien ! Ils sont tous soit incomplet (tout le code n’est pas fournit) soit dépassé (Django évolue). J’ai donc mit la main à la pâte et j’ai codé ma propre application (d’une manière pas très élégante, mais pour se point précis, je trouve que Django n’offre pas une assez grande souplesse. A l’occasion, j’essayerais de voir si je ne peux pas écrire un patch), que je rendrais disponible sur mon bitbucket.

Au passage, le site n’a pas été disponible aujourd’hui de 18h40 à 18h45 : petit soucis de la part d’Alwaysdata, mais qui, heureusement et comme toujours, ont maîtrisé la situation.

Posted in None by Thomas Pelletier at July 14th, 2009.
Tags: , ,
  • @Eric : j'irais y faire un tour à l'occasion, il y a probablement de bonnes idées pour améliorer mon appli (django-myrecaptcha sur bitbucket), notamment un support propre pour l'Ajax.
  • J'avais écrit un p'tit billet sur le même truc y'a quelques temps, code inclu:
    http://wwd.ca/blog/2009/03/24/django-ajax-comme...
  • Je pense que j'aurais choisi l'option 1/ par faciliter mais la 2/ est intéressante mais reste le problème des proxies…
  • Il faut effectivement que je réfléchisse à une solution, parce que taper autant de fois le captcha, c'est vraiment pas top.

    En fait le soucis : quand tu es sur la page d'un billet et que tu remplis le formulaire, même si tu te plante dans le captcha (cas d'un robot), tu es de toute façon redirigé vers la prévisualisation.

    Sans plus réfléchir, je vois deux solutions :

    1) ne pas accéder à la prévisualisation tant que le captcha n'est pas bon. Au quel cas, il faut faire recharger la page du billet à chaque erreur de captcha (lourd je pense).

    2) quel que soit le moment (prévisualisation ou page du billet), si le captcha est validé au moins une fois, l'IP qui l'a validé n'a plus a remplir de captcha pour X minutes (à étudier en détail).
  • Il me semble qu'à partir du moment où on a saisie le captcha une fois pour la prévisualisation, on a montré que l'on n'est pas un robot et donc on ne devrait pas avoir à saisir à nouveau le captcha, non ?

    Sinon je suis en train de regarder le code sur bitbucket, pas de pb c'est clair !
  • Pour le fait d'avoir à retaper le captcha, c'est pour "obliger" les robots à l'utiliser : il faudrait que je trouve un moyen de "forcer" Django à faire passer l'utilisateur par une prévisualisation (là, c'est juste que j'ai masqué le bouton envoyer).

    Pour l'exemple d'intégration, quand j'aurais plus de temps, je m'appliquerais à rédiger un billet complet sur le sujet, mais si tu veux, envoies moi un email, et je t'explique ma méthode. Sinon, tu peux aussi farfouiller sur le code du site sur bitbucket (mais c'est pas forcément facile si tu débutes).
  • Je serais intéressé par un exemple d'intégration. En PHP (bouh!) je n'ai pas eu de gros problème d'intégration mais comme je suis encore débutant en Python/django, un exemple fonctionnel risque d'être utile!

    Ceci dit, il y a un problème quand même, on est obligé de resaisir le captcha puisqu'il faut prévisualiser…
blog comments powered by Disqus