Bagaimana tes mengetik mendeteksi kecurangan? Cara kami memeriksanya

Tes mengetik mendeteksi kecurangan dengan memeriksa log ketukan di balik setiap skor. Tes kami menghitung ulang setiap hasil dari log ketukannya, mengecek hash, menguji struktur dan pola waktu log, dan menahan hasil berwaktu mana pun di atas 130 WPM yang pola waktunya juga tampak tidak biasa dari papan peringkat publik sampai kamu lulus tes ulang. Pemeriksaan waktu menangkap bot yang ceroboh; tes ulang memaksa bot yang cermat mengulang semuanya dari awal.

Bot pertama yang berhasil lolos dari pemeriksaan waktu kami adalah bot buatan kami sendiri.

Helper untuk end-to-end test kami menekan tombol dengan interval tetap 40 ms, karena memang begitulah yang dilakukan skrip tes. Server menghitung ulang hasilnya, mengonfirmasi hash-nya, dan menilai putaran itu mencurigakan: nol variasi antar ketukan, nol rollover, waktu tahan yang identik. Kami harus menambahkan jitter acak per kata dan sesekali jeda "berpikir" 80 sampai 300 ms sebelum rangkaian tes kami sendiri bisa mengirim hasil yang tampak manusiawi. Opsi itu masih ada di kode, dengan label humanLike.

Pemeriksaan ini ampuh melawan apa pun yang tidak berusaha, dan apa pun yang berusaha bisa lolos, jadi rancangannya menaruh bobot utama pada tes ulang.

Langkah pertama: hitung ulang semuanya

Browsermu tidak mengirim WPM kepada kami. Yang dikirim adalah log ketukan (setiap event keydown, keyup, input, dan composition, diberi cap waktu dari jam monoton performance.now()), metrik yang dihitungnya, dan hash SHA-256 dari hasil kanonis.

Server menjalankan kode metrik yang sama pada log itu lalu membandingkan. Kalau ada angka yang berselisih lebih dari 0,01, hasilnya ditolak sebagai metrics_mismatch. Kalau hash-nya tidak cocok, ditolak sebagai hash_mismatch. Ekstensi browser yang mengedit kolom WPM, kecurangan paling umum di situs yang memercayai klien, gagal di sini. Fungsi yang sama menghasilkan angka di layarmu dan di basis data, itulah sebabnya halaman metrik kami bisa menjamin bahwa contoh perhitungannya bisa direproduksi sampai dua angka desimal.

Kenapa tidak menghitung waktu tes di server? Karena skormu akan ikut menghitung jaringan. Setiap ketukan akan sampai ke kami sedikit terlambat, dengan selisih yang bervariasi menurut koneksimu, dan pengetik cepat dengan koneksi lambat akan kehilangan kecepatan yang benar-benar ia miliki. Log memberi kami jam klien untuk akurasi dan perhitungan ulang server untuk kejujuran.

Langkah kedua: apakah log-nya masuk akal?

Sebelum analisis waktu apa pun, ada pemeriksaan sederhana atas bentuk kirimannya:

  • Tes harus berlangsung minimal 15 detik atau 10 kata. Putaran yang lebih pendek terlalu berisik untuk diperingkat dan paling mudah digelembungkan.
  • Hasil tidak boleh tiba sebelum tes bisa selesai: waktu mulainya ditambah durasinya sendiri. Hasil 60 detik yang tiba dua puluh detik setelah dimulai tidak pernah terjadi.
  • Jumlah event harus sesuai dengan karakter yang diketik.
  • Di desktop, setiap event input harus didahului keydown dalam 50 ms. Ini menangkap teks yang ditempel, event input dari skrip, dan kebanyakan alat injeksi ketukan, yang memunculkan teks tanpa tombol fisik. Mengetik lewat input method editor (IME composition) dikecualikan, dan hasil dari ponsel tidak masuk papan peringkat publik.
  • Log tanpa awal, tanpa akhir, atau dengan cap waktu yang tidak monoton dianggap rusak dan langsung ditolak.

Tidak ada yang cerdik di sini, tetapi ini menyingkirkan sebagian besar volumenya.

Langkah ketiga: apa yang bisa diungkap pola waktu ketukan?

Inilah bagian yang sengaja tidak kami dokumentasikan sepenuhnya: daftar fiturnya publik, ambang batas dan bobotnya tidak. Ambang batas yang dipublikasikan adalah sasaran tembak. Kalau kami bilang "simpangan baku di bawah N milidetik akan ditandai", versi berikutnya dari setiap skrip akan menambahkan N plus satu. Fitur-fitur yang kami nilai:

