Šuplík Honzy Hučína

Skok na navigaci (menu)

Tento blog je v současné době uzavřen.
Pokračování blogu na bloguje.cz jsem zrušil. Pokud budu někdy pokračovat, bude to spíš tady.

Komentovaný článek

Internet a vše kolem
10. 7. 2006

Funkční javascriptová bariéra na komentářový spam

Zdá se, že ochrana proti komentářovému spamu, kterou zavedli administrátoři diskuse na Jak psát web, opravdu účinkuje. Při masivním útoku robotů v posledních dnech, na který si stěžoval například Jirka Chomát, jsem ji zkusil použít. Funguje. (Nezávisle na mně ji doporučují v komentářích i Dero a Jirka Macich.)

Ochrana je vlastně Kolumbovo vejce, razantní vylepšení známé metody. Tou metodou je jednoduchá otázka (nebo pokyn), kterou kladete návštěvníkům webu a na kterou živý člověk zná odpověď (robot ne). Třeba „Kolik je dvakrát tři?“ nebo „Které písmeno je na začátku abecedy?“. Příspěvek se zpracuje samozřejmě jen v případě, když je odpověď správná.

To má ale nevýhody:

  • otravuje to uživatele
  • nedá se použít tam, kde uživatelé nerozumějí česky (resp. jazyku, ve kterém je otázka)
  • je to příliš na očích

Nedalo by se to vyplňovat nějak automaticky a neviditelně? Kupodivu ukazuje se, že dalo. Rozumné prohlížeče dnes totiž umějí Javascript na úrovni, kterou roboti (zatím) nezvládají. Konkrétně jde o metodu getelementbyid.

Ochrana tedy funguje takto:

  1. Do formuláře pro zaslání příspěvku se přidá pole s ověřující otázkou.
  2. Poté se Javascriptem toto pole vyplní správnou odpovědí a zneviditelní.
  3. Uživatel, který má funkční Javascript, tedy ověřující pole nevidí a správná odpověď se odešle, aniž o tom ví.
  4. Robotu nebo uživateli, který má vypnutý či nedokonalý Javascript (což je dnes velmi malý podíl), se ověřující pole zobrazí a je na něm, aby odpověď zadal sám. Uživatel to zvládne, robot ne.

Zde je ukázka kódu:

<form action="zpracuj_komentar.php" method="post">
<!-- zde jsou normální pole formuláře -->
<p id="spamprotirobotum">
Ochrana proti spamu. Kolik je dvakrát tři? 
<input type="text" name="robot" value="" id="protirobotum">
</p>
<script>
/* tento skript vloží číslici do příslušného políčka automaticky */
document.getElementById("protirobotum").value="6";
document.getElementById("spamprotirobotum").style.display = "none";
</script>
<p><input type="submit" value="Odeslat"></p>
</form>

Serverový skript, který zpracovává data z formuláře, pak jenom zkontroluje, zda mu byla odeslána správná hodnota:

if ($_POST["robot"]*1==6)
// pridej prispevek

Jedinou potenciální slabinou je to, že v kódu je uvedena správná odpověď. Dá se tedy asi napsat robot, který ze zdrojáku javascriptu vyčmuchá, co má vyplnit. To mu lze ovšem zkomplikovat tím, že se neuvede konstanta (zde "6"), ale výraz, zde například 7–1 nebo Math.round(5.8).

Vložit vlastní komentářNávrat k článkuRSS komentářů tohoto článku

Komentáře

[1] 10. 7. 2006, 10:32 – peCan (Odkaz)

