Hoe spoor tiktoetse bedrog op? Hoe ons ons s’n nagaan

Tiktoetse spoor bedrog op deur die toetsaanslaglog agter elke telling na te gaan. Ons s’n bereken elke uitslag uit sy toetsaanslaglog oor, kontroleer ’n hash, toets die log se struktuur en tydsberekening, en hou enige getyde uitslag bo 130 WPM waarvan die tydsberekening ook ongewoon lyk, van die openbare ranglyste af totdat jy ’n hertoets slaag. Tydkontroles vang slordige bots; die hertoets laat ’n versigtige een alles weer doen.

Die eerste bot wat ons tydkontroles geklop het, was ons eie.

Ons hulpmiddel vir end-tot-end-toetse het sleutels teen ’n vaste interval van 40 ms gedruk, want dit is wat ’n toetsskrip doen. Die bediener het die uitslag oorbereken, die hash bevestig en die lopie as verdag gemerk: geen variansie tussen toetsaanslae nie, geen rollover nie, identiese houtye. Ons moes lukrake skommeling per woord en af en toe "dinkpouses" van 80 tot 300 ms byvoeg voordat ons eie toetsreeks ’n mensagtige uitslag kon indien. Die opsie is steeds in die kode, met die etiket humanLike.

Die kontroles werk teen enigiets wat nie probeer nie, en enigiets wat probeer, kan hulle slaag, so die ontwerp plaas die werklike gewig op ’n hertoets.

Stap een: bereken alles oor

Jou blaaier stuur nie vir ons ’n WPM nie. Dit stuur die toetsaanslaglog (elke keydown-, keyup-, input- en composition-gebeurtenis, met ’n tydstempel van die monotone performance.now()-klok), die maatstawwe wat dit bereken het, en ’n SHA-256-hash van die kanonieke uitslag.

Die bediener laat dieselfde maatstafkode op die log loop en vergelyk. As enige getal met meer as 0,01 verskil, word die uitslag as metrics_mismatch verwerp. As die hash nie klop nie, word dit as hash_mismatch verwerp. ’n Blaaieruitbreiding wat die WPM-veld wysig, die algemeenste kullery op werwe wat die kliënt vertrou, misluk hier. Dieselfde funksies lewer die getal op jou skerm en in die databasis, en daarom kan ons bladsy oor maatstawwe belowe dat sy uitgewerkte voorbeeld tot op twee desimale herhaalbaar is.

Hoekom nie die toets op die bediener tyd nie? Dan sou jou telling die netwerk insluit. Elke toetsaanslag sou ons effens laat bereik, met ’n hoeveelheid wat met jou verbinding wissel, en ’n vinnige tikker op ’n stadige lyn sou spoed verloor wat hy of sy regtig gehad het. Die log gee ons die kliënt se klok vir akkuraatheid en die bediener se oorberekening vir eerlikheid.

Stap twee: maak die log sin?

Voor enige tydontleding: eenvoudige kontroles op die vorm van die indiening.

  • Die toets moet minstens 15 sekondes of 10 woorde duur. Korter lopies is te raserig om te rangskik en die maklikste om op te blaas.
  • ’n Uitslag kan nie aankom voordat die toets klaar kon wees nie: die begin plus die toets se eie lengte. ’n Uitslag van 60 sekondes wat twintig sekondes ná die begin aankom, het nie gebeur nie.
  • Die aantal gebeurtenisse moet by die getikte karakters pas.
  • Op ’n rekenaar moet elke input-gebeurtenis binne 50 ms op ’n keydown volg. Dit vang geplakte teks, geskrewe input-gebeurtenisse en die meeste gereedskap vir toetsaanslaginspuiting, wat teks afvuur sonder ’n fisiese sleutel. Tik deur ’n invoermetode-redigeerder (IME-komposisie) is vrygestel, en fooninslae bly van die openbare ranglyste af.
  • ’n Log sonder ’n begin, sonder ’n einde of met tydstempels wat nie monotoon is nie, is wanvormig en word dadelik verwerp.

Niks hiervan is slim nie, maar dit verwyder die meeste van die volume.

Stap drie: wat kan toetsaanslagtydsberekening verklap?

Dit is die deel wat ons doelbewus nie volledig dokumenteer nie: die lys kenmerke is openbaar, die afsnypunte en gewigte nie. ’n Gepubliseerde afsnypunt is ’n teiken. As ons sê "’n standaardafwyking onder N millisekondes word gemerk", sou die volgende weergawe van elke skrip N plus een byvoeg. Die kenmerke wat ons beoordeel:

