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 souborusettings.pyjako konstantuAKISMET_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.pyvložtefrom 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ářů:
Za nějakou dobu se pokusím toto téma znovu otevřít a podělit se o dlouhodobější zkušenosti.
