Hlavní navigace

Potřebujete obejít CAPTCHA? Zaplaťte si armádu Indů

2. 8. 2010
Doba čtení: 7 minut

Sdílet

Jednou z nutných a zároveň nenáviděných technologií pro „kontrolu lidskosti“ se stala CAPTCHA. Malý obrázek, ze kterého stačí opsat pár písmen, se za posledních pár let stal spíše surrealistickým dílem, kde se původní kód hledá jen velmi těžko. Všechno v posledních letech ale vyřešila armáda opisovačů z Indie.

Spam útočí na svět ve všech formách a nevyhnou se ho ani běžné internetové diskuse. Tam kde to nezaneřádí uživatelé, tam se dostane nějaký spambot a práci dokončí. Výsledkem je pak nelogický text protkaný různými adresami a to nejlépe ve stovce instancí pod každým článkem. Obrana proti tomu prakticky neexistuje, protože i když se povede zkomplikovat odesílání přes JavaScriptový kód a na první pohled nesmyslný obrázek, spameři si vždy najdou cestu, jak se přes nástrahy dostat.

Centrem celého problému je rozeznat člověka a stroj. O to se lidé snaží od počátku spamu samotného. Člověk sice také může občas někam něco poslat, ale ne v takovém množství jako robot. Nejjednodušší způsoby rozeznání člověka od robota začínají jednoduchými rovnicemi, otázkami nebo stačí prostě opsat text, který najdeme někde u toho správného políčka formuláře.

Pokročilejší formy tohoto postupu jsou většinou založeny na obrázcích s kódem a říká se jim CAPTCHA. Uživatel opíše kód z CAPTCHA obrázku do připraveného políčka a jeho zlidštění je na světě. Dříve stačilo pouze vygenerovat jednoduchý obrázek, kde nebyl text nějak deformován. S postupným růstem výkonu počítačů a pokročilejším OCR mechanismem se podařilo spamerům překonat téměř všechny CAPTCHA obrázky, které jim přišly pod ruku. Provozovatelé služeb na to reagovali většinou zkomplikováním samotného obrázku, až se nakonec obrázky začaly stávat nečitelnými i pro samotné lidi. Navíc je CAPTCHA nečitelná pro zrakově postižené uživatele, což je problém, který většina poskytovatelů služeb s CAPTCHA úspěšně ignoruje.

Dnes už není problém narazit na CAPTCHA kód, který budete opisovat na několikrát, protože nejde rozeznat, jestli se jedná o velké či malé písmeno, jestli to je 1 nebo l nebo 0 či O. Hranice mezi čitelností robotem a člověkem se téměř dotýkají a velmi často už tak obtěžující CAPTCHA obtěžuje samotné uživatele takovým způsobem, že službu raději opustí.

Řešením se nakonec stává třeba zrušení CATCHA kódu u registrovaných uživatelů, audio CAPTCHA u které si uživatel kód přehraje a je tak vhodná i pro zrakově postižené uživatele a u některých menších stránek si vystačí i s JavaScriptem. Všemi třemi postupy se více či méně otrávenost uživatelů zmírní, ale nezmizí a časem i ty budou prolomeny, ať půjde o jakkoli důmyslný postup.

DeCAPTCHA army

Pokud si do Googlu zadáte „CAPTCHA bypass“, hned na první nalezené stránce najdete službu decaptcher.com, kde vám za 2 USD přečtou 1000 CAPTCHA kódů. Minimální platba je 10 USD, takže v přepočtu za nějaké dvě stovky můžete odeslat např. 5000 SMSek z SMS brány Vodafonu, což v přepočtu na jednu SMSku dělá víc než dobrou cenu a zajímavou alternativu třeba pro informační systém, kde se mají odesílat SMSky.

