Ako testy písania odhaľujú podvádzanie? Ako kontrolujeme ten náš

Testy písania odhaľujú podvádzanie tak, že kontrolujú záznam úderov za každým výsledkom. Náš test každý výsledok prepočíta z jeho záznamu úderov, overí hash, otestuje štruktúru a časovanie záznamu a každý meraný výsledok nad 130 WPM, ktorého časovanie navyše vyzerá nezvyčajne, nepustí do verejných rebríčkov, kým neprejdeš opakovaným testom. Kontroly časovania zachytia nedbalých botov; opakovaný test prinúti aj dôkladného bota urobiť všetko ešte raz.

Prvý bot, ktorý prekonal naše kontroly časovania, bol náš vlastný.

Náš pomocník na end-to-end testy stláčal klávesy v pevnom intervale 40 ms, pretože presne to testovací skript robí. Server výsledok prepočítal, potvrdil hash a beh označil za podozrivý: nulový rozptyl medzi úderami, nulový rollover, rovnaké časy držania. Museli sme pridať náhodné kolísanie pri každom slove a občasné 80- až 300-milisekundové pauzy „na premýšľanie“, aby naša vlastná sada testov dokázala odoslať výsledok, ktorý vyzerá ľudsky. Táto možnosť je v kóde stále, pod názvom humanLike.

Kontroly fungujú proti všetkému, čo sa nesnaží, a všetko, čo sa snaží, ich dokáže prejsť, preto návrh kladie skutočnú váhu na opakovaný test.

Krok jeden: všetko prepočítať

Tvoj prehliadač nám neposiela WPM. Posiela záznam úderov (každú udalosť keydown, keyup, input a composition s časovou značkou z monotónnych hodín performance.now()), metriky, ktoré vypočítal, a hash SHA-256 kanonického výsledku.

Server spustí na zázname rovnaký kód metrík a porovná výsledky. Ak sa ktorékoľvek číslo líši o viac než 0,01, výsledok sa zamietne ako metrics_mismatch. Ak hash nesedí, zamietne sa ako hash_mismatch. Rozšírenie prehliadača, ktoré upravuje pole WPM, najčastejší podvod na stránkach, ktoré dôverujú klientovi, tu zlyhá. Rovnaké funkcie vytvárajú číslo na tvojej obrazovke aj v databáze, a preto môže naša stránka o metrikách sľúbiť, že jej vypočítaný príklad sa zopakuje na dve desatinné miesta.

Prečo test nemeriame na serveri? Potom by tvoj výsledok zahŕňal aj sieť. Každý úder by k nám prišiel trochu neskoro, o hodnotu, ktorá sa mení podľa tvojho pripojenia, a rýchly pisár na pomalej linke by prišiel o rýchlosť, ktorú naozaj mal. Záznam nám dáva hodiny klienta pre presnosť a prepočet na serveri pre poctivosť.

Krok dva: dáva záznam zmysel?

Pred akoukoľvek analýzou časovania prichádzajú jednoduché kontroly tvaru odoslaných dát:

  • Test musí trvať aspoň 15 sekúnd alebo 10 slov. Kratšie behy sú príliš zašumené na zaradenie do poradia a najľahšie sa nafukujú.
  • Výsledok nemôže prísť skôr, než sa test mohol skončiť: jeho začiatok plus jeho vlastná dĺžka. Výsledok na 60 sekúnd, ktorý príde dvadsať sekúnd po začiatku, sa nestal.
  • Počet udalostí musí zodpovedať napísaným znakom.
  • Na počítači musí každá udalosť input nasledovať do 50 ms po udalosti keydown. Tým sa zachytí vložený text, skriptované udalosti input a väčšina nástrojov na vstrekovanie úderov, ktoré vypúšťajú text bez fyzickej klávesy. Písanie cez editor vstupnej metódy (IME composition) je výnimkou a výsledky z telefónu sa nedostanú do verejných rebríčkov.
  • Záznam bez začiatku, bez konca alebo s nemonotónnymi časovými značkami je poškodený a zamietne sa rovno.

Nič z toho nie je dômyselné, no odstráni to väčšinu objemu.

Krok tri: čo môže prezradiť časovanie úderov?

Toto je časť, ktorú zámerne nezdokumentujeme úplne: zoznam znakov je verejný, hranice a váhy nie. Zverejnená hranica je terč. Keby sme napísali „smerodajná odchýlka pod N milisekúnd sa označí“, ďalšia verzia každého skriptu by pridala N plus jedna. Znaky, ktoré hodnotíme:

