Ujian menaip mengesan penipuan dengan menyemak log ketukan kekunci di sebalik setiap skor. Ujian kami mengira semula setiap keputusan daripada log ketukannya, menyemak hash, menguji struktur dan corak masa log itu, dan menahan sebarang keputusan bermasa melebihi 130 WPM yang corak masanya juga luar biasa daripada papan awam sehingga anda lulus ujian semula. Semakan masa menangkap bot yang cuai; ujian semula memaksa bot yang teliti melakukan semuanya sekali lagi.
Bot pertama yang berjaya melepasi semakan masa kami ialah bot kami sendiri.
Pembantu ujian hujung ke hujung kami menekan kekunci pada selang tetap 40 ms, kerana itulah yang dilakukan oleh skrip ujian. Pelayan mengira semula keputusan, mengesahkan hash, dan menskor larian itu sebagai mencurigakan: varians sifar antara ketukan, rollover sifar, masa tahan yang sama. Kami terpaksa menambah gelugut rawak bagi setiap perkataan dan sesekali jeda "berfikir" 80 hingga 300 ms sebelum suite ujian kami sendiri dapat menghantar keputusan yang kelihatan seperti manusia. Pilihan itu masih ada dalam kod, berlabel humanLike.
Semakan ini berkesan terhadap apa-apa sahaja yang tidak berusaha, dan apa-apa yang berusaha boleh melepasinya, jadi reka bentuknya meletakkan beban sebenar pada ujian semula.
Langkah pertama: kira semula semuanya
Pelayar anda tidak menghantar WPM kepada kami. Ia menghantar log ketukan kekunci (setiap peristiwa keydown, keyup, input dan komposisi, bercap masa dengan jam monotonik performance.now()), metrik yang dikiranya, dan hash SHA-256 bagi keputusan kanonik.
Pelayan menjalankan kod metrik yang sama pada log itu dan membandingkannya. Jika mana-mana angka berbeza lebih daripada 0.01, keputusan itu ditolak sebagai metrics_mismatch. Jika hash tidak sepadan, ia ditolak sebagai hash_mismatch. Sambungan pelayar yang menyunting medan WPM, penipuan paling biasa di laman yang mempercayai klien, gagal di sini. Fungsi yang sama menghasilkan angka di skrin anda dan di pangkalan data, dan itulah sebabnya halaman metrik kami boleh menjanjikan bahawa contoh kiraannya boleh dihasilkan semula hingga dua tempat perpuluhan.
Kenapa tidak mengukur masa ujian di pelayan? Jika begitu, skor anda akan termasuk rangkaian. Setiap ketukan akan sampai kepada kami sedikit lewat, dengan jumlah yang berbeza mengikut sambungan anda, dan penaip pantas pada talian perlahan akan kehilangan kelajuan yang sebenarnya dia miliki. Log memberikan kami jam klien untuk ketepatan dan pengiraan semula pelayan untuk kejujuran.
Langkah kedua: adakah log itu munasabah?
Sebelum sebarang analisis masa, semakan mudah terhadap bentuk serahan:
- Ujian mesti berlangsung sekurang-kurangnya 15 saat atau 10 perkataan. Larian yang lebih pendek terlalu bising untuk diberi kedudukan dan paling mudah digelembungkan.
- Keputusan tidak boleh tiba sebelum ujian itu sempat tamat: masa mulanya ditambah panjangnya sendiri. Keputusan 60 saat yang tiba dua puluh saat selepas ia bermula tidak pernah berlaku.
- Bilangan peristiwa mesti sepadan dengan aksara yang ditaip.
- Di desktop, setiap peristiwa input mesti menyusuli keydown dalam masa 50 ms. Ini menangkap teks yang ditampal, peristiwa input berskrip dan kebanyakan alat suntikan ketukan, yang menghasilkan teks tanpa kekunci fizikal. Menaip melalui editor kaedah input (komposisi IME) dikecualikan, dan keputusan telefon tidak dimasukkan ke papan awam.
- Log tanpa permulaan, tanpa pengakhiran atau dengan cap masa yang tidak monotonik dianggap cacat dan terus ditolak.
Tiada satu pun yang bijak, tetapi ia membuang sebahagian besar jumlahnya.
Langkah ketiga: apa yang boleh didedahkan oleh masa ketukan?
Inilah bahagian yang sengaja tidak kami dokumentasikan sepenuhnya: senarai ciri adalah awam, nilai ambang dan pemberatnya tidak. Nilai ambang yang diterbitkan menjadi sasaran. Jika kami berkata "sisihan piawai di bawah N milisaat akan ditanda", versi seterusnya bagi setiap skrip akan menambah N campur satu. Ciri-ciri yang kami skor:
Purata jarak antara kekunci dan sejauh mana ia berubah-ubah. Taipan manusia tidak sekata. Dalam kajian Dhakal dan rakan-rakan pada 2018 terhadap 168,960 penaip, purata selang antara kekunci ialah kira-kira 239 ms dengan sisihan piawai kira-kira 112 ms. Skrip yang menaip pada selang tetap hampir tiada variasi; satu kajian arXiv pada 2025 tentang CAPTCHA berasaskan ketukan kekunci melihat perkara itu dengan tepat pada bot ujiannya, yang menaip dengan lengah tetap 50 ms. Inilah isyarat terkuat kami, dan isyarat yang terkena pada pembantu ujian kami.
Bahagian jarak di bawah 40 ms. Jarak 40 ms, jika dikekalkan, ialah 1,500 aksara seminit, atau 300 WPM pada lima aksara setiap perkataan. Jari memang menghasilkan jarak tunggal sesingkat itu apabila kekunci bertindih semasa rollover, jadi satu jarak pendek tidak bermakna apa-apa. Log yang sebahagian besar jaraknya sesingkat itu bukan menaip.
Masa tahan kekunci. Jari sebenar berbeza-beza berpuluh-puluh milisaat; peristiwa sintetik selalunya mempunyai masa tahan yang sama atau hampir sifar, kerana alat itu mencetuskan keydown dan keyup berturut-turut.
Nisbah rollover. Berapa kerap kekunci seterusnya ditekan sebelum kekunci sebelumnya dilepaskan. Dhakal mengukur purata nisbah rollover 25%, dengan kebanyakan penaip pantas melakukan rollover pada 40 hingga 70% tekanan kekunci, dan kekunci bertindih secara purata 30 ms. Penaip perlahan hampir tidak menggunakannya, jadi keputusan pantas tanpa rollover akan menonjol. Bot jarang menindihkan kekunci.
Jeda terpanjang, perubahan kelajuan dari saat ke saat, dan bahagian jarak melebihi satu saat. Manusia teragak-agak dengan cara yang perlu diarahkan secara khusus kepada skrip untuk ditiru.
Model pemarkahan menggabungkan semua ini dan boleh menanda sesuatu keputusan sebagai mencurigakan. Di bawah 130 WPM, tanda itu tidak menolak apa-apa dengan sendirinya. Keputusan anda tidak pernah disembunyikan daripada anda; semakan ini hanya menentukan sama ada ia diberi kedudukan.
Bolehkah penipuan ujian menaip melepasi semakan masa?
Ya, jika penipuan itu dibina dengan teliti. Satu kertas arXiv pada Januari 2026 oleh David Condrey menguji pengesan masa ketukan yang bertujuan membezakan teks yang ditaip manusia daripada teks yang dijana AI. Pengesan itu mengasingkan suntikan automatik sepenuhnya dengan sempurna, tetapi serangan dengan masa seperti manusia (seseorang menaip semula teks AI, atau program yang mengambil sampel lengah daripada data taipan manusia) mengelak kelima-lima pengelas pada kadar sekurang-kurangnya 99.8%. Kertas itu tentang pengesanan kepengarangan, bukan ujian menaip, tetapi pengajarannya tetap terpakai: langkah ketiga menangkap yang cuai dan tidak banyak lagi.
Pembantu ujian kami sendiri membuktikan perkara yang sama pada skala kecil: gelugut rawak dan beberapa jeda mengubahnya daripada jelas sintetik kepada munasabah.
Jadi langkah ketiga ialah penapis. Keputusan muktamad datang daripada langkah keempat.
Langkah keempat: ujian semula pengesahan
Jika keputusan bermasa melebihi 130 WPM dan corak masanya juga luar biasa, anda dapat melihatnya dan ia disimpan, tetapi ia kekal di luar papan awam sehingga anda lulus ujian semula pengesahan. Itu ujian baharu 30 saat, dan anda perlu mencapai sekurang-kurangnya 75% daripada kelajuan yang anda tuntut. Kebetulan sekali sahaja atau log yang dipinjam tidak akan bertahan pada larian kedua.
Kenapa 130 WPM? Ia kira-kira dua setengah kali ganda min 51.56 WPM dalam data Dhakal, jauh melebihi kebanyakan penaip, dan sesiapa yang benar-benar menaip sepantas itu boleh melakukannya dua kali. Keputusan pantas secara tiba-tiba dengan corak masa yang pelik ialah bentuk yang dihasilkan oleh log pinjaman atau skrip, dan jika ia jujur, satu ujian tambahan ialah harga yang kecil.
Ujian semula ialah ujian menaip biasa, dengan teks biasa, bukan imej yang diherotkan atau halaman penuh simbol pelik. Teks yang sukar dibaca memperlahankan semua orang, dan yang paling terjejas ialah penaip pantas yang jujur, iaitu orang yang hendak dibersihkan namanya oleh ujian semula itu. Pengesahan yang gagal dilepasi oleh penaip pantas yang jujur lebih teruk daripada tiada pengesahan. Teks biasa juga menjadikan semakan itu adil: log ujian semula itu sendiri melalui semakan masa yang sama seperti keputusan lain.
Had kadar dan sekatan
Serahan dihadkan kadarnya: tiga puluh seminit bagi setiap pengguna yang log masuk, enam puluh bagi setiap alamat IP. Akaun yang berulang kali tersangkut dalam semakan akan dikenakan shadow ban, iaitu disembunyikan secara senyap daripada papan, dan tiga peristiwa anti-penipuan yang serius dalam 24 jam mencetuskannya secara automatik. Mengira peristiwa dalam satu tempoh bermakna satu keputusan pelik tidak akan menyebabkan anda kehilangan akaun, manakala skrip yang gagal berulang kali akan dihentikan dengan cepat.
Papan pendahulu sepanjang masa juga memerlukan 30 minit menaip pada akaun itu, jadi akaun baharu dengan satu larian sempurna tidak boleh mendahuluinya.
Apa yang boleh menyebabkan anda ditanda secara tidak sengaja
Kebanyakan keputusan yang ditanda bukan penipuan. Cara jujur untuk tersangkut dalam semakan:
Autobetul di telefon. Satu penggantian tiba sebagai satu peristiwa input yang mengubah beberapa aksara. Kami mengiranya sebagai satu tekanan kekunci, menandanya, dan menahan keputusan itu daripada papan awam dengan catatan, bukan penolakan.
Teks yang ditampal. Penampalan disekat, dan keputusan yang ada percubaan menampal dikecualikan daripada papan.
Bertukar tab. Fokus meninggalkan halaman lebih daripada dua saat semasa ujian menandakannya sebagai terganggu; ia disimpan dan ditunjukkan tetapi tidak diberi kedudukan.
Berhenti seketika. Jarak melebihi lima saat dalam ujian perkataan atau petikan menandakan keputusan itu sebagai dijeda. Layanan yang sama.
Komposisi IME. Input bahasa Jepun, Korea dan Cina tiba melalui peristiwa komposisi, jadi kami melangkau peraturan keydown untuknya. Jika masih ada yang kelihatan salah, itu pepijat, dan kami ingin melihat lognya.
Keputusan luar talian. Keputusan yang disegerakkan lebih daripada sepuluh minit selepas ia tamat kekal dalam sejarah anda tanpa kedudukan, kerana kami tidak dapat mengesahkan jamnya.
Benar-benar pantas. Melebihi 130 WPM anda akan bertemu ujian semula, mungkin pada hari baik pertama anda.
Cara membuat rayuan
Setiap pengecualian menunjukkan sebabnya dalam sejarah anda. Jika anda rasa kami salah tentang sesuatu keputusan atau sekatan, hantar e-mel ke alamat rayuan di halaman anti-penipuan kami daripada alamat e-mel akaun anda, bersama pautan keputusan atau tarikh dan masa ujian. Seorang manusia akan menonton main semula ketukan dan membalas dalam beberapa hari. Rayuan tidak pernah diputuskan oleh model automatik semata-mata.
Adakah kami baru sahaja menerbitkan panduan untuk melepasi semakan? Sebahagiannya. Senarai ciri sentiasa boleh diteka daripada tingkah laku sistem, dan nilai ambang kekal rahsia. Ujian semula ialah bahagian yang penting, dan cara untuk lulus ujian itu ialah dengan menaip.
Soalan lazim
Bagaimana ujian menaip mengesan bot?
Ujian yang baik membaca log ketukan kekunci: sama ada setiap aksara mempunyai tekanan kekunci di sebaliknya, sejauh mana jarak antara kekunci berubah-ubah, dan bagaimana kekunci ditahan dan ditindihkan. Skrip cenderung terlalu sekata; bot yang teliti boleh meniru manusia, dan itulah sebabnya kami menambah ujian semula.
Bolehkah bot melepasi anti-penipuan ujian menaip?
Bot yang teliti boleh melepasi semakan masa: kajian terhadap pengesan masa ketukan mendapati corak masa palsu yang menyerupai manusia mengelakkannya hampir setiap kali. Itulah sebabnya kami menahan keputusan pantas untuk ujian semula, yang perlu dilepasi semula oleh bot dengan log kedua yang lulus semakan yang sama.
Kenapa keputusan ujian menaip saya tidak diberi kedudukan?
Biasanya kerana ujian di bawah 15 saat atau 10 perkataan, jeda melebihi lima saat, bertukar tab, atau keputusan melebihi 130 WPM yang menunggu ujian semulanya. Sejarah anda menunjukkan sebabnya.