Prvně jsem to viděl u Errora ( http://error414.com ). Na jeho doporučení jsem to začal používat již předtím než se to objevilo v diskuzi;-) a můžu potvrdit, že to funguje bezvadně.

[2] 10. 7. 2006, 10:45 – rony (Odkaz)

ja mam javascriptove "zneviditelnenie" formulara, co je v zaklade to iste uz viac ako rok.

Popisane riesenie vyzaduje na strane prijmu kontrolu spravneho zadania odpovede.

Moje riesenie zasa "zneviditelni" tag FORM tym, ze ho vklada javascriptom a harvestery na spam formular proste nevidia a nedokazu teda ani priamo posielat post/get data.

Popisovane riesenie teda neodstranuje jeden sprievodny znak komentaroveho spamu a to neustale kontaktovanie servera a spustaine skriptu, ktorym sa prijimaju komentare, k odfiltrovaniu dat teda dochadza az po ich spracovani, co v istych pripadoch spamovych lavin nemusi byt prijatelne.

Moje riesenie sposobi, ze sa stranka javi ako bezformularova a preto ju harvester sice navstevuje ale jeho nasledovnik, ktory posiela data uz neprichadza na web.

Pozorujem, ze po dobe nadsenych captcha, otazok a podobnych nezmyslov prichadzate na javascript ako spolahlive riesenie. Skoda, ze ma nikto nepocuval, ked som kazdemu nestastnikovi spominal prave taketo riesenie :)

[3] 10. 7. 2006, 11:01 – Honza Hučín (Odkaz)

Ad [2]: Velmi dobrá připomínka, díky.

Máš pravdu, že se takto spam odesílá na server, takže by bylo lepší, aby robot vůbec nevěděl, že je tam formulář. Na druhou stranu vypisování části kódu pomocí document.write se robot IMHO naučí snáz než metodu getelementbyid. Takže by asi nejlepší bylo obojí zkombinovat.

[4] 10. 7. 2006, 11:09 – lukas ;)

no, myslím, že napsat spambota na výše uvedený příklad je záležitost na pár minut, pokud tam bude netriviální výpočet té hodnoty, tak je to už výrazně složitější...

[5] 10. 7. 2006, 11:46 – error414

staci jen aby se ta hodnota skladala

promena = 'poiu' + 'neco';
atd.

Vurcitem stupni slozitosti by musel mit uz utocnik plnohodnotny JS interpret. Uz staci aby se metody menily.

[6] 10. 7. 2006, 12:35 – Dero (Odkaz)

S tím display: none bych byl opatrný. Dal bych ruku do ohně za to, že některé verze prohlížeče Opera taková pole na server vůbec neodesílají - uživatelé tedy nebudou mít vůbec možnost komentář přidat.

Osobně používám raději position: absolute + visibility: hidden

[7] 10. 7. 2006, 12:46 – error414

[6] nebo nastavit inputu Type na hidden.

[8] 10. 7. 2006, 12:50 – Dero (Odkaz)

[7] Dynamická změna type opravdu není ta cesta - nevylučuji, že by to mohlo fungovat, ale přeci jen to je poměrně divoký požadavek na vykreslovací jádro.

Moc tomu nevěřím, ale když to otestuješ, tak se určitě dozvíme spoustu zajímavého.

[9] 10. 7. 2006, 12:56 – Honza Hučín (Odkaz)

Ad [6]: S tou Operou je to zajímavá myšlenka. Ale pokud vím, na diskuse.jakpsatweb.cz si ještě nikdo nestěžoval, a to tam operisti asi také přispívají do diskuse. Asi by nám víc řekli admini. Jestli budu mít chvilku, zkusím to prověřit.

[10] 10. 7. 2006, 13:42 – Petr (Odkaz)

[9] no tak většina adminu na diskusi JPW předpokladam, že používají novou operu, kde problémy nejsou. Problém ale je, že nemohou zjistit od uživatelů že se to neodeslalo, maximálně tak, že někdo napíše email že nemuže odeslat komentář ;)

[11] 10. 7. 2006, 14:44 – dgx (Odkaz)