Priemerný odstup medzi klávesami a to, ako veľmi kolíše. Ľudské písanie je nepravidelné. V štúdii Dhakala a kolegov z roku 2018 so 168 960 pisármi bol priemerný interval medzi úderami asi 239 ms so smerodajnou odchýlkou asi 112 ms. Skript, ktorý píše v pevnom intervale, nemá takmer žiadne kolísanie; štúdia na arXiv z roku 2025 o CAPTCHA založenej na úderoch videla presne to pri svojom testovacom botovi, ktorý písal s pevným oneskorením 50 ms. Toto je náš najsilnejší signál a práve na ňom náš pomocník zakopol.

Podiel odstupov pod 40 ms. Odstup 40 ms udržaný dlhodobo je 1 500 znakov za minútu, teda 300 WPM pri piatich znakoch na slovo. Prsty takto krátke jednotlivé odstupy naozaj vytvárajú, keď pri rollovere prekrývajú klávesy, takže jeden krátky odstup nič neznamená. Záznam, v ktorom je takto krátka veľká časť odstupov, nie je písanie.

Časy držania kláves. Skutočné prsty kolíšu o desiatky milisekúnd; syntetické udalosti majú často rovnaké alebo takmer nulové časy držania, pretože nástroj vypustí keydown a keyup tesne po sebe.

Podiel rolloveru. Ako často ide ďalšia klávesa dolu skôr, než predchádzajúca príde hore. Dhakal nameral priemerný podiel rolloveru 25 %, pričom väčšina rýchlych pisárov robila rollover pri 40 až 70 % stlačení a klávesy sa v priemere prekrývali o 30 ms. Pomalí pisári ho takmer nepoužívajú, takže rýchly výsledok bez rolloveru vyčnieva. Boti klávesy prekrývajú zriedka.

Najdlhšia pauza, výkyvy rýchlosti zo sekundy na sekundu a podiel odstupov nad jednu sekundu. Ľudia váhajú spôsobmi, ktoré treba skriptu výslovne prikázať napodobniť.

Hodnotiaci model tieto znaky kombinuje a môže výsledok označiť za podozrivý. Pod 130 WPM samotné označenie nič nezamieta. Tvoj výsledok sa pred tebou nikdy neskryje; tieto kontroly rozhodujú len o tom, či sa zaradí do poradia.

Dokáže podvádzanie v teste písania prejsť kontrolami časovania?

Áno, ak je podvod zostavený starostlivo. Štúdia Davida Condreyho na arXiv z januára 2026 testovala detektory časovania úderov, ktoré mali odlíšiť text napísaný človekom od textu vytvoreného AI. Plne automatizované vstrekovanie oddelili dokonale, no útoky s ľudským časovaním (človek, ktorý prepisuje text od AI, alebo program, ktorý vyberá oneskorenia z dát ľudského písania) unikli všetkým piatim klasifikátorom v najmenej 99,8 % prípadov. Štúdia je o odhaľovaní autorstva, nie o testoch písania, no ponaučenie platí aj tu: krok tri zachytí nedbalých a nič viac.

Náš vlastný testovací pomocník ukazuje to isté v malom: náhodné kolísanie a pár páuz ho posunuli od zjavne syntetického k uveriteľnému.

Krok tri je teda filter. Verdikt prichádza z kroku štyri.

Krok štyri: overovací opakovaný test

Ak je meraný výsledok nad 130 WPM a jeho časovanie navyše vyzerá nezvyčajne, uvidíš ho a uloží sa, no do verejných rebríčkov sa nedostane, kým neprejdeš overovacím opakovaným testom. Je to nový 30-sekundový test a musíš v ňom dosiahnuť aspoň 75 % rýchlosti, ktorú si si nárokoval(a). Jednorazová náhoda alebo požičaný záznam druhý beh neprežije.

Prečo 130 WPM? Je to asi dva a pol násobok priemeru 51,56 WPM v Dhakalových dátach, ďaleko nad väčšinou pisárov, a kto naozaj píše tak rýchlo, zvládne to dvakrát. Náhly rýchly výsledok so zvláštnym časovaním má presne ten tvar, aký vytvorí požičaný záznam alebo skript, a ak je poctivý, jeden test navyše je malá cena.