Rata-rata jeda antar tombol dan seberapa besar variasinya. Ketikan manusia tidak teratur. Dalam studi Dhakal dan rekan-rekannya tahun 2018 atas 168.960 pengetik, rata-rata interval antar tombol sekitar 239 ms dengan simpangan baku sekitar 112 ms. Skrip yang mengetik dengan interval tetap hampir tidak punya variasi; sebuah studi arXiv tahun 2025 tentang CAPTCHA berbasis ketukan melihat persis hal itu pada bot ujinya, yang mengetik dengan jeda tetap 50 ms. Inilah sinyal terkuat kami, dan sinyal yang menjebak helper kami.

Porsi jeda di bawah 40 ms. Jeda 40 ms, kalau dipertahankan, berarti 1.500 karakter per menit, atau 300 WPM dengan lima karakter per kata. Jari memang menghasilkan jeda tunggal sesingkat itu saat tombol tumpang tindih ketika rollover, jadi satu jeda singkat tidak berarti apa-apa. Log yang sebagian besar jedanya sesingkat itu bukanlah ketikan.

Waktu tahan tombol. Jari sungguhan bervariasi puluhan milidetik; event sintetis sering punya waktu tahan yang identik atau hampir nol, karena alatnya menembakkan keydown dan keyup berturut-turut.

Rasio rollover. Seberapa sering tombol berikutnya ditekan sebelum tombol sebelumnya naik. Dhakal mengukur rata-rata rasio rollover 25%, dengan kebanyakan pengetik cepat melakukan rollover pada 40 sampai 70% tekanan tombol, dan tombol tumpang tindih rata-rata 30 ms. Pengetik lambat hampir tidak memakainya, jadi hasil cepat tanpa rollover akan mencolok. Bot jarang menumpangtindihkan tombol.

Jeda terpanjang, ayunan kecepatan dari detik ke detik, dan porsi jeda di atas satu detik. Manusia ragu-ragu dengan cara yang harus diajarkan secara khusus kepada skrip agar bisa ditiru.

Sebuah model penilaian menggabungkan semua ini dan bisa menandai hasil sebagai mencurigakan. Di bawah 130 WPM, tanda itu tidak menolak apa pun dengan sendirinya. Hasilmu tidak pernah disembunyikan darimu; pemeriksaan ini hanya menentukan apakah hasil itu diperingkat.

Bisakah kecurangan tes mengetik lolos dari pemeriksaan waktu?

Bisa, kalau kecurangannya dibuat dengan cermat. Makalah arXiv Januari 2026 karya David Condrey menguji detektor pola waktu ketukan yang dimaksudkan untuk membedakan teks ketikan manusia dari teks buatan AI. Detektor itu memisahkan injeksi otomatis penuh dengan sempurna, tetapi serangan dengan pola waktu manusia (seseorang mengetik ulang teks AI, atau program yang mengambil sampel jeda dari data ketikan manusia) lolos dari kelima classifier dengan tingkat minimal 99,8%. Makalah ini tentang deteksi kepenulisan, bukan tes mengetik, tetapi pelajarannya tetap berlaku: langkah ketiga menangkap yang ceroboh dan tidak banyak lagi.

Helper tes kami sendiri menunjukkan hal yang sama dalam skala kecil: jitter acak dan beberapa jeda memindahkannya dari jelas-jelas sintetis menjadi masuk akal.

Jadi langkah ketiga adalah penyaring. Putusannya datang dari langkah keempat.

Langkah keempat: tes ulang verifikasi

Kalau hasil berwaktu di atas 130 WPM dan pola waktunya juga tampak tidak biasa, kamu tetap melihatnya dan hasil itu disimpan, tetapi tidak masuk papan peringkat publik sampai kamu lulus tes ulang verifikasi. Itu tes 30 detik yang baru, dan kamu perlu mencapai minimal 75% dari kecepatan yang kamu klaim. Kebetulan sekali jadi atau log pinjaman tidak akan selamat di putaran kedua.

Kenapa 130 WPM? Angka itu sekitar dua setengah kali rata-rata 51,56 WPM dalam data Dhakal, jauh di atas kebanyakan pengetik, dan siapa pun yang benar-benar mengetik secepat itu bisa melakukannya dua kali. Hasil cepat yang tiba-tiba dengan pola waktu janggal adalah bentuk yang dihasilkan log pinjaman atau skrip, dan kalau hasilnya jujur, satu tes tambahan adalah harga yang kecil.

