Dovolil bych si zhruba po roce znova obnovit tuhle diskuzi, protože jsem v poslední době narazil na dost webů "pod plnou palbou".
Za ten rok jsem několikrát na různých webech nasazoval anti-komentář-spam ochranu a na svém webu loguji chování spambotů (od 18.1. ještě víc podrobněji).
Během toho jsem testoval i účinnost různých metod.
Používám několik typů ochrany, které různě kombinuji:
- Nastražené políčko formuláře, skryté css s "pěkným" jménem - používám nick, pokud je políčko vyplněno jedná se o bota
- Políčko v početním příkladem vyplněné javascriptem a skryté - po načtení je do políčka vložen výsledek příkladu, který používám buď statický, nebo generovaný z session_id
- Nastrčený schovaný submit pře opravdovým submitem, pokud byl formulář odeslán tímto submitem, jedná se o bota
- Kontextový filtr na straně serveru
Kupodivu jsem zjistil, že v současné době je dostačující ochrana nastrčeným políčkem NICK. Všechny boty mi toto políčko vyplnili. Použili tam většinou stejnou hodnotu jako v poli jméno/name, do políček s neznámým name vkládali náhodnou hodnotu. Pravděpodobně to vychází z toho, že nechtějí riskovat, že by nevyplnily nějaká povinná políčka. Na svých stránkách tato ochrana vždy zareagovala jako první a dále nebylo potřeba nic řešit. A hlavně je opravdu strašně jednoduchá na implementaci.
Z přijatých hodnot se ukázalo, že by zareagovala správně i obrana javascriptem. Na stránkách, kde jsem nedával políčko, tak si žádný bot s javascriptem neporadil a vyplnil náhodnou hodnotu, nebo nějaké URL.
Podstrčený submit také trochu fungoval, byly komentáře většinou s oběma submity, několik s prvním submitem a pravděpodobně starší boti s korektním submitem. Z toho usuzuji, že je to spíše zbytečná ochrana, ale u nových webů by mohl av budoucnu trochu pomoci.
Kontextový filtr jsem vylepšil tím, že zvyšoval skóre u krátkých příspěvků (např. pod 20znaků spamindex*2), protože se nikdy nic nedostalo až k němu, nemůžu říci procentuální úspěšnost, ale když jsem namátkově zkoušel ho aplikovat na zablokované příspěvky a vždy jim přiřadil odpovídající skóre. Protože mám teď udělanou důkladnější analýzu a jedu od začátku, až nasbírám dost vzorků, budou nějaké podrobnější výstupy. Myslím, že kontextový filtr není špatné doplňkové řešení, které může odstranit i některé živé spamery.
Další postřehy:
Ip adresy opravdu blokovat nemá smysl.
Časy mezi vstupem na stránku a odeslání komentáře botem se na mém webu pohybovaly od 4s do 47s (to se již kreje s normálním uživatelem).
Referal si myslím není dobré řešení, protože i normální uživatel vstoupí na stránku přímo (hlavně když prohlížeč doplňuje již navštívené stránky) a také (aspoň na mém webu, kde to vidím) roboti nejdřív vstoupili na nejdřív na stránku a až pak odeslali formulář.
Občas nejdřív přišel krátký komentář, bez zlých slov (a viděl jsem i vytvořený z obsahu původní stránky) a odkazů a když prošel, tak robot spustil útok.
Na mém webu je identifikátor prohlížeče ve velké většině Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Odkazované stránky jsou většinou napadené reálné weby, kde se pak tváří že nabízí porno a stahují se z nich soubory typu blablaXXXbla.mpeg.exe s různými trojany.
Zkoušel jsem několikrát napsat majitelům webů, kteří občas i zareagovali
Doplňkové info na mém webu (i s počítačkou spamů): http://smitka.org/blog/komentarovy-spam