Opakovaný test je obyčajný test písania s obyčajným textom, nie skreslený obrázok ani stránka zvláštnych symbolov. Ťažko čitateľný text spomalí každého a najviac spomalí práve poctivých rýchlych pisárov, ktorých má opakovaný test očistiť. Overenie, ktorým poctiví rýchli pisári neprejdú, je horšie než žiadne. Obyčajný text robí kontrolu aj férovou: vlastný záznam opakovaného testu prechádza rovnakými kontrolami časovania ako každý iný výsledok.

Limity a zákazy

Odosielanie výsledkov má limity: tridsať za minútu na prihláseného používateľa, šesťdesiat na IP adresu. Účet, ktorý opakovane spúšťa kontroly, dostane skrytý zákaz (shadow ban), teda je potichu skrytý z rebríčkov, a tri vážne udalosti ochrany proti podvádzaniu za 24 hodín ho spustia automaticky. Počítanie udalostí v časovom okne znamená, že jeden zvláštny výsledok ťa nikdy nebude stáť účet, kým skript, ktorý zlyháva znova a znova, sa rýchlo zastaví.

Rebríčky všetkých čias navyše vyžadujú na účte 30 minút písania, takže nový účet s jedným dokonalým behom sa na ich vrchol nedostane.

Čo ťa môže označiť omylom

Väčšina označených výsledkov nie je podvádzanie. Poctivé spôsoby, ako spustiť kontrolu:

Automatické opravy na telefóne. Náhrada príde ako jedna udalosť input, ktorá zmení niekoľko znakov. Počítame ju ako jedno stlačenie klávesy, označíme ju a výsledok s poznámkou nepustíme do verejných rebríčkov, nezamietneme ho.

Vložený text. Vkladanie je zablokované a výsledok, pri ktorom sa oň niekto pokúsil, sa z rebríčkov vylúči.

Prepínanie kariet. Ak počas testu fokus opustí stránku na viac než dve sekundy, test sa označí ako prerušený; uloží sa a zobrazí, ale do poradia sa nezaradí.

Pauzy. Odstup dlhší než päť sekúnd v teste na slová alebo citát označí výsledok ako pozastavený. Rovnaké zaobchádzanie.

IME composition. Japonský, kórejský a čínsky vstup prichádza cez udalosti composition, preto pre ne pravidlo o keydown vynechávame. Ak niečo aj tak vyzerá zle, je to chyba a radi by sme dostali záznam.

Výsledky offline. Výsledok synchronizovaný viac než desať minút po skončení zostane v tvojej histórii bez zaradenia do poradia, pretože jeho hodiny nevieme overiť.

Skutočná rýchlosť. Nad 130 WPM sa stretneš s opakovaným testom, pravdepodobne hneď v prvý dobrý deň.

Ako sa odvolať

Každé vylúčenie ukazuje vo tvojej histórii svoj dôvod. Ak si myslíš, že sa pri výsledku alebo obmedzení mýlime, napíš e-mail na adresu pre odvolania uvedenú na našej stránke o ochrane proti podvádzaniu z adresy, ktorú máš na účte, s odkazom na výsledok alebo s dátumom a časom testu. Človek si pozrie prehrávanie úderov a odpovie do niekoľkých dní. O odvolaniach nikdy nerozhoduje len automatický model.

Nezverejnili sme práve návod, ako kontrolami prejsť? Čiastočne. Zoznam znakov sa dal zo správania vždy odhaliť a hranice zostávajú súkromné. Dôležitý je opakovaný test a spôsob, ako ním prejsť, je písať.

Často kladené otázky

Ako testy písania odhaľujú botov?

Dobré testy čítajú záznam úderov: či je za každým znakom stlačenie klávesy, ako veľmi kolíšu odstupy medzi klávesami a ako sa klávesy držia a prekrývajú. Skripty bývajú príliš pravidelné; dôkladní boti dokážu ľudí napodobniť, a preto pridávame opakovaný test.

Dokáže bot prejsť ochranou proti podvádzaniu v teste písania?

Dôkladný bot dokáže prejsť kontrolami časovania: výskum detektorov časovania úderov zistil, že sfalšované ľudské časovanie im uniklo takmer zakaždým. Preto rýchle výsledky zadržíme do opakovaného testu, ktorým musí bot prejsť znova s druhým záznamom, ktorý prejde rovnakými kontrolami.

Prečo sa môj výsledok v teste písania nezaradil do poradia?

Zvyčajne ide o test kratší než 15 sekúnd alebo 10 slov, pauzu dlhšiu než päť sekúnd, prepnutie karty alebo výsledok nad 130 WPM, ktorý čaká na opakovaný test. Dôvod ukazuje tvoja história.

Zdroje