Testele de tastare detectează trișatul verificând jurnalul de apăsări din spatele fiecărui scor. Testul nostru recalculează fiecare rezultat din jurnalul lui de apăsări, verifică un hash, testează structura și tiparul de timp al jurnalului și ține în afara clasamentelor publice orice rezultat cronometrat de peste 130 WPM al cărui tipar de timp pare și el neobișnuit, până când treci un test repetat. Verificările de timp prind boții neglijenți; testul repetat îl obligă pe unul atent s-o ia de la capăt.
Primul bot care a trecut de verificările noastre de timp a fost al nostru.
Utilitarul nostru de teste end-to-end apăsa tastele la un interval fix de 40 ms, pentru că asta face un script de test. Serverul a recalculat rezultatul, a confirmat hash-ul și a marcat rularea ca suspectă: variație zero între apăsări, zero rollover, durate de apăsare identice. A trebuit să adăugăm variații aleatorii pentru fiecare cuvânt și pauze ocazionale „de gândire” de 80–300 ms înainte ca propria noastră suită să poată trimite un rezultat care să pară omenesc. Opțiunea e încă în cod, cu eticheta humanLike.
Verificările funcționează împotriva a tot ce nu încearcă să le păcălească, iar orice încearcă le poate trece, așa că proiectul pune greutatea reală pe un test repetat.
Pasul unu: recalculăm totul
Browserul tău nu ne trimite un WPM. Ne trimite jurnalul de apăsări (fiecare eveniment keydown, keyup, input și de compunere, cu marcaj de timp de la ceasul monoton performance.now()), cifrele pe care le-a calculat și un hash SHA-256 al rezultatului canonic.
Serverul rulează același cod de calcul pe jurnal și compară. Dacă vreun număr diferă cu mai mult de 0,01, rezultatul este respins ca metrics_mismatch. Dacă hash-ul nu se potrivește, e respins ca hash_mismatch. O extensie de browser care modifică câmpul WPM, cea mai obișnuită metodă de trișat pe site-urile care au încredere în client, pică aici. Aceleași funcții produc numărul de pe ecranul tău și pe cel din baza de date, motiv pentru care pagina noastră despre cifre poate promite că exemplul ei calculat se reproduce până la a doua zecimală.
De ce nu cronometrăm testul pe server? Pentru că atunci scorul tău ar include rețeaua. Fiecare apăsare ar ajunge la noi cu o mică întârziere, care variază în funcție de conexiune, iar cineva care tastează repede pe o linie lentă ar pierde viteză pe care chiar o avea. Jurnalul ne dă ceasul clientului pentru precizie și recalcularea de pe server pentru onestitate.
Pasul doi: are jurnalul sens?
Înainte de orice analiză de timp, verificări simple ale formei trimiterii:
- Testul trebuie să dureze cel puțin 15 secunde sau 10 cuvinte. Rulările mai scurte sunt prea zgomotoase ca să fie clasate și cel mai ușor de umflat.
- Un rezultat nu poate sosi înainte ca testul să se fi putut termina: momentul de start plus propria durată. Un rezultat de 60 de secunde care sosește la douăzeci de secunde după ce a început nu s-a întâmplat.
- Numărul de evenimente trebuie să se potrivească cu caracterele tastate.
- Pe calculator, fiecare eveniment input trebuie să urmeze unui keydown în cel mult 50 ms. Asta prinde textul lipit, evenimentele input generate de scripturi și majoritatea uneltelor de injectare a apăsărilor, care trimit text fără o tastă fizică. Tastarea printr-un editor de metode de introducere (compunere IME) este exceptată, iar rezultatele de pe telefon nu intră în clasamentele publice.
- Un jurnal fără început, fără sfârșit sau cu marcaje de timp nemonotone este invalid și e respins direct.
Nimic din toate acestea nu e ingenios, dar elimină cea mai mare parte a volumului.
Pasul trei: ce poate dezvălui tiparul de timp al apăsărilor?
Aceasta este partea pe care intenționat nu o documentăm complet: lista de caracteristici este publică, pragurile și ponderile nu. Un prag publicat este o țintă. Dacă am spune „o abatere standard sub N milisecunde este marcată”, următoarea versiune a oricărui script ar adăuga N plus unu. Caracteristicile pe care le punctăm:
Intervalul mediu dintre taste și cât de mult variază. Tastarea omenească este neregulată. În studiul lui Dhakal și al colegilor săi din 2018, pe 168.960 de persoane, intervalul mediu dintre taste a fost de circa 239 ms, cu o abatere standard de circa 112 ms. Un script care tastează la interval fix aproape că nu are variație; un studiu arXiv din 2025 despre un CAPTCHA bazat pe apăsări a observat exact asta la botul lui de test, care tasta cu o întârziere fixă de 50 ms. Acesta este cel mai puternic semnal al nostru și cel de care s-a împiedicat utilitarul nostru.
Proporția intervalelor sub 40 ms. Un interval de 40 ms, menținut, înseamnă 1.500 de caractere pe minut, adică 300 WPM la cinci caractere pe cuvânt. Degetele chiar produc intervale izolate atât de scurte când suprapun tastele în timpul rollover-ului, așa că un singur interval scurt nu înseamnă nimic. Un jurnal în care o mare parte din intervale sunt atât de scurte nu este tastare.
Duratele de apăsare a tastelor. Degetele reale variază cu zeci de milisecunde; evenimentele sintetice au adesea durate de apăsare identice sau aproape zero, pentru că unealta trimite keydown și keyup unul după altul.
Rata de rollover. Cât de des coboară tasta următoare înainte ca precedenta să se ridice. Dhakal a măsurat o rată medie de rollover de 25%, cei mai mulți dintre cei rapizi făcând rollover la 40–70% dintre apăsări, iar tastele se suprapuneau în medie cu 30 ms. Cei care tastează încet aproape că nu fac rollover, așa că un rezultat rapid fără rollover iese în evidență. Boții suprapun rareori tastele.
Cea mai lungă pauză, oscilațiile de viteză de la o secundă la alta și proporția intervalelor de peste o secundă. Oamenii ezită în feluri pe care un script trebuie să fie programat să le imite.
Un model de punctare combină toate acestea și poate marca un rezultat ca suspect. Sub 130 WPM, o marcare nu respinge nimic de una singură. Rezultatul tău nu îți este niciodată ascuns; aceste verificări decid doar dacă intră în clasament.
Poate trișatul la testele de tastare să treacă de verificările de timp?
Da, dacă metoda de trișat e construită cu grijă. O lucrare arXiv din ianuarie 2026 a lui David Condrey a testat detectoare bazate pe tiparul de timp al apăsărilor, menite să deosebească textul tastat de om de cel generat de AI. Ele au deosebit perfect injectarea complet automatizată, dar atacurile cu tipar de timp omenesc (o persoană care retastează text generat de AI sau un program care eșantionează întârzieri din date de tastare umană) au trecut de toate cele cinci clasificatoare în proporție de cel puțin 99,8%. Lucrarea e despre detectarea autorului, nu despre testele de tastare, dar lecția se aplică: pasul trei îi prinde pe cei neglijenți și nu mult mai mult.
Propriul nostru utilitar de teste spune același lucru la scară mică: variațiile aleatorii și câteva pauze l-au mutat de la evident sintetic la plauzibil.
Așa că pasul trei este un filtru. Verdictul vine din pasul patru.
Pasul patru: testul repetat de verificare
Dacă un rezultat cronometrat este peste 130 WPM și tiparul lui de timp pare și el neobișnuit, îl vezi și e salvat, dar rămâne în afara clasamentelor publice până treci un test repetat de verificare. Acesta este un test nou de 30 de secunde, iar tu trebuie să atingi cel puțin 75% din viteza declarată. O întâmplare norocoasă sau un jurnal împrumutat nu supraviețuiesc unei a doua rulări.
De ce 130 WPM? Este cam de două ori și jumătate media de 51,56 WPM din datele lui Dhakal, mult peste majoritatea celor care tastează, iar oricine chiar tastează atât de repede o poate face de două ori. Un rezultat rapid apărut brusc, cu un tipar de timp ciudat, are forma pe care o produce un jurnal împrumutat sau un script, iar dacă e onest, un test în plus e un preț mic.
Testul repetat este un test de tastare obișnuit, pe text obișnuit, nu o imagine distorsionată sau o pagină cu simboluri ciudate. Textul greu de citit îi încetinește pe toți, iar cei mai încetiniți sunt tocmai cei care tastează onest și repede, pe care testul repetat există să-i valideze. O verificare pe care o pică cei care tastează onest și repede e mai rea decât niciuna. Textul obișnuit face verificarea și corectă: jurnalul testului repetat trece prin aceleași verificări de timp ca orice alt rezultat.
Limite de frecvență și interdicții
Trimiterile au o limită de frecvență: treizeci pe minut pentru fiecare utilizator conectat, șaizeci pentru fiecare adresă IP. Un cont care declanșează mereu verificările primește un shadow-ban, adică este ascuns discret din clasamente, iar trei evenimente anti-trișare grave în 24 de ore declanșează asta automat. Numărarea evenimentelor într-o fereastră de timp înseamnă că un singur rezultat ciudat nu te costă niciodată contul, în timp ce un script care pică iar și iar se oprește repede.
Clasamentele din toate timpurile cer și 30 de minute de tastare în cont, așa că un cont nou cu o singură rulare perfectă nu poate ajunge în fruntea lor.
Ce te poate marca din greșeală
Cele mai multe rezultate marcate nu sunt trișat. Iată felurile oneste în care poți declanșa o verificare:
Corectarea automată pe telefon. O înlocuire sosește ca un singur eveniment input care schimbă mai multe caractere. O numărăm ca o singură apăsare, o marcăm și ținem rezultatul în afara clasamentelor publice cu o notă, nu cu o respingere.
Textul lipit. Lipirea este blocată, iar un rezultat în care s-a încercat lipirea este exclus din clasamente.
Schimbarea filelor. Dacă focusul părăsește pagina mai mult de două secunde în timpul unui test, acesta e marcat ca întrerupt; e salvat și afișat, dar nu intră în clasament.
Pauzele. Un interval de peste cinci secunde într-un test de cuvinte sau de citat marchează rezultatul ca fiind în pauză. Același tratament.
Compunerea IME. Textul în japoneză, coreeană și chineză sosește prin evenimente de compunere, așa că pentru ele sărim peste regula keydown. Dacă ceva tot pare în neregulă, e o eroare de program și am vrea să vedem jurnalul.
Rezultatele offline. Un rezultat sincronizat la mai mult de zece minute după ce s-a terminat rămâne în istoricul tău fără să intre în clasament, pentru că nu îi putem valida ceasul.
Faptul că ești cu adevărat rapid. Peste 130 WPM vei da de testul repetat, probabil chiar în prima ta zi bună.
Cum faci contestație
Fiecare excludere își arată motivul în istoricul tău. Dacă crezi că ne-am înșelat în privința unui rezultat sau a unei restricții, scrie la adresa pentru contestații de pe pagina noastră anti-trișare, de pe adresa asociată contului tău, cu linkul rezultatului sau cu data și ora testului. O persoană urmărește reluarea apăsărilor și răspunde în câteva zile. Contestațiile nu sunt niciodată decise doar de modelul automat.
Tocmai am publicat un ghid despre cum să treci de verificări? Parțial. Lista de caracteristici a putut fi dedusă oricând din comportament, iar pragurile rămân private. Testul repetat este partea care contează, iar felul în care îl treci este să tastezi.
Întrebări frecvente
Cum detectează testele de tastare boții?
Cele bune citesc jurnalul de apăsări: dacă în spatele fiecărui caracter există o apăsare de tastă, cât de mult variază intervalele dintre taste și cum sunt ținute și suprapuse tastele. Scripturile tind să fie prea regulate; boții atenți pot imita oamenii, motiv pentru care adăugăm un test repetat.
Poate un bot să treacă de sistemul anti-trișare al unui test de tastare?
Unul atent poate trece de verificările de timp: cercetările despre detectoarele bazate pe tiparul de timp al apăsărilor au constatat că un tipar de timp falsificat, asemănător celui omenesc, a trecut de ele aproape de fiecare dată. De aceea ținem rezultatele rapide pentru un test repetat, pe care un bot trebuie să-l treacă din nou, cu un al doilea jurnal care să treacă de aceleași verificări.
De ce nu a intrat în clasament rezultatul testului meu de tastare?
De obicei din cauza unui test mai scurt de 15 secunde sau 10 cuvinte, a unei pauze de peste cinci secunde, a schimbării filei sau a unui rezultat de peste 130 WPM care își așteaptă testul repetat. Istoricul tău arată motivul.