Captcha s Javascriptem
18.10.2005
Existují řešení uhrovitých teenagerů, která řeší kontrolu proti robotům a existují profesionální řešení. Profesionální řešení se pozná tak, že pomáhá uživateli zadat kód, a zbytečně ho neobtěžuje hláškami v době, kdy už celý komentář odeslal.
Jak se proti spamu bojovat nemá?
Jako ukázkový případ jsem si vybral web zkurveného negativistického hovada postavený na systému HULVAT:CMS. Přidávání komentářů v tomto systému je velice obtížné, protože když se dostanete k políčku komentáře a zapomenete vyplnit kontrolní kód, vše zjistíte až po odeslání formuláře (mnohdy kdy už automaticky klikáte na tlačítko pro zavření prohlížeče).
Pokud náhodou budete úspěšní a rozluštíte, co se v políčku Captcha formuláře nachází, správně to vyplníte a při vyplňování komentáře si zajdete na kafe, opět ztroskotáte. Captcha formulář se totiž vyplňuje první před zadáním formuláře a jeho životnost je pouhých pár minut.
Jak vidíte, zadat něco do systému HULVAT:CMS, který je prý nejlepší, protože je nejčtenější (tupé stádo klepe s vůdcem) je obrovská potíž. A když už se prokoušete přes nelogickou, polofunkční proti spamovou kontrolou, máte vysokou šanci, že váš příspěvek i tak nějaké hovado smaže.
Jak proti spamu bojuje génius?
Geniální jsou lidi, co večer jdou na kalbu a ráno naťukají na notebooku v posteli revoluční řešení. nikoli hovada, co užmatlají deset mega rádoby objektového a pořádně děravého kódu. Dobré řešení je v základu řešení dobré pro uživatele, tedy obrázek naťukáte až za komentářem v době, kdy jste svůj komentář dopsali.
Základem geniálního a revolučního řešení je také tlačítko "Obnovit obrázek...", které načte jiný obrázek s kódem, v případě - že nejste schopni rozluštit jaký text opsat. Geniální řešení navíc kód za běhu kontroluje, jestli je správně opsán a pomáhá vám tím, že automaticky píše kapitálky, když se v kódu jiná písmena nenalézají.
Moje řešení je založeno na dlouhodobých uživatelských zkušenostech, kdy je důležité pochopit, že není možné nechat aktivní políčko "Přidat komentář", když se prostě komentář nepřidá. To dá rozum každému, jenm ne lidem co píšou tisíce řádku rádoby objektového kódu.
Jak to funguje?
Kompletní princip implementace uvidíte v kódech tohoto webu, ostatně jedná se jenom o JavaScript. Nejdůležitější a nejlepší část mého výtvoru, kterou často používám je JavaScriptová funkce pro načtení, kterou si můžete zkopírovat zde.
function loadScript(scriptsrc)
{
// odmazeme stary skript, pokud existoval
var hlavicka = document.getElementsByTagName('head')[0];
var dataLoader = document.getElementById('scriptLoader');
if(dataLoader) hlavicka.removeChild(dataLoader);
// vytvorime novy element script
script = document.createElement('script');
script.id = 'scriptLoader';
script.src = scriptsrc;
// vlozime do stranky, cimz prohlizec stahne skript
x = document.getElementsByTagName('head')[0];
x.appendChild(script);
return false;
}
Lukoko od Lukáš Kokoška
18.10.2005 #Nechci se nikoho zastavat, ani nikomu krivdit, ale mam takovy dojem, ze hulanovova capcha odola lepe proti ocr.