Služba je založená na lidské síle, tedy něco jako DeCAPTCHA army, kde určitý počet velmi málo placených Indů sedí a opisují kód z obrázků jak na běžícím páse. Pro zákazníka je k dispozici C/C++/C#/Perl/PHP API, takže ten to má na druhou stranu víc než pohodlné a neměl by mít problém API zařadit do své aplikace. Pokud ano, může použít HTTP bránu.

Právě v Indii se tento business rozrostl do obrovských rozměrů. Jak se můžete dočíst na zdnet.com, v Indii najdete ohromné množství týmů lidí, 24 hodin denně opisují jeden kód za druhým. Jde o práci, kde není potřeba vzdělání, není stanovená pevná pracovní doba, mzdu dostávají zaměstnanci každý týden, práci lze vykonávat doma a ve svém okolí mohou říkat, že pracují ve zpracování dat, jak se pozici oficiálně říká.

Každý u týmů má samozřejmě své limity, ale pokud potřebujete službu jen na několik SMSek, i ty vám budou stačit a z 10 USD vyžijete velmi dlouho. Ve službách panuje velká konkurence a když dokážete dobře zaplatit, dostanete i milión kódů za den, každý do deseti sekund. Co jsem ale pozoroval, tak se hodnoty pohybují u neVIP uživatelů v rámci deseti až šedesáti sekund. Takto řešené dekódování CAPTCHA kódů překousne prakticky každý dnešní kód, který se objeví, včetně takových služeb jako je Facebook, YouTube, MySpace nebo kód od Googlu.

Jakoukoli poptávku v digitálním světě dřív nebo později pokryje nabídka. Jedinou ale zároveň časově dočasnou zbraní proti takovýmto lidským mašinám je udělat kódy méně čitelné a navíc složité, třeba zkombinování nějaké delší matematické úlohy. Výsledkem ale nakonec bude zvednutí ceny podobných DeCAPTCHA army a delší čekání na samotný kód. Navíc přijdete o samotné uživatele.

Odkazovaná služba navíc není jediná, takže se dá říct, že CAPTCHA kódům pomalu zvoní hrana. Na velkých a populárních službách budou téměř neúčinné a vždy se musí kombinovat s dalšími opatřeními.

Jak to funguje

Nedalo mi to a hned jsem si musel jeden DeCAPTCHA tým vyzkoušet. Vybral jsem si ten, o kterém jsem psal hned na začátku. Službu najdete na decaptcher.com. Registrace, platba, použití, všechno šlo bez jediného zádrhelu, je to jednoduchý, levný a funkční systém.

Po registraci na stránkách decaptcher.com se dostanete do jednoduché administrace, kde hned v úvodu vidíte základní statistiky pro váš účet. Já zamířil po rozkoukání do menu Balance, kde jsem si dobil 10 USD, ke kterým mi bylo hned přičteno 1,9 USD jako DPH. To by mělo stačit na 5000 pokusů, což je víc než dost.

Hned potom jsem se začal shánět po nějakém API a zacestoval do menu Downloads, kde jsou na výběr programovací jazyky, které jsem vyjmenoval výše a k nim se jich ještě pár přidává a to jak pro Linux tak pro Windows. Tady nastalo první zklamání, protože Python přítomen nebyl, i když je zmíněn na hlavní stránce. To ale vůbec nevadí, protože komunikace se službou jde realizovat i přes HTTP, metodou POST.

I když by se mohlo zdát, že API také používá HTTP, není to tak. To se připojí na daný server s daným portem a data pošle více surovou cestou. Pokud bych se o podobnou službu někdy zajímal, určitě bych použil Python, takže jsem zůstal u HTTP a použil ke komunikaci moduly httplib a urllib z Pythonu.

Nicméně svůj první pokus jsem realizoval přes HTML formulář, který jsem našel v sekci Download společně se všemi API a dokumentací.

