Kako testovi kucanja otkrivaju varanje? Kako proveravamo naš

Testovi kucanja otkrivaju varanje tako što proveravaju zapis pritisaka tastera iza svakog rezultata. Naš test ponovo računa svaki rezultat iz zapisa pritisaka, proverava heš, ispituje strukturu i ritam zapisa, a svaki mereni rezultat iznad 130 WPM čiji ritam uz to izgleda neobično drži van javnih rang-lista dok ne prođeš ponovljeni test. Provere ritma hvataju nemarne botove; ponovljeni test tera i pažljivog bota da sve uradi ispočetka.

Prvi bot koji je prošao naše provere ritma bio je naš.

Naš pomoćni alat za end-to-end testove pritiskao je tastere u fiksnom razmaku od 40 ms, jer to radi skripta za testiranje. Server je ponovo izračunao rezultat, potvrdio heš i ocenio pokušaj kao sumnjiv: nula varijacije između pritisaka, nula preklapanja, identična vremena držanja tastera. Morali smo da dodamo nasumično podrhtavanje po reči i povremene pauze „razmišljanja” od 80 do 300 ms pre nego što je naš sopstveni paket testova mogao da pošalje rezultat koji izgleda ljudski. Ta opcija je i dalje u kodu, pod imenom humanLike.

Provere deluju protiv svega što se ne trudi, a sve što se trudi može da ih prođe, pa dizajn pravu težinu stavlja na ponovljeni test.

Prvi korak: ponovo izračunaj sve

Tvoj pregledač nam ne šalje WPM. Šalje zapis pritisaka (svaki keydown, keyup, input i composition događaj, sa vremenskom oznakom monotonog sata performance.now()), metrike koje je izračunao i SHA-256 heš kanonskog rezultata.

Server pokreće isti kod za metrike na zapisu i upoređuje. Ako se bilo koji broj razlikuje za više od 0,01, rezultat se odbija kao metrics_mismatch. Ako se heš ne poklapa, odbija se kao hash_mismatch. Proširenje za pregledač koje menja polje WPM, najčešći način varanja na sajtovima koji veruju klijentu, ovde pada. Iste funkcije proizvode broj na tvom ekranu i u bazi podataka, zbog čega naša stranica o metrikama može da obeća da se njen izračunati primer reprodukuje na dve decimale.

Zašto test ne merimo na serveru? Onda bi tvoj rezultat uključivao i mrežu. Svaki pritisak bi do nas stizao malo kasnije, za iznos koji zavisi od tvoje veze, a brz daktilograf na sporoj liniji izgubio bi brzinu koju je zaista imao. Zapis nam daje sat klijenta radi tačnosti, a ponovno računanje na serveru radi poštenja.

Drugi korak: da li zapis ima smisla?

Pre bilo kakve analize ritma, jednostavne provere oblika poslatih podataka:

  • Test mora da traje najmanje 15 sekundi ili 10 reči. Kraći pokušaji imaju previše šuma da bi se rangirali i najlakše ih je naduvati.
  • Rezultat ne može da stigne pre nego što je test mogao da se završi: njegov početak plus njegova sopstvena dužina. Rezultat od 60 sekundi koji stigne dvadeset sekundi posle početka nije se dogodio.
  • Broj događaja mora da odgovara otkucanim karakterima.
  • Na računaru svaki input događaj mora da usledi u roku od 50 ms posle keydown događaja. Ovo hvata nalepljeni tekst, skriptovane input događaje i većinu alata za ubacivanje pritisaka, koji šalju tekst bez fizičkog tastera. Kucanje kroz uređivač metoda unosa (IME composition) je izuzeto, a rezultati sa telefona ostaju van javnih rang-lista.
  • Zapis bez početka, bez kraja ili sa vremenskim oznakama koje nisu monotone je neispravan i odmah se odbija.

Ništa od ovoga nije pametno, ali uklanja najveći deo količine.

Treći korak: šta može da otkrije ritam pritisaka?

Ovo je deo koji namerno ne dokumentujemo u potpunosti: spisak osobina je javan, granice i težine nisu. Objavljena granica je meta. Kad bismo rekli „standardna devijacija ispod N milisekundi se označava”, sledeća verzija svake skripte dodala bi N plus jedan. Osobine koje ocenjujemo:

