Bojujeme proti komentářovému SPAMU, díl první

Webu djangoproject.cz si všimli spammeři. Přesněji, spammeři z Ruska — chlapíci důslední a vytrvalí. Výsledkem jejich snažení je (zatím) cca 1-5 SPAM komentářů denně.

Na Django ČR je nasazena aplikace django.contrib.comments, která se sice snaží SPAMování bránit, ale zarputilosti našich východních sousedů bohužel konkurovat nemůže.

Co s tím?

Nasadit Akismet — službu společnosti Automattic (která mimo jiné stojí i za světoznámým Wordpressem). Princip této služby je jednoduchý:

Každý komentář, kterým váš web někdo obohatí, se nejprve odešle k posouzení aplikaci Akismet, a během chvilky obdržíte odpověd jestli jde či nejde o SPAM”.

Zakomponování Akismetu do Django projektu je triviální:

  • zaregistrujte se na webu Wordpress.com, získejte API key (viz stránka “Profile”) a vložte jej do souboru settings.py jako konstantu AKISMET_API_KEY
  • stáhněte si “unobtrusive comments moderation” kód z webu djangosnippets.org a uložte jej někde do svého projektu (např. do souboru s názvem akismet_comments.py)
  • zajistěte načtení kódu, např. do spřízněného models.py vložte from akismet_comments import *

A to je vše!
Funguje to tak, že funkce moderate_comments je pověšená na signál, který je vyslán aplikací django.contrib.comments těsně před jejím uložením do databáze. V této chvíli je komentář posouzen Akismetem, a pokud je shledán závadným, označí se flagem is_public = False (čili do databáze se uloží, ale na webu nezveřejní).

Elegantní řešení, které mě zbavilo otravné práce s odstraňováním SPAM komentářů:

Akismet -- lék na SPAM

Za nějakou dobu se pokusím toto téma znovu otevřít a podělit se o dlouhodobější zkušenosti.

Blog comments powered by Disqus