Die gemiddelde tyd tussen sleutels en hoeveel dit wissel. Menslike tik is onreëlmatig. In Dhakal en kollegas se studie van 2018 van 168 960 tikkers was die gemiddelde tyd tussen sleutels omtrent 239 ms met ’n standaardafwyking van omtrent 112 ms. ’n Skrip wat teen ’n vaste interval tik, het byna geen variasie nie; ’n arXiv-studie van 2025 oor ’n CAPTCHA gebaseer op toetsaanslae het presies dit gesien by sy toetsbot, wat met ’n vaste vertraging van 50 ms getik het. Dit is ons sterkste sein, en die een waaroor ons hulpmiddel gestruikel het.

Die deel van tussentye onder 40 ms. ’n Tussentyd van 40 ms, volgehou, is 1 500 karakters per minuut, of 300 WPM teen vyf karakters per woord. Vingers lewer wel enkele tussentye so kort wanneer hulle sleutels tydens rollover laat oorvleuel, so een kort tussentyd beteken niks. ’n Log waarin ’n groot deel van die tussentye so kort is, is nie tik nie.

Houtye van sleutels. Regte vingers wissel met tientalle millisekondes; sintetiese gebeurtenisse het dikwels identiese houtye of houtye van byna nul, omdat die gereedskap keydown en keyup direk na mekaar afvuur.

Rollover-verhouding. Hoe dikwels die volgende sleutel afgaan voordat die vorige een opkom. Dhakal het ’n gemiddelde rollover-verhouding van 25% gemeet, met die meeste vinnige tikkers wat by 40 tot 70% van aanslae oorrol, en sleutels wat gemiddeld 30 ms oorvleuel. Stadige tikkers gebruik byna niks daarvan nie, so ’n vinnige uitslag sonder rollover staan uit. Bots laat selde sleutels oorvleuel.

Langste pouse, spoedskommelings van sekonde tot sekonde, en die deel van tussentye langer as een sekonde. Mense huiwer op maniere wat ’n skrip opdrag moet kry om na te boots.

’n Telmodel kombineer dit en kan ’n uitslag as verdag merk. Onder 130 WPM verwerp ’n merk op sy eie niks nie. Jou uitslag word nooit vir jou weggesteek nie; hierdie kontroles besluit net of dit gerangskik word.

Kan kullery op ’n tiktoets by tydkontroles verbykom?

Ja, as die kullery met sorg gebou is. ’n arXiv-artikel van Januarie 2026 deur David Condrey het detektors van toetsaanslagtydsberekening getoets wat bedoel is om teks wat deur mense getik is, te skei van teks wat deur KI gegenereer is. Hulle het volledig outomatiese inspuiting perfek uitgeken, maar aanvalle met menslike tydsberekening (’n persoon wat KI-teks oortik, of ’n program wat vertragings uit menslike tikdata steekproef) het al vyf klassifiseerders in minstens 99,8% van gevalle ontduik. Die artikel gaan oor die opsporing van outeurskap, nie oor tiktoetse nie, maar die les geld steeds: stap drie vang die slordiges en nie veel anders nie.

Ons eie toetshulpmiddel maak dieselfde punt op klein skaal: lukrake skommeling en ’n paar pouses het dit van ooglopend sinteties na geloofwaardig geskuif.

Stap drie is dus ’n filter. Die uitspraak kom van stap vier.

Stap vier: die bevestigende hertoets

As ’n getyde uitslag bo 130 WPM is en sy tydsberekening ook ongewoon lyk, sien jy dit en word dit gestoor, maar dit bly van die openbare ranglyste af totdat jy ’n bevestigende hertoets slaag. Dit is ’n nuwe toets van 30 sekondes, en jy moet minstens 75% van die spoed haal wat jy geëis het. ’n Eenmalige gelukskoot of ’n geleende log oorleef nie ’n tweede lopie nie.

Hoekom 130 WPM? Dit is omtrent twee en ’n half keer die gemiddelde van 51,56 WPM in Dhakal se data, ver bo die meeste tikkers, en enigiemand wat regtig so vinnig tik, kan dit twee keer doen. ’n Skielike vinnige uitslag met vreemde tydsberekening is die vorm wat ’n geleende log of ’n skrip lewer, en as dit eerlik is, is een ekstra toets ’n klein prys.

Die hertoets is ’n gewone tiktoets, met gewone teks, nie ’n verwronge prent of ’n bladsy vreemde simbole nie. Teks wat moeilik is om te lees, maak almal stadiger, en die mense wat dit die meeste vertraag, is die eerlike vinnige tikkers wat die hertoets veronderstel is om vry te spreek. ’n Bevestiging waarin eerlike vinnige tikkers druip, is erger as geen bevestiging nie. Gewone teks maak die kontrole ook regverdig: die hertoets se eie log gaan deur dieselfde tydkontroles as enige ander uitslag.