Prosečan razmak između tastera i koliko varira. Ljudsko kucanje je nepravilno. U studiji Dhakala i saradnika iz 2018. na 168.960 daktilografa prosečan razmak između tastera bio je oko 239 ms, sa standardnom devijacijom od oko 112 ms. Skripta koja kuca u fiksnom razmaku skoro da nema varijacije; studija CAPTCHA zasnovane na pritiscima tastera objavljena na arXivu 2025. videla je upravo to kod svog test-bota, koji je kucao sa fiksnim kašnjenjem od 50 ms. Ovo je naš najjači signal, i baš na njemu je pao naš pomoćni alat.

Udeo razmaka kraćih od 40 ms. Razmak od 40 ms, ako se održava, znači 1.500 karaktera u minutu, ili 300 WPM uz pet karaktera po reči. Prsti zaista proizvode pojedinačne tako kratke razmake kad preklapaju tastere, pa jedan kratak razmak ne znači ništa. Zapis u kom je veliki udeo razmaka toliko kratak nije kucanje.

Vremena držanja tastera. Pravi prsti variraju za desetine milisekundi; sintetički događaji često imaju identična vremena držanja ili vremena blizu nule, jer alat šalje keydown i keyup jedan odmah za drugim.

Udeo preklapanja. Koliko često sledeći taster ide dole pre nego što se prethodni podigne. Dhakal je izmerio prosečan udeo preklapanja od 25%, pri čemu je većina brzih daktilografa preklapala tastere kod 40 do 70% pritisaka, a tasteri su se u proseku preklapali 30 ms. Spori daktilografi skoro da ne preklapaju, pa se brz rezultat bez preklapanja ističe. Botovi retko preklapaju tastere.

Najduža pauza, skokovi brzine iz sekunde u sekundu i udeo razmaka dužih od jedne sekunde. Ljudi oklevaju na načine koje skripti mora neko da kaže da oponaša.

Model ocenjivanja kombinuje ove osobine i može da označi rezultat kao sumnjiv. Ispod 130 WPM oznaka sama po sebi ništa ne odbija. Tvoj rezultat nikad nije sakriven od tebe; ove provere odlučuju samo o tome da li se rangira.

Može li varanje na testu kucanja da prođe provere ritma?

Može, ako je varanje pažljivo napravljeno. Rad Davida Condreya objavljen na arXivu u januaru 2026. testirao je detektore ritma pritisaka namenjene razlikovanju teksta koji je otkucao čovek od teksta koji je generisala veštačka inteligencija. Potpuno automatizovano ubacivanje razlikovali su savršeno, ali napadi sa ljudskim ritmom (osoba koja ponovo kuca tekst veštačke inteligencije, ili program koji uzima kašnjenja iz podataka o ljudskom kucanju) izbegli su svih pet klasifikatora u najmanje 99,8% slučajeva. Rad se bavi otkrivanjem autorstva, a ne testovima kucanja, ali pouka važi i ovde: treći korak hvata nemarne i ne mnogo više od toga.

Naš sopstveni pomoćni alat pokazuje isto u malom: nasumično podrhtavanje i nekoliko pauza pomerili su ga od očigledno sintetičkog do uverljivog.

Dakle, treći korak je filter. Presudu donosi četvrti korak.

Četvrti korak: ponovljeni test potvrde

Ako je mereni rezultat iznad 130 WPM i njegov ritam uz to izgleda neobično, vidiš ga i on se čuva, ali ostaje van javnih rang-lista dok ne prođeš ponovljeni test potvrde. To je nov test od 30 sekundi, i treba da dostigneš najmanje 75% brzine koju si prijavio. Jednokratna slučajnost ili pozajmljen zapis ne preživljavaju drugi pokušaj.

Zašto 130 WPM? To je oko dva i po puta više od proseka od 51,56 WPM u Dhakalovim podacima, daleko iznad većine daktilografa, a svako ko zaista kuca toliko brzo može to da uradi dvaput. Iznenadni brz rezultat sa čudnim ritmom je oblik koji proizvodi pozajmljen zapis ili skripta, a ako je pošten, jedan dodatni test je mala cena.

