Modération des commentaires pour contrer le spam

Posté le 5 janvier 2010

Le spam sur les commentaires est tout aussi pénible que pour la messagerie et ce modeste site en est une des victime régulière. Bien que la version 1.0 de Django amène une protection supplémentaire des formulaires contre le spam, la parade a vite été trouvé par les spammeurs. Pour lutter contre ce fléau, il existe des solutions qui semblent efficaces comme le module python Akismet, dont vous pouvez voir un exemple d'intégration ici.

Pour ma part, n'étant pas un adepte de l'utilisation des modules externes aux distributions de base de Python et de Django (sauf quand il n'y a pas d'alternative), j'ai opté pour une solution différente: la modération des commentaires. Le principe est simple: un commentaire est posté mais, dans un premier temps, non publié et une notification par email est aussitôt envoyée à l'administrateur du site l'informant du contenu. L'administrateur peut ensuite décider de publier le commentaire via l'interface d'administration en cochant une simple case.

Comme vous pourrez le voir en examinant le fichier models.py, je déclare une classe EntryModerator dans laquelle je donne la valeur -1 à l'option moderate_after. Ceci permet de modérer automatiquement tous les commentaires. Mais vous pouvez décider de ne modérer les commentaires qu'au bout de n jours, dans ce cas remplacez la valeur -1 par n.

Il est vrai que cette solution n'empêche pas le spammeur de poster mais elle évite de voir ces contenus indésirables publiés sur votre site sans aucun contrôle. On pourrait penser qu'en notifiant par email, on déplace le problème vers la messagerie, cependant n'est-il pas plus simple et rapide de supprimer quelques emails après un premier tri via une règle de filtrage que de se loguer sur l'interface d'admin de son blog tous les jours (voire plusieurs fois par jour) pour faire le ménage dans les commentaires ?

Pour télécharger le code source du site c'est toujours par ! :)

Bonne année à tous !