Tempobeperkings en verbanning

Indienings is aan ’n tempobeperking onderhewig: dertig per minuut per aangemelde gebruiker, sestig per IP-adres. ’n Rekening wat aanhou om die kontroles te laat afgaan, kry ’n skaduverbanning (shadow ban), wat beteken dat dit stilweg van die ranglyste weggesteek word, en drie ernstige bedroggebeurtenisse binne 24 uur aktiveer dit outomaties. Omdat gebeurtenisse binne ’n venster getel word, kos een vreemde uitslag jou nooit ’n rekening nie, terwyl ’n skrip wat oor en oor misluk, vinnig gestuit word.

Die ranglyste van alle tye vereis ook 30 minute se tik op die rekening, so ’n nuwe rekening met een perfekte lopie kan nie bo-aan kom nie.

Wat jou per ongeluk laat merk

Die meeste gemerkte uitslae is nie kullery nie. Die eerlike maniere om ’n kontrole te laat afgaan:

Outokorreksie op ’n foon. ’n Vervanging kom aan as een input-gebeurtenis wat verskeie karakters verander. Ons tel dit as een toetsaanslag, merk dit, en hou die uitslag van die openbare ranglyste af met ’n nota, nie ’n verwerping nie.

Geplakte teks. Plak word geblokkeer, en ’n uitslag waar dit probeer is, word van die ranglyste uitgesluit.

Oortjies wissel. As die fokus tydens ’n toets langer as twee sekondes van die bladsy weg is, word dit as onderbreek gemerk; dit word gestoor en gewys, maar nie gerangskik nie.

Pouseer. ’n Gaping van meer as vyf sekondes in ’n woord- of aanhalingstoets merk die uitslag as gepouseer. Dieselfde behandeling.

IME-komposisie. Japannese, Koreaanse en Chinese invoer kom deur composition-gebeurtenisse, so ons slaan die keydown-reël vir hulle oor. As iets steeds verkeerd lyk, is dit ’n fout in ons kode, en ons wil graag die log hê.

Vanlyn uitslae. ’n Uitslag wat meer as tien minute nadat dit klaar is, gesinkroniseer word, bly ongerangskik in jou geskiedenis, omdat ons nie sy klok kan bevestig nie.

Om regtig vinnig te wees. Bo 130 WPM sal jy die hertoets teëkom, waarskynlik op jou eerste goeie dag.

Hoe om te appelleer

Elke uitsluiting wys sy rede in jou geskiedenis. As jy dink ons is verkeerd oor ’n uitslag of ’n beperking, e-pos die appèladres op ons bladsy oor bedrogbestryding vanaf die adres op jou rekening, met die skakel na die uitslag of die datum en tyd van die toets. ’n Mens kyk na die toetsaanslag-herspeling en antwoord binne ’n paar dae. Appèlle word nooit net deur die outomatiese model beslis nie.

Het ons nou net ’n handleiding gepubliseer om die kontroles te slaag? Gedeeltelik. Die lys kenmerke kon nog altyd uit die gedrag afgelei word, en die afsnypunte bly privaat. Die hertoets is die deel wat saak maak, en die manier om dit te slaag, is om te tik.

Algemene vrae

Hoe spoor tiktoetse bots op?

Goeies lees die toetsaanslaglog: of daar ’n sleuteldruk agter elke karakter is, hoeveel die tussentye tussen sleutels wissel, en hoe sleutels vasgehou word en oorvleuel. Skripte is gewoonlik te reëlmatig; versigtige bots kan mense naboots, en daarom voeg ons ’n hertoets by.

Kan ’n bot by ’n tiktoets se bedrogbestryding verbykom?

’n Versigtige een kan tydkontroles slaag: navorsing oor detektors van toetsaanslagtydsberekening het gevind dat vervalste mensagtige tydsberekening hulle byna elke keer ontduik het. Daarom hou ons vinnige uitslae terug vir ’n hertoets, wat ’n bot weer moet slaag met ’n tweede log wat deur dieselfde kontroles kom.

Hoekom is my tiktoetsuitslag nie gerangskik nie?

Gewoonlik ’n toets korter as 15 sekondes of 10 woorde, ’n pouse van meer as vyf sekondes, ’n oortjiewissel, of ’n uitslag bo 130 WPM wat op sy hertoets wag. Jou geskiedenis wys die rede.

Bronne