Tes ulang ini tes mengetik biasa, dengan teks biasa, bukan gambar yang diacak atau halaman berisi simbol aneh. Teks yang sulit dibaca memperlambat semua orang, dan yang paling dirugikan justru pengetik cepat yang jujur, yang ingin diloloskan oleh tes ulang ini. Verifikasi yang membuat pengetik cepat yang jujur gagal lebih buruk daripada tidak ada verifikasi sama sekali. Teks biasa juga membuat pemeriksaannya adil: log dari tes ulang itu sendiri melewati pemeriksaan waktu yang sama seperti hasil lainnya.

Batas kiriman dan pemblokiran

Kiriman dibatasi: tiga puluh per menit untuk tiap pengguna yang masuk, enam puluh per alamat IP. Akun yang terus-menerus memicu pemeriksaan akan di-shadow-ban, artinya diam-diam disembunyikan dari papan peringkat, dan tiga kejadian anti-curang serius dalam 24 jam memicunya secara otomatis. Menghitung kejadian dalam rentang waktu berarti satu hasil janggal tidak akan pernah membuatmu kehilangan akun, sementara skrip yang gagal berkali-kali cepat terhenti.

Papan peringkat sepanjang masa juga mensyaratkan 30 menit mengetik di akun tersebut, jadi akun baru dengan satu putaran sempurna tidak bisa langsung memuncakinya.

Apa yang bisa membuatmu ditandai tanpa sengaja

Kebanyakan hasil yang ditandai bukan kecurangan. Cara-cara jujur untuk memicu pemeriksaan:

Koreksi otomatis di ponsel. Penggantian kata datang sebagai satu event input yang mengubah beberapa karakter. Kami menghitungnya sebagai satu tekanan tombol, menandainya, dan menahan hasilnya dari papan peringkat publik dengan catatan, bukan penolakan.

Teks yang ditempel. Menempel diblokir, dan hasil yang mencoba melakukannya dikeluarkan dari papan peringkat.

Berpindah tab. Fokus yang meninggalkan halaman lebih dari dua detik selama tes menandainya sebagai terganggu; hasilnya disimpan dan ditampilkan tetapi tidak diperingkat.

Berhenti sejenak. Jeda lebih dari lima detik di tes kata atau kutipan menandai hasilnya sebagai dijeda. Perlakuannya sama.

IME composition. Input bahasa Jepang, Korea, dan Tionghoa datang lewat event composition, jadi kami melewati aturan keydown untuk itu. Kalau masih ada yang tampak salah, itu bug, dan kami ingin melihat log-nya.

Hasil offline. Hasil yang disinkronkan lebih dari sepuluh menit setelah selesai tetap ada di riwayatmu tanpa diperingkat, karena kami tidak bisa memvalidasi jamnya.

Memang benar-benar cepat. Di atas 130 WPM kamu akan bertemu tes ulang, kemungkinan besar di hari bagus pertamamu.

Cara mengajukan banding

Setiap pengecualian menampilkan alasannya di riwayatmu. Kalau menurutmu kami keliru soal sebuah hasil atau pembatasan, kirim email ke alamat banding di halaman anti-curang kami dari alamat yang terdaftar di akunmu, dengan tautan hasilnya atau tanggal dan jam tesnya. Seorang manusia akan menonton rekaman ulang ketukannya dan membalas dalam beberapa hari. Banding tidak pernah diputuskan oleh model otomatis saja.

Apakah kami baru saja menerbitkan panduan untuk lolos dari pemeriksaan? Sebagian. Daftar fiturnya memang selalu bisa ditebak dari perilakunya, dan ambang batasnya tetap rahasia. Tes ulang adalah bagian yang penting, dan cara melewatinya adalah dengan mengetik.

Pertanyaan yang sering diajukan

Bagaimana tes mengetik mendeteksi bot?

Tes yang bagus membaca log ketukan: apakah setiap karakter punya tekanan tombol di belakangnya, seberapa besar variasi jeda antar tombol, dan bagaimana tombol ditahan dan ditumpangtindihkan. Skrip cenderung terlalu teratur; bot yang cermat bisa meniru manusia, itulah sebabnya kami menambahkan tes ulang.

Bisakah bot lolos dari anti-curang tes mengetik?

Bot yang cermat bisa lolos dari pemeriksaan waktu: riset tentang detektor pola waktu ketukan menemukan bahwa pola waktu palsu yang mirip manusia lolos hampir setiap kali. Itulah sebabnya kami menahan hasil cepat untuk tes ulang, yang harus dilewati bot sekali lagi dengan log kedua yang lolos dari pemeriksaan yang sama.

Kenapa hasil tes mengetikku tidak diperingkat?

Biasanya karena tes di bawah 15 detik atau 10 kata, jeda lebih dari lima detik, berpindah tab, atau hasil di atas 130 WPM yang menunggu tes ulangnya. Riwayatmu menampilkan alasannya.

Sumber