Ikdyz kdyby si pripsal k obrazku, ze jej ma uzivatel prepsat pospatknu ( FUSE => ESUF ), tak bys blokoval spamery a zaroven byl i user friendly
Re: Captcha s Javascriptem od Lukáš Kokoška
18.10.2005 #juejej ... nemel by byt nazev nad textem ... takle dole to je velice matouci a clovek nevi co tam ma napsat
Preci jenom ti sem pisu poprvy :-/
od hakuna
18.10.2005 #Stejně si ale myslím, že je uživatelsky přístupnější a efektivnější(přeci jenom spam roboti si můžou text z obrázku vytáhnout) dělat kontrolu pomocí logických otázek: černá - bílá, levá - pravá, velký - malý atd.
od Jiří Sekera
18.10.2005 #Lukáš Kokoška: Způsob vykreslení je přece úplně druhotná věc, o které není v článku ani zmínka.
Hakuna: Například cizincům logická otázka na přístupnosti moc nepřidá.
od Llaik
18.10.2005 #2Jirka: cizinec take blbe bude reagovat na cesky psany clanek
od llook
18.10.2005 #Teda takhle jsem se u technickýho článku asi ještě nenasmál. Doufám, že bude nějaká reakce Hulváta, už dlouho nebyl žádný blogwar.
lol od Cir
18.10.2005 #Problém je že ani grafický captcha není úplně to ono "geniální".
Toto je prostě jen další způsob jak to řešit takto. Ano pohodlnější toto řešení je, ale kdyby to dělal genius tak by myslel naprosto jinak.
Nepřemýšlel by nad tím jak to udělat jinak tím samým způsobem jako mnoho před ním, ale vymyslel by nové řešení, které by bylo bez problémů grafického. To by pak bylo geniální řešení.
od Marty
18.10.2005 #Nikdy jsem nesouhlasil s podobným tipem ochrany proti spam robotům. Nejlépe je s tímto vůbec uživatele neotravovat a komentáře či podobné buď schvalovat, nebo nějakým vhodným způsobem odfiltrovat.
Když už si někdo musí dát (možná z frajeřinky, aby návštěvníci viděli, že to dovede) captchu na web, měl by se přiklonit ke klasickým otázkám, které jsou každému hned jasné (kolik hodin má den).
Grafická captcha může mít problémy s přístupností a použitelností a navíc se určitě jednoho dne dočkáme, že roboti budou umět přečíst i nejasný text v obrázcích.
od markon
18.10.2005 #2Cir: Já jsem geniální, nebudu se namáhat něco takového vymyslet, protože vím, že se určitě najde nějaký člověk vyvíjejíc HULVAT:CMS, kterého nasere mé lepší řešení a začne svůj mozek namáhat, jak mě přebít. Já pak jen GPL kód zkopíruji, no není to geniální?
od markon
18.10.2005 #2Kokoska: Hulánova Captcha odolá o 3% lépe než moje, ale pro uživatele je nesmírně složitější. Jistěže jsem schopnej napsat komplikovanější Captchu, ale proč to stěžovat uživatelům, když prostě zatím neexistuje jediný robot, co by na mém blogu přidal příspěvěk.
od llook
18.10.2005 #Jen ne otázky, nad těmi se musí přemýšlet. Tady prostě opíšu nějaké to BUHE a hotovo. S přístupností je na tom captcha hůř, ale s použitelností mnohem lépe než otázky (pokud lze ten text snadno přečíst).
) nemusel být buzerován vůbec ničím.
Už mě párkrát napadlo vyzkoušet, jestli by fungovala nějaká javascriptová ochrana. Třeba by javascript nějak vyplnil nějaké hidden pole. Pak by uživatel s javascriptem (prakticky celá tupá masa
od Ronnie
18.10.2005 #Lze to vyřešit i jinak, stačí dát email povinně a v hodnotě name u input nepoužít slovo email. Email pak nemusíte pochopitelně zveřejňovat. Email v podstatě vyberete jen z nabídky, je to nejrychlejší řešení. Používal jsem kdysi jednu přednadstavenou návš. knihu, cca 1x za týden spam, pak jsem předělal email na povinnou položku a spam se ani jednou neobjevil (během roku, cca 800 příspěvků, návštěvnost 100/den)
od Alex
18.10.2005 #Myslím si, že Radek reagovat nebude, nemá to zapotřebí..:)

Ano, má to blbě vyřešené, nicméně když používáte Operu, při použití tlačítka (nebo gesta) ZPĚT se vám do formuláře načte i to, s čím jste ho odeslali - o text tedy nepřijdete.
Javascript také není asi šťastné řešení, protože boti (když už přistupují k formuláři a ne rovnou k souboru v CMS, kde se příspěvek ukládá) většinou JS nepodporují (a tudíž ho obejdou).
Na webu používám něco "mezi". Opisujete text (ne obrázek), vše je ošetřeno JS aby jste neodeslali komentář právě bez onoho antispamu ale celá operace se prověřuje ještě jednou - pomocí PHP při ukládání příspěvku do MySQL. Robot nedostane hlášení chyby, že se nic neuložilo tudíž nikdo nepátrá, jak na řešení vyzrát, ale do MySQL se nic neuloží.
Btw. (to si neber osobně): neinspiroval jsi se Hulánovým pravidlem o škádlení "webBohů"?
stejne to nema budoucnost :o) od Bilbo
18.10.2005 #Alex: no, v Opere jo ... ale treba v IE nebo firefoxu ne, ten casto stranku znovu nacte a co v ni bylo tak smaze ...
Bohuzel, nektere "genialni" formulare nastavi po odeslani submit tlacitko na disabled, takze tenhle trik pak v opere nejde (leda tak otevrit novy formualr a data tam prekopirovat)
Mistni captcha je celkem rozumna (4 dobre citelna pismena), nektere jinde jsou horsi (treba na yahoo, tam jsou ty znaky tak zdeformovane ze to v 50% neprecte cely ani clovek)
Ostatne pokrok jde kupredu a to plati i o oborech jako je umela inteligence a rozpoznavani znaku. Tipnul bych, ze tak do 10 let ty captcha vymizi, pac roboti uz to budou bez problemu zvladat precist ...
A hlavne mistni "desne jednoduchy" obrazek za to robotum ani nestoji ... je to reseni pouzite jen na jednom blogu a na neco co je pouzity bud na mnoha mistech (ruzne CMS systemy co se pouzivaj siroce po svete) nebo na nejakych rozsahlych strankach (kolos typu google ci yahoo)
Proste efekt (kratkodobe zaspamovani tohohle blogu do doby ucinnejsiho protiopatreni) nestoji spamerum za tu namahu ...
od anicka
19.10.2005 #Vidis, a ja te za tento "genialni" system proklinam, kdykoliv sem posilam komentar. V padesati procentech pripadu napisu totiz komentar, opisu captcha, poslu, zarve to na me, ze captcha je spatne. Proc? Protoze se zmenilo behem te chvile mezi opsanim a odeslanim formulare.
Doufam, ze od tebe tento napad moc lidi neobslehne.
Re: Captcha s Javascriptem od markon
19.10.2005 #2anicka: To resis co tu bylo, ale ted si to nedokazu predstavit, protoze tlacitko se zaktivni az kdyz to napises spravne. Muzes mi to prosimte priblizit? Nebo nemas vyplej javascript?
Re: Captcha s Javascriptem od wizard
16.02.2006 #Dá se to řešit i tak, že se položí jasná otázka, typu: Co je největší? A na výběru (třeba: sirka/míč/slon) se zaškrtne radio a pak se to zkontroluje.
Re: Captcha s Javascriptem od Anonymous
11.10.2007 #Heh.
Chtel bych videt, jak na firemnim webu napises "Co je nejsirsi?" Musis taky trosku premyslet. Captcha je uzivatelsky prijatelna. Souhlasim s autorem, ze captcha nema otravovat uzivatele, ale myslim si, ze tenhle blog neni zaspamovany ne kvuli autorove tzv. GENIALITE, ale protoze se na nej nikdo nezameril, protoze co by nekomu dalo zaspamovavat tenhle blog? Proc zrovna delat program, ktery by obesel tenhle zpusob?
Re: Captcha s Javascriptem od Anonymous
11.10.2007 #Proc je tady CAPTCHA, kdyz se stejne clanky schvalujou? CAPTCHA se dela, protoze webmasteri si setri praci se schvalovanim kazdeho prispevku.
od Petr
04.01.2008 #"Dá se to řešit i tak, že se položí jasná otázka, typu: Co je největší? A na výběru (třeba: sirka/míč/slon) se zaškrtne radio a pak se to zkontroluje."

-----
^ To je přece blobost, 3 možnosti sjou strašně málo. Robot by klidně mohl zaškrtávat náhodně a v průměru 1 ze 3 pokusů by mu vyšel. Normální captcha má tisíce (nebo i statisíce) možných kombinací. Třeba ta tady jich má aspoň 25^4 = 390625 (tj. 4 pozice, pro každou aspoň 25 možných hodnot (nebo kolik písmen vlastně v abecedě je...)).
P.S. Jestli se tady schvaluje tak je captcha stejně zbytečná. To je prostě lamárna, žádná genialita!
P.P.S. Správně je >>URL<< - tj. Uniform Resource Locator, ne URI. To dá rozum každému kromě rádoby originálního "geniálního" autora tohohle článku