A while ago I updated this website to Django 1.1 and replaced my self-made comment system in favor of Django's contrib.comments. This comment-system comes with a built-in anti spam feature; a hidden field. And even though this field has a more or less stupid name honeypot, enough spam comments seems to get caught by it.
However, at the end I get around 5-10 additional spam comments each day, which get not caught, so I've written a comments moderation class django-comments-spamfighter that does two things:
- Check incoming comments against the Akismet spam database and either block them directly or add them to the moderation queue.
- Check incoming comments against pre-defined keywords and either block them directly or add these them to the moderation queue. These keywords can be simple strings or powerful regular expressions.
While I'm not so happy with Akismet as it has about 10% false positives here, the keyword stuff is very powerful. Most spam comments here contain typical words like viagra or nude which get easily caught.
django-comments-spamfighter is available via pypi:
easy_install pip pip install django-comments-spamfighter
The repository is located on Bitbucket but there is a Github mirror as well (It's synced with my Bitbucket repo). Oh, and there is a documentation! :-)