<form
 method="post"
 action="http://poster.decaptcher.com/"
 enctype="multipart/form-data">
 <input type="hidden" name="function"  value="picture2">
 <input type="text"   name="username"  value="<jméno>">
 <input type="text"   name="password"  value="<heslo>">
 <input type="file"   name="pict">
 <input type="text"   name="pict_to"   value="0">
 <input type="text"   name="pict_type" value="0">
 <input type="submit" value="Send">
</form> 

Pro test jsem si vybral CAPTCHA kód, který je paradoxně potřeba pro přihlášení do služby samotné i pro registraci do ní. Za třicet sekund jsem dostal řetězec shodný s kódem na obrázku a k tomu několik dalších informací, nutných hlavně pro případné opakování požadavku, kdyby CAPTCHA kód neseděl. Bylo tedy načase pustit se do toho ve větším měřítku a odeslat dvacítku kódů za sebou s různou obtížností. Tady je výsledek:

root_podpora

CAPTCHA Jméno obrázku Návratová hodnota neVIP neVIP čas Návratová hodnota VIP VIP čas
 big1.png KVTCV 0m10.429s KVTCV 0m15.558s
 big2.png --- 0m33.880s G77G 0m10.240s
 big3.png F11PX2 0m17.914s FHPX2 0m26.815s
 captcha.gif 3nhxvyp6 0m14.246s 3nhxvyp6 0m23.550s
 normal1.png 54B7 0m29.082s S4B7 0m25.912s
 normal2.png ginv 0m17.305s ginv 0m5.035s
 normal3.png pmzwq 0m21.473s --- 1m58.242s
 o2_1.jpg 6axgy 0m9.697s 6axgy 0m23.371s
 o2_2.jpg o4×ry 0m23.648s O4Xry 0m14.921s
 o2_3.jpg 6ybae 0m22.917s 6ybae 0m10.667s
 tmobile1.jpg 1396329 0m27.026s 1396329 0m6.243s
 tmobile2.jpg 1233792 0m22.404s 1233792 0m16.737s
 tmobile3.jpg 369l729 0m25.367s 3691729 0m12.290s
 vodafone1.png 4457 0m17.395s 4457 0m19.260s
 vodafone2.png 0997 0m35.051s 0997 0m30.976s
 vodafone3.png 2438 0m18.787s 2438 0m9.342s
 weird1.png 8y7n 0m24.674s --- 0m19.185s
 weird2.png 86 0m38.052s Bfi 0m24.233s
 weird3.png 14 0m28.057s IoI 0m13.521s

Výsledek je takový, jaký se dal čekat. Na kód si počkáte většinou kolem půl minuty, ale na delší i kratší časy narazíte také. Zkoušel jsem rozpoznat tyto kódy dvakrát, a to poprvé za 2 USD na 1000 kódů a podruhé za 12 USD na 1000 kódů, což by mě mělo zařadit na vyšší prioritu. U kódů, které bych sám nějak vykoumal, se trefili i v Indii. Pár kódů, které bych ani já nerozlouskl, se  v Indii někdy pokusili nějak uhodnout a někdy mi vrátily chybu –7, což ve výpise označuji jako ---.

Závěr

Po vyzkoušení decapcher.com můžu s čistým svědomím říct, že běžné CAPTCHA kódy se takhle dají porazit a kdo má několik dolarů, tak pro vlastní potřebu jde o službu téměř zadarmo. Samozřejmě je ale cílová skupina jinde. Nikdo nebude organizovat tým lidí na čtení a zapisování CAPTCHA kódů pro několik desítek požadavků za den. Je to business, kde je hodně peněz a Indové se svou levnou pracovní silou chytli příležitosti. To je také důvod, proč mám při použití služby určité morální pochybnosti a zároveň obavy o její spolehlivost. Rozhodně bych si netroufl postavit nějakou seriózní službu na decapther.com. Pokud ale jde jen o nějaké odesílání pár SMSek třeba přes Jabber transport pro potřeby několika jednotlivců, není nad čím váhat.

Byl pro vás článek přínosný?

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.