Čím více se takové prostředky začnou nasazovat, tím dříve se je naučí roboti obcházet a brzy bude plnohodnotná interpretace JavaScriptu samozřejmostí. Jsem docela zvědav, co se proti komentářovému spamu bude vymýšlet třeba za čtyři roky ;)

[12] 10. 7. 2006, 14:58 – error414

[11] Stve odpovedi cisi uplna beznadej, ale i beznadej obsahuje slovo nadeje (hadejte ktery dil).

Ja mzslim ye to nebude tak horke, ono se neco vzmzsli, ale urcite bude zajimave sledovat ten vyvoj

[13] 10. 7. 2006, 15:38 – Honza Hučín (Odkaz)

Ad [11]: Za 4 roky už třeba budeme mít každý svůj elektronický podpis :D

[14] 10. 7. 2006, 18:26 – Dero (Odkaz)

Za čtyři roky se stroj pozná tak, že rozlouskne captchu, kterou by žádný člověk nepřečetl. :o)

[15] 10. 7. 2006, 19:27 – Mordae (Odkaz)

[14] :]

[0] OK, jdu to nasadit a ty zatim zjisti, jak jsou na tom ti Operaci. BTW; mail je docasne down, tak ICQ...

[16] 10. 7. 2006, 20:40 – Jirka (Odkaz)

tak mě to v Opeře 9.0 funguje krasně!

[17] 10. 7. 2006, 21:24 – Honza Hučín (Odkaz)

Testování Oper proběhlo na http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=18&topic=29724&page=1
Výsledek: Opera příspěvek odesílá i se skrytým polem, ale některé verze se chovají divně (tváří se, že nic neodeeslaly).

Debatu zaměřenou speciálně na chování Opery je asi lepší dále vést tam.

[18] 11. 7. 2006, 20:12 – llook (Odkaz)

Sám se divím, že jsou ti spamboti tak blbí. Už v lednu jsem u Vrány - http://php.vrana.cz/e-mailovy-formular.php - psal do komentářů, jak bych asi takového bota udělal já a to se psaní spambotů nevěnuju ani okrajově. Takový bot by obešel všechny ochrany zmíněné v této diskuzi kromě té Derovy ([14]).

Ale spíš je to tak, že pokud (nebo dokud?) je dostatek webů přístupných primitivním robotům, je zbytečné vyvíjet nějaké rozumější. První viry taky nebyla nějaká extradíla...

[19] 11. 7. 2006, 21:06 – Honza Hučín (Odkaz)

Ad [18]: Souhlas. Jestliže je důvodem spamu ekonomický zájem, je zbytečné vyvíjet příliš sofistikované roboty, protože by to bylo příliš nákladné.

Přirovnání k virům je případné. Spam a ochrana se budou neustále trumfovat podobně jako viry a antiviry. Myslím, že se jako uživatelé musíme připravit na snížení komfortu v nějaké formě (například validační otázky, povinná registrace apod.), podobně jako jsme si zvykli na to, že nám antivirové programy zpomalují počítač.

[20] 12. 7. 2006, 08:19 – Mordae (Odkaz)

[19] Ale ne, kazdy program v pocitaci jiz brzy pojede v sandboxu a vymysli se nejaka ochrana na urovni OS. Antiviry nejsou dlouhodobym resenim. SPAM bude take snadne zlikvidovat, jakmile se lide vzdaji internetove "anonymity" a bude mozne si poridit oficialni digitalni podpis na nejakem urade a bude k dispozici databaze verejnych klicu obcanu te ktere zeme... Konec anonymity, dokonale cileni reklam... Fuj, musel bych filosofovat. :]

[22] 14. 7. 2006, 16:13 – llook (Odkaz)

[20] Co všechno by se podle tebe dalo z té databanky o majiteli podpisu zjistit? Masové zveřejňování soukromých dat považuji za nereálné (současný trend je spíše opačný - osobní údaje tajit jak jen je to možné). I když ta banka by mohla sloužit pouze pro potřeby případného trestního stíhání (jako dneska logy ISP): Člověk by byl anonymní tak dlouho, dokud by něco nevyvedl.

