Jak neotravovat uživatele s antispamem?

Známe to všichni. Chceme se registrovat na nějaký web, jít do internetového bankovnictví, odeslat objednávku v eshopu, přispět do diskuze a vyskočí na nás jen těžko čitelná slátanina různě pokrouceného textu. Ano první popisovaná možnost je dneska velmi oblíbená captcha.
Captcha

A světe div se. Ve většině případů je toto řešení zbytečné a příliš obtěžující… Jaké má dneska vývojář další možnosti? Existuje možnost zabránit SPAMu a zároveň, aby to uživatele nijak neobtěžovalo? Zkusím projít dneska běžně používané řešení a pak odpovědět na položené otázku.

Polidštěné antispamy, vyžadující interakci uživatele

Vyžádání si opisu textu:
Antispam opis textu
Vybrání odpovídající možnosti:
Antispam výběr dne.
Vybrání odpovídajícího obrázku:
Antispam select images
Nicméně tyto antispamy opět vyžadují spolupráci uživatele a s nadsázkou i jisté znalosti.

Další metodou je na komentáře nasadit nějaký klasický antispam, jaký známe například z emailů. Tuto možnost využívá například i plugin Akismet pro publikační systém WordPress (používá ho i tento blog). Tento systém funguje na principu, že nebrání spamovacím robotům v tom příspěvek založit (což chválím – uživateli nehází klacky pod nohy), ale následnou analýzou se snaží identifikovat, zda příspěvek zobrazí či ne. Tady je ale na druhou stranu potřebná interakce administrátora, což může být na serveru, který je v centru dění dost obtěžující.
Wordpress Akismet

Dokonalé antispamové řešení
Využijeme základu z prvního polidštěného příkladu:
Antispam opis textu
HTML:

<p id="antispam">
    Ochrana proti spamu. Napište prosím číslo dvacet-čtyři: 
    <input type="text" name="robot" value="" id="antispaminput"/>
</p>

Ale doplníme to následujícím Javascriptovým kódem:

document.getElementById("antispaminput").value = "24";
document.getElementById("antispam").style.display = "none";

případně v jQuery:

$("antispaminput").val(24);
$("antispam").css('display', 'none');

ten způsobí, že se pole automaticky vyplní a zároveň skryje. Uživatel má pocit, že žádný antispam neřeší, ale na pozadí ho za něho řeší prohlížeč. Pokud ale uživatel (prohlížeč) nepodporuje Javascript (vlastnost webových robotů), tak mu políčko zůstane zobrazeno a musí touto kontrolou projít.

Proč tedy je tak moderní „otravovat“ uživatele luštěním a vyplňováním pokřivených znaků?

5 komentářů u „Jak neotravovat uživatele s antispamem?

  1. Martin Pánek

    Nebo stačí k formuláři přidat inputy s name=“email“ nebo „description“, které budou skryté pomocí css. A pokud přijdou vyplněné, tak je to robot. Funguje to na 99% :)

  2. Dominik Fryč

    Tuto metodu s JavaScriptem bych já osobně nepoužíval, protože když by někdo komentoval z mobilu s vypnutým JS, tak by ho to bralo jako spambota. Proto jsem vytvořil ve formuláři ještě jeden skrytý input (jako píše komentář nade mnou), který je prázdný a vzhledem k tomu, že spamboti doplňují co nejvíce inputů, takže pokud input odejde vyplněný, komentář se neodešle. Zatím funguje perfektně.

  3. Jan Kocmánek Autor příspěvku

    To nemáte pravdu…
    Pokud máte na mobilu vypnutý JS, tak se vám zobrazí INPUT, kde musíte provést výpočet. Ale nic vás nebude označovat za SPAMBOTa.
    Naopak pokud něco jen skryjete pomocí CSS a někdo bude mít vypnuté CSS, tak to na uživatele vyskočí a bude se to snažit vyplnit. Ale i toto je řešitelné vhodným popiskem.

    Myslím, že obě řešení spadají do stejné kategorie.

Napsat komentář

Vaše emailová adresa nebude zveřejněna.