Ponovljeni test je običan test kucanja, sa običnim tekstom, a ne izobličena slika ili stranica čudnih simbola. Tekst koji se teško čita usporava svakoga, a najviše usporava baš poštene brze daktilografe koje ponovljeni test treba da oslobodi sumnje. Provera koju pošteni brzi daktilografi ne prolaze gora je nego nikakva. Običan tekst takođe čini proveru poštenom: zapis samog ponovljenog testa prolazi iste provere ritma kao i svaki drugi rezultat.

Ograničenja učestalosti i zabrane

Slanje rezultata je ograničeno po učestalosti: trideset u minutu po prijavljenom korisniku, šezdeset po IP adresi. Nalog koji stalno pada na proverama dobija skrivenu zabranu (shadow ban), što znači da se tiho uklanja sa rang-lista, a tri ozbiljna događaja protiv varanja u roku od 24 sata to automatski pokreću. Brojanje događaja unutar vremenskog prozora znači da te jedan čudan rezultat nikad ne košta naloga, dok se skripta koja pada iznova i iznova brzo zaustavlja.

Rang-liste svih vremena takođe traže 30 minuta kucanja na nalogu, pa nov nalog sa jednim savršenim pokušajem ne može da dođe na vrh.

Šta može slučajno da te označi

Većina označenih rezultata nije varanje. Pošteni načini da padneš na nekoj proveri:

Automatsko ispravljanje na telefonu. Zamena stiže kao jedan input događaj koji menja nekoliko karaktera. Računamo je kao jedan pritisak, označavamo je i držimo rezultat van javnih rang-lista uz napomenu, a ne odbijamo ga.

Nalepljen tekst. Lepljenje je blokirano, a rezultat kod kog je pokušano isključuje se sa rang-lista.

Prebacivanje kartica. Ako fokus napusti stranicu na više od dve sekunde tokom testa, test se označava kao prekinut; čuva se i prikazuje, ali se ne rangira.

Pauziranje. Razmak duži od pet sekundi u testu sa rečima ili citatom označava rezultat kao pauziran. Isti postupak.

IME composition. Japanski, korejski i kineski unos stižu kroz composition događaje, pa za njih preskačemo pravilo o keydown događaju. Ako nešto i dalje izgleda pogrešno, to je greška u kodu i voleli bismo da dobijemo zapis.

Rezultati van mreže. Rezultat sinhronizovan više od deset minuta posle završetka ostaje u tvojoj istoriji nerangiran, jer ne možemo da proverimo njegov sat.

Kad si zaista brz. Iznad 130 WPM dočekaće te ponovljeni test, verovatno već prvog dobrog dana.

Kako da se žališ

Svako isključenje prikazuje svoj razlog u tvojoj istoriji. Ako misliš da smo pogrešili u vezi sa nekim rezultatom ili ograničenjem, pošalji mejl na adresu za žalbe sa naše stranice o sprečavanju varanja sa adrese tvog naloga, uz link rezultata ili datum i vreme testa. Čovek pregleda snimak pritisaka i odgovara u roku od nekoliko dana. O žalbama nikad ne odlučuje samo automatizovani model.

Da li smo upravo objavili uputstvo za prolazak provera? Delimično. Spisak osobina se oduvek mogao otkriti iz ponašanja, a granice ostaju tajne. Ponovljeni test je deo koji je važan, a način da ga prođeš je da kucaš.

Česta pitanja

Kako testovi kucanja otkrivaju botove?

Dobri čitaju zapis pritisaka: da li iza svakog karaktera stoji pritisak tastera, koliko variraju razmaci između tastera i kako se tasteri drže i preklapaju. Skripte su obično previše pravilne; pažljivi botovi mogu da oponašaju ljude, zbog čega dodajemo ponovljeni test.

Može li bot da prođe zaštitu od varanja na testu kucanja?

Pažljiv bot može da prođe provere ritma: istraživanje detektora ritma pritisaka pokazalo je da ih je lažiran ritam nalik ljudskom izbegao skoro svaki put. Zato brze rezultate zadržavamo do ponovljenog testa, koji bot mora ponovo da prođe sa drugim zapisom koji prolazi iste provere.

Zašto moj rezultat na testu kucanja nije rangiran?

Obično zbog testa kraćeg od 15 sekundi ili 10 reči, pauze duže od pet sekundi, prebacivanja kartice ili rezultata iznad 130 WPM koji čeka svoj ponovljeni test. Tvoja istorija prikazuje razlog.

Izvori