Ale i v této verzi to považuji za utopia-fiction...

[23] 14. 7. 2006, 22:41 – smajli (Odkaz)

Zdravím,
zrovna dneska jsem na svém webu našel dva robots zápisy v knize, ale o to mi nejde, byla to moje blbost, neměl jsem ošetřeno vkládání.
Položme si otázku o co vlastně jde - získání zpětných odkazů, nalákání návštěvníků? Co takhle ty stránky nahlásit ?

[24] 14. 7. 2006, 22:54 – Honza Hučín (Odkaz)

Ad [23]:
Získání zpětných odkazů - jistě, lepší něco než nic.
Nalákání návštěvníků - návštěvníky to spíš naštve stejně jako nabídky viagry v mailovém spamu, ale znáte to, adresa nebo slogan se usadí v hlavě podobně jako otravná reklama.
Nahlášení stránek je možné, ale problematické, viz http://www.jakpsatweb.cz/clanky/podvodne-seo-techniky.html#nepenalizovat (nelze prokázat, že spamoval majitel stránek, kldině to mohl být naopak konkurent, který byna penalizaci stránek vydělal).

[25] 15. 7. 2006, 18:07 – smajli (Odkaz)

Hmm, to akorát naštve. Kdyby si to aspoň tedy majitelé mazali v co nejkratší době, ale navštívíl jsem plno takovýchto stránek jako by jim to nevadilo nebo to neuměj klidně pokračují dál jako by to bylo normální.

[26] 17. 7. 2006, 13:17 – emilk (Odkaz)

do cookie ulozit cas odeslani formulare,
a pri zpracovani zkontrolovat jak dlouho 'clovek' prispevek psal. pokud to padne pod treshold, tak polozit doplnuji otazku pred prijetim prispevku.

[27] 17. 7. 2006, 13:47 – Honza Hučín (Odkaz)

Ad [26]: Velmi zajímavá myšlenka, měření času by asi fungovalo i na javascriptově nadupané roboty. Ale zase jen do chvíle, než by to prokoukly.

[28] 17. 7. 2006, 17:35 – llook (Odkaz)

[26] Zajímavá myšlenka, ale určitě bych pro to nepoužíval cookie...

[29] 17. 7. 2006, 20:40 – smajli (Odkaz)

[18]
protože jsem laik, jak vlastně pracuje takový spamboot, předpokládám, že si asi neotevře stránku s formulářem a pak tam nedatluje data. Já si v GB udělal takovou malou ochranu, kterou bych chtěl trochu rozšířil o definici zneviditelnění jak je zde.

[30] 18. 7. 2006, 08:06 – Honza Hučín (Odkaz)

Ad [29]: O robotech toho moc nevím, možná by to chtělo položit dotaz na diskuse.jakpsatweb.cz. Taky to vypadá, že rony (zde příspěvek [2], je tam odkaz na jeho web) tomu rozumí, zkusil bych se zeptat jeho.

[31] 24. 7. 2006, 02:58 – AZOR (Odkaz)

Tak první moje reakce byla, že je to fantastické :o), ale nadruhou stranu ted dělam web, kde budu muset řešit spam a přesto, že to vypadá pěkně, tak nejsou všechny věci jen super. Honza tady poslal odkaz na SEO a to bude prvnim duvodem (a patrně poslednim) proč to tedko na webu nebudu používat: zbytečně to sníží ratio: text/kod stránky. Nehledě na to, že vyhledávače javascript nemusej. Raději udělam něco jako 3+4=? a kdo odpoví, dostane Cookies na měsíc a bude mít pokoj.

Ještě dobrej tip jsem někde viděl: nebrat komentáře, kde je v tittle http, protože spam se odkaz snaží narvat do všech políček a nadpis komentáře (nebo jméno) s http bude s největší pravděpodoností spam

