Každé navštěvovanější webové stránky se dříve nebo pozěji stanou obětí útoků zákeřných spamovacích robotů. Ti jsou schopni během několika minut vložit stovky reklamních komentářů, které se jen velmi těžko mažou a obtěžují čtenáře. Co s tím?

Můžeme použít počmrkaný obrázek, který budou muset uživatelé před odesláním komentáře vyplnit. Otravné, hloupé, odrazující. Přitom není tak těžké v pár krocích vytvořit antispam, který podobným útokům zabrání automatizovaně.


1. Skrytá formulářová pole

Do zdrojového kódu umístěte pole skrytá pomocí CSS, která se běžným návštěvníkům nezobrazí. Pro spamboty mají velmi lákavé názvy - "message", "url", "add". Je-li alespoň jedno z těchto polí vyplněno, komentář je spam. Uživatel je nemůže vyplnit, protože je nevidí. Roboti vyplňují všechno a sami se lapí.

2. Falešné odesílací tlačítko

Před odesílací tlačítko přidejte ještě jedno, také skryté, a lákavě ho pojmenujte jako "Submit". Roboti ve většině případů odesílají formulář právě prvním odesílacím tlačítkem a tím je lehce odhalíte.

3. Doba psaní příspěvku

Vycházejme z toho, že roboti odesílají hromadu spamu automatizovaně ihned po načtení stránky. Běžný uživatel naopak odešle svou zprávu až po nějaké chvíli (musí ji napsat, přečíst si okolní komentáře či samotný článek, apod.). Toho lze efektivně využít. Změřte dobu mezi načtením stránky a odesláním komentáře a pokud je kratší, než řekněme 7 vteřin, s největší pravděpodobností jde opět o spam. Technicky stačí do jednoho skrytého políčka uložit aktuální timestamp a ve scriptu pro přidání komentáře kontrolovat uloženou hodnotu aktuálním časem. Pro jistotu je dobré hodnotu nějak šifrovat (obrátit pořadí písmen, vynásobit zvoleným číslem, apod.), aby roboti nepoznali, že jde o timestamp a nezkoušeli ho podvrhnout.

4. Zakázané výrazy

Spam velmi často obsahuje stejné výrazy - části HTML scriptů, farmaceutické názvy, atd. Spamovací roboti mají malý slovník a některá slova milují, zatímco běžní návštěvníci nemají potřebu zmiňovat se o přípravcích na prodloužení erekce.

5. Počet odkazů v příspěvku

Roboti rádi vkládají větší množství odkazů. Spočítejte je a porovnejte s množstvím obyčejného textu. Je-li odkazů hodně a textu málo, jedná se o spam jak vyšitý.

6. JavaScript

Naprostá většina spamovacích robotů jsou hloupé stroje, které umí pouze vyhledat formulářová políčka v HTML kódu. Když nastavíme formuláří falešnou action (stránku, kam se odeslaná data odesílají) a následně JavaScriptem doplníme správnou, roboti budou nahraní. Nebo javascriptem vložíme celý formulář či ho načteme externě pomocí AJAXu. Lze vymyslet hodně možností, ale až se roboti JavaScript naučí, přestane to fungovat.

7. Doplňky

Když už se v tom vrtáte, ulehčete život sobě i svým čtenářům. Odstraňte mezery a prázdné řádky na začátku i konci příspěvků, velké množství pakujících se znaků (např. "!!!!!!!!!" převeďte na "!!!"). Zamezte vkládání duplicitních příspěvků.


Úskalí

Při programování antispamu kladu důraz na to, aby náštěvníci nic nepoznali a nebyli nijak omezeni. Ze zásady neuznávám řešení ve formě počmrkaného obrázku, jehož text musí uživatelé před vložením příspěvku opsat, stejně jako nutnost vykonání jakékoliv další akce nijak nesouvisející s psaním příspěvku (zaškrtávání políček, tlačítek, opisování čísel, doplňování hodnot, povinná registrace, atp). Spoustu lidí to štve a přijít jen o jeden kvalitní komentář proto, že jeho autor nemá rád tyto klacky pod nohama, je především vaše škoda.

Výsledky

Tento antispam je součástí redakčního systému CalmCube2 a je nasazen na stovkách stránek. Funguje naprosto spolehlivě, nepropustí nic. Naprostá většina robotů si vyláme zuby už na prvním, maximálně třetím stupni ochrany. Další jsou spíš pro jistotu. A jistota je kulomet. O funkčnosti tohoto řešení svědčí i to, že bez úprav funguje od roku 2006 s nezměněnou spolehlivostí. Reálný příklad je např. web K2 Studio, který spammery dost přitahuje - tento antispam tam vyblokoval během tří let téměř milion spamů.

Vytisknout stránku Vytisknout stránkuMichal Škrabálek, 10. 7. 2006, 07:05, zobrazeno 48724x, dnes 0x
5.0 4Hodnocení