[32] 24. 7. 2006, 09:14 – Honza Hučín (Odkaz)

Ad [31]:
Jistě to trochu zvýší velikost stránky, pokud uvažuješ v řádu desítek bajtů. To je něco za něco.
Poznámku o javascriptu a vyhledávačích poněkud nechápu. Vyhledávač přece komentářový formulář nevyplňuje a jinde javascript není (jsou ho všehovšudy dva řádky), takže se to snad vůbec neprojeví, ne?

[33] 24. 7. 2006, 10:27 – AZOR (Odkaz)

To je sice něco za něco ale dle mě jako člověka dělajícího seo je vysoká cena, když by možná šlo vymyslet i něco jiného(viz ten tip s http, nebo třeba otázka až po tom co post obsahoval nějakou url, cookies.)
Ad poznámka) vyhledávače zatim javascript ignorují (tedy měl by zvednout "jen" velikost www)tedy pokud tahle věc neni nutná je z mého pohledu neunosná :o)a je lepší cokoliv jiného, co se bude hodnotit, třeba : "Pokud chce napsat komentář ke článku xxx spočítejte 3+9"
alespon tam člověk narve klíčová slova (to xxx)

Tohle řešní komentářového spamu je opravdu dobré a libí se mi, to jo. Ale SEO má určitě přednost. Ne že by bylo 5 řádku kodu tak zlé, ale na poměru text/kod stránky to na menší stránce udělá dost % (ale objektivně uznávám, že muj názor pro někoho je nepochopitelný, zvlášt když razim názor, že jakkákoliv proměná mající název delší než 2 znaky je blbá :DDD)

[34] 24. 7. 2006, 13:20 – Honza Hučín (Odkaz)

Ad [33]:
Jsem v SEO laik, takže nevím, nakolik pár ušetřených řádků kódu může zlepšit výsledky. Myslel jsem to tak, že za lepší pozici platíš menší uživatelskou vlídností, protože každý komentující musí aspoň jednou otázku zopovědět. Ale jasně, každý může mít svou "filosofii" tvorby webu, rozhodnou uživatelé...
Jinak řešení pomocí analýzy textu (zachytávání http v titulku, signální slova apod.) je jistě možné a asi bude i fungovat.

[35] 24. 7. 2006, 17:21 – smajli (Odkaz)

No já jsem taky laik, asi ve všem, ale ve své knize žádný script nemám. Možná to mám blbě ale funguje mi to. Abych to upřesnil byl tam, ale po přečtení této diskuse, že robot si přečte správnou odpověď ve scriptu a následné lavírování se součty a tak, jsem dospěl k názoru, že bych mu to mohl stížit a těch pár řádků kódu jsem připsal ke scriptu co se mi načítá externě. Takže kód stránky je malej a robot si myslím, externí javascripty eště neumí. Zatím to funguje.

[36] 26. 7. 2006, 22:06 – Pája (Odkaz)

zdar, pomuze mi to nekdo zabudovat do wordpressu??? vlozim tam ten kod, vsechno se me zneviditelni, ale uz se me neodesle..kdyz tak se me nekdo ozvete na 343-812-156...dik

Za den jich smaznu tak 40, a to si vemte ze odjedete na 14dni pryc,,,

[37] 3. 8. 2006, 14:54 – Honza Hučín (Odkaz)

Ad [36]: Wordpress bohužel neumím... to jen abys věděl, že jsem to četl :D

[38] 8. 8. 2006, 08:20 – dgx (Odkaz)

[33] AZORe, naprosto netušíš, o čem mluvíš. Tuhle bariéru můžeš úplně v klidu používat, na SEO ani vyhledávače nebude mít sebemenší vliv.

[39] 8. 8. 2006, 08:34 – AZOR (Odkaz)

Jestli mi chceš tvrdit, že to nezvětší velikost stránky a že tam nebude navíc javasctipt, kterej je tudíš zbytečnej, když to jde jinak.
Tak prosim. A jak jsem psal tak poměr text ku zdrojovému kodu se také změní. Nevim jak pro Tebe ale pro mě jsou i takovéhle maličkosti{ale to už jsem tu psal, že?} (a hlavně zbytečnosti, když to jde udělat jinak) osobně bych dal přednost jakékémukoliv řešení na straně serveru, v případě nejistoty pak otázka...
Ovšem je to jinak dobrý nápad a hezké řešení, nic proti němu nemam..

[40] 8. 8. 2006, 09:32 – Jiří Bureš (Odkaz)

[39] Daleko víc zvětší velikost stránky ta hromada spamu.

Nic se nemá přehánět.

[41] 8. 8. 2006, 10:40 – dgx (Odkaz)

[39] v případě, že ke stránce už není linkován soubor s javascriptem, tak se zvětší cca o 30-40 bajtů. Na tebou linkované stránce social-engineering.eu zabírají mnohanásobně větší místo mezery a absolutně zapisované odkazy.

Ale ono je to jedno. Použití jednoho elementu neovlivní hustotu klíčových slov natož SEO.

Naopak, jestli něco SEO ovlivňuje zcela rozhodujícím způsobem, tak to jsou komentáře. Jsi si jist, že všichni komentující jsou schopní copywriteři a píší komentáře s plným pochopením tvé SEO strategie? Že v komentářích použijí každých 30 bajtů naplno?

[42] 8. 8. 2006, 14:47 – Wu (Odkaz)

Tak jsem tuhle ochranu zkusil, čistě jako prevenci, protože jsem dosud neměl žádný spam. A hádejte co - hned ten první tím prolezl :-(.

[43] 8. 8. 2006, 15:02 – Honza Hučín (Odkaz)

Ad [42]: Ano, na jednom webu se mi stalo, že cosi prolezlo, podobně se to stalo i Yuhůovi. Myslím si podobně jako Y., že robot prostě zrovna náhodně uhodl, co se má vyplnit. Zdá se, že to byl ojedinělý případ. Doporučuju sledovat dlouhodobě a případně změnit konstantu.

[44] 8. 8. 2006, 15:34 – Wu (Odkaz)

[43] Budu to sledovat, dost mě to zaskočilo :) Je pravda že mám konstantu dost nízkou, raději ji změním. A přidám ještě druhé, skryté submit tlačítko.

[45] 10. 8. 2006, 23:20 – Kate (Odkaz)

Potřebovala bych pomoct s vložením tohohle blokátoru na jedny stránky, nenašel by se někdo ochotný? nejsem sice úplný antitalent, ale tohle je na mně fakticky trochu moc... předem dík

[46] 11. 8. 2006, 08:15 – Honza Hučín (Odkaz)

Ad [45]: Jestli chceš pomoct, dej sem nějaký kontakt. Ještě rychlejší pomoc bys pak získala přes diskuse.jakpsatweb.cz .

[47] 13. 8. 2006, 21:47 – Kate (Odkaz)

Dík ,že ses oézval, napiš mi na k.a.c.i.i.k@seznam.cz , budu skákat do storpu, jestli se to nějak vyřeší

[48] 18. 8. 2006, 21:39 – AZOR (Odkaz)

ad 41 pro dyx
[39] Nevim jestli přímo o 40 bajtu (taky záleží na kodovani) A nehodlam se tu hádat o pár desitek bajdu. ¨
Ohledně mé www, tak jsi se tam určitě dočetl, že jde o novou www, a taky nani stále makam, a věř, že ted je tam nějaká verze, kvuli staří a sandboxu. A ted dělam RS k tomu, takže mezery rozhodně vychytané nemam (ale budou). Absolutní odkazy jsou schválně, nedávno o nich byla diskuze na sitepointu a spouste odborniku, psala, že raději používaj raději celé url (neni jenom Google/Msn/Yahoo ale i spousta vyhledávaču jinejch.) Jinak je to muj redakčni systém, takže to na relativni předělam přepsánim v jenom souboru. Ano zvětšuje to velikost a taky jsem se dost rozhodoval jestli jo nebo ne. Ale o ostatni bajty se peru, necht je dukazem posilani novinek a název souboru "a.php" :o)))
Komentáře? To rozhodně oblivnuji a u blogu převážně, ale bavime se snad o tom jak proti spamu, nikoliv jestli jo komentaře nebo ne. Ostatně- spousta lidi, po měsící komentáře zamyká, kvuli spamu, takže pak Ti zbyde jen to co jsi si napsal, pokud to do té doby nikdo neokometuje.
Ale hádat se tu snad nebudem, řekl jsem svuj názor.

ps) trošku se mi dotklo "mou linkované", to vypadá jako kdybych tu spamoval :-/, nehezký obrat, takže se podepisuji svou fun www :D, a předem upozornuji, že tam nemam naprosto žádné seo a tudíš neštřim ani stovkama bajtu...

[49] 24. 8. 2006, 08:32 – krteczek (Odkaz)

Myslím že stránka s formulářem (aď už diskuze pod článkem nebo kniha návštěv, či třeba přihlašovací formulář) by měla být doplněna o ten jeden input (je jedno jakým způsobem je řešeno vložení toho textu), já preferuji náhodně vybrané textové číslo před obrázkem (captcha).

Tady se jedná o formuláře a jsem přesvědčen, že SEO optimalizace formuláře je ptákovina na entou... Formulář má být především přístupný.
krteczek

[50] 18. 9. 2006, 09:48 – Jan Pejša

Já vycházím z toho, že robot neumí javascript. Při odeslání formuláře vypočítám javascriptem nějaký příklad (1 + 2 + 3), jehož výsledek si pak zkontroluji v PHP - prozatím (již 1 rok) je to 100% účinné pro mé potřeby. Nevýhoda: při vypnutí javascriptu se příspěvek nepřidá.

[51] 19. 9. 2006, 06:56 – llook (Odkaz)

[50] Pokud bys přidal ještě textové pole s popiskem "jedna plus dva plus tři" do sekce noscript, tak je to prakticky totéž.

[52] 8. 10. 2006, 01:24 – MArk

Kde berete tu jistotu že SPAMbot nezvládne dokonale interpretovat javascript ? Vzdyt si na to může vzít přímo jádro GECKO -- jednoho z nejvyspelejsich prohlizecu s plnohotnotnou podporou JS, CSS a vseho mozneho. Necha si prechouroustat tyhle vase "triky" a zabyva se uz jen tim co gecko vyplivne na vystup, potom se jen rozhodne ignorovat vsechny pole ktere nejsou videt (zjisti si hodnotu vlastnosti display pro dany element, eventuelne muze pouzit i vyspelejsi kontrolu viditelnosti pokud by tu byla nejaka snaha prekryvat bloky pomoci z-index) a nakonec vyplni jen to, co by mohl vyplnit uzivatel (navic treba muze zkusit vyplnit nejdriv jedno pole, dve, pak jine dve, pak tri ... a takhle klidne cely den z ruznych ip, napriklad zneuziti anonymizacni site TOR) ... sazime na prilisnou hloupost spambotu, ta vsak pravdepodobne nebude trvat uz moc dlouho, protoze vyse popsane vlastnosti spambota, neni az tak slozite implementovat. Co potom ??

[53] 8. 10. 2006, 14:49 – Honza Hučín (Odkaz)

Ad [52]: Jistotu nemám. Teoreticky se samozřejmě dá napsat nabušený komentářový spambot. Ale teoreticky si můžu vymyslet lecjakou konstrukci. Vycházím z praxe.

Praxe ukazuje, že roboti prostě zatím JS neumějí. Nepochybuj o tom, že už leckoho napadlo napsat robota umějícího JS, ale neudělal to. Proč? Asi se to nevyplatí.

Ochrana zmíněná v článku je jednoduchá. Až přijdou roboti, kteří se budou umět přes ni dostat, nasadím jinou, sofistikovanější. Teď se mi do ní nevyplatí investovat čas, protože tahle stačí. Myslím, že podobně uvažuje hodně lidí.

[54] 14. 11. 2006, 10:01 – Feedja

function Priklad($zadani = "" ) {
$CZcislovky = array (1=>"jedna", "dva", "tři",
"čtyři", "pět", "šest",
"sedm", "osm", "devět");

$CZznamenko = array (0=>"plus","krát");>

if ($zadani == "") {
$prvni = rand(1,9);
$druhy = rand(1,9);
$znamenko = rand(0,1);
return $CZcislovky[$prvni]." ".$CZznamenko[$znamenko]." ".$CZcislovky[$druhy];
} else {
$zadani=trim($zadani);
list($prvni, $znamenko, $druhy) = explode(" ", $zadani);
if (array_search($znamenko,$CZznamenko)==0){
return array_search($prvni,$CZcislovky)+array_search($druhy,$CZcislovky);
} else {
return array_search($prvni,$CZcislovky)*array_search($druhy,$CZcislovky);
}
}
}

$zadani=Priklad(); ?>
</br><p id="ochranaprednima">
<strong>Kolik je <? echo $zadani ?> ?</strong>
<input type="text" size="10" name="ochrana" value="" id="ochranapred">(ochrana proti nevyžádanému příspěvku)</p>
<script>
<!-- /* tento skript vloží číslici do příslušného políčka automaticky */
document.getElementById("ochranapred&quot;).value="<? echo Priklad($zadani) ?>"
document.getElementById("ochranaprednima").style.display = "none"
-->
</script>
<input type="hidden" name="zadani" value="<? echo $zadani ?>">

[55] 24. 12. 2006, 13:12 – Rik (Odkaz)

Pěkný a přehledný článek

[56] 29. 12. 2006, 20:42 – Miloš (Odkaz)

Díky, je to geniální. Snad to bude i fungovat :-)

[57] 28. 1. 2007, 20:50 – E.T.

Rád bych se podělil o triviální řešení bez posílání hodnot skrytých polí, javascriptu a cookies:

Při vstupu ne stránku zapíši do session čas a formulář vložím do podmínky, která bude platná až po 15 vteřinách. Do té doby je místo formuláře výzva ke strpení a provedení reloadu.

Přes tohle vám robot neproleze a funguje to spolehlivě ve všech prohlížečích. Mnohde je to nepoužitelné řešení, ale pod diskuze ideální.

K tomuto článku není možné vkládat komentáře.

© Honza Hučín 2004–6

Šuplík běží na PIPNI.CZ. Díky!

sber.cermat.cz

RSS Šuplíku

RSS komentářů – souhrnně

U každého článku je samostatný RSS kanál pro komentáře.

Výběr článků

Posledních 10 článků

nebo podle data:

nebo hledání fulltextem:

Archiv všech článků

Poslední komentáře

Zabili mě, parchanti [2]

8. 8. 16:48 | Pepa

Cestou kolem blogu [2]

7. 8. 21:26 | Honza Hučín

Cestou kolem blogu [1]

7. 8. 21:02 | Honza

Vrtulník nad hlavou [3]

6. 8. 14:29 | Pepa

Taková hra na volby [1]

3. 8. 18:29 | Honza

Nejčtenější

Taková hra na volby (1)

O mně

*1967, absolvent MFF UK v Praze (1991)

statistik, analytik, programátor, učitel, hudebník

nyní Ústav pro informace ve vzdělávání

Životopis (RTF)

Napište mi