Yazma testleri hileyi her skorun arkasındaki tuş kaydını kontrol ederek tespit eder. Bizimki her sonucu tuş kaydından yeniden hesaplar, bir hash'i kontrol eder, kaydın yapısını ve zamanlamasını test eder ve 130 WPM'nin üstünde olup zamanlaması da olağandışı görünen her süreli sonucu, sen bir yeniden testi geçene kadar herkese açık tablolardan uzak tutar. Zamanlama kontrolleri özensiz botları yakalar; yeniden test ise özenli bir botu her şeyi baştan yapmaya zorlar.
Zamanlama kontrollerimizi geçen ilk bot bizimkiydi.
Uçtan uca test yardımcımız tuşlara sabit 40 ms aralıkla basıyordu, çünkü bir test betiği bunu yapar. Sunucu sonucu yeniden hesapladı, hash'i doğruladı ve turu şüpheli olarak puanladı: tuş vuruşları arasında sıfır varyans, sıfır rollover, birbirinin aynısı basılı tutma süreleri. Kendi test paketimizin insan gibi görünen bir sonuç gönderebilmesi için kelime başına rastgele sapma ve ara sıra 80 ile 300 ms'lik "düşünme" duraklamaları eklememiz gerekti. Bu seçenek, humanLike adıyla hâlâ kodda duruyor.
Kontroller denemeyen her şeye karşı işe yarar ve deneyen her şey onları geçebilir; bu yüzden tasarım asıl ağırlığı yeniden teste veriyor.
Birinci adım: her şeyi yeniden hesapla
Tarayıcın bize bir WPM göndermez. Tuş kaydını (monoton performance.now() saatiyle zaman damgası vurulmuş her keydown, keyup, input ve composition olayı), hesapladığı metrikleri ve standart biçimdeki sonucun SHA-256 hash'ini gönderir.
Sunucu aynı metrik kodunu kayıt üzerinde çalıştırır ve karşılaştırır. Herhangi bir sayı 0,01'den fazla farklıysa sonuç metrics_mismatch olarak reddedilir. Hash eşleşmezse hash_mismatch olarak reddedilir. İstemciye güvenen sitelerdeki en yaygın hile olan, WPM alanını düzenleyen bir tarayıcı eklentisi burada takılır. Ekranındaki sayıyı da veritabanındaki sayıyı da aynı fonksiyonlar üretir; metrikler sayfamızın, çözümlü örneğinin iki ondalık basamağa kadar aynı sonucu verdiğini söz verebilmesinin nedeni bu.
Neden testi sunucuda zamanlamıyoruz? O zaman skorun ağı da içerirdi. Her tuş vuruşu bize, bağlantına göre değişen bir miktar kadar biraz geç ulaşırdı ve yavaş bir hattaki hızlı bir kullanıcı gerçekten sahip olduğu hızı kaybederdi. Kayıt bize doğruluk için istemcinin saatini, dürüstlük için de sunucunun yeniden hesaplamasını veriyor.
İkinci adım: kayıt mantıklı mı?
Herhangi bir zamanlama analizinden önce, gönderinin biçimine dair basit kontroller:
- Test en az 15 saniye ya da 10 kelime sürmeli. Daha kısa turlar sıralamak için fazla gürültülü ve şişirilmesi en kolay olanlar.
- Bir sonuç, testin bitebileceği andan önce gelemez: başlangıcı artı kendi uzunluğu. Başladıktan yirmi saniye sonra gelen 60 saniyelik bir sonuç gerçekleşmemiştir.
- Olay sayısı yazılan karakterlerle uyumlu olmalı.
- Masaüstünde her input olayı 50 ms içinde bir keydown'ı izlemeli. Bu, yapıştırılan metni, betikle üretilen input olaylarını ve fiziksel bir tuş olmadan metin gönderen tuş vuruşu enjeksiyon araçlarının çoğunu yakalar. Bir giriş yöntemi düzenleyicisiyle (IME composition) yazmak bu kuraldan muaftır ve telefon sonuçları herkese açık tablolara girmez.
- Başlangıcı ya da bitişi olmayan veya zaman damgaları monoton olmayan bir kayıt bozuktur ve doğrudan reddedilir.
Bunların hiçbiri zekice değil, ama hacmin büyük kısmını ortadan kaldırıyor.
Üçüncü adım: tuş vuruşu zamanlaması neyi ortaya çıkarabilir?
Bu, bilerek tam olarak belgelemediğimiz kısım: özellik listesi açık, eşikler ve ağırlıklar değil. Yayımlanmış bir eşik bir hedeftir. "N milisaniyenin altındaki standart sapma işaretlenir" deseydik, her betiğin bir sonraki sürümü N artı bir eklerdi. Puanladığımız özellikler:
Tuşlar arasındaki ortalama aralık ve bunun ne kadar değiştiği. İnsanın yazması düzensizdir. Dhakal ve arkadaşlarının 168.960 kişiyle yaptığı 2018 çalışmasında tuşlar arası ortalama süre yaklaşık 239 ms, standart sapma ise yaklaşık 112 ms'ydi. Sabit aralıkla yazan bir betikte neredeyse hiç değişkenlik olmaz; tuş vuruşuna dayalı bir CAPTCHA üzerine yapılan 2025 tarihli bir arXiv çalışması, sabit 50 ms gecikmeyle yazan test botunda tam olarak bunu gördü. Bu bizim en güçlü sinyalimiz ve yardımcımızın takıldığı da buydu.
40 ms'nin altındaki aralıkların payı. Sürdürülen 40 ms'lik bir aralık dakikada 1.500 karakter, yani kelime başına beş karakterle 300 WPM eder. Parmaklar rollover sırasında tuşları üst üste bindirdiğinde tek tek bu kadar kısa aralıklar üretir, dolayısıyla tek bir kısa aralık hiçbir şey ifade etmez. Aralıkların büyük bir payının bu kadar kısa olduğu bir kayıt ise yazma değildir.
Tuş basılı tutma süreleri. Gerçek parmaklar onlarca milisaniye değişir; yapay olaylarda ise basılı tutma süreleri çoğu zaman birbirinin aynısı ya da sıfıra yakındır, çünkü araç keydown ve keyup olaylarını art arda gönderir.
Rollover oranı. Bir sonraki tuşun, önceki kalkmadan ne sıklıkla basıldığı. Dhakal ortalama rollover oranını %25 olarak ölçtü; hızlı yazanların çoğu tuş basışlarının %40 ile %70'inde rollover yapıyordu ve tuşlar ortalama 30 ms üst üste biniyordu. Yavaş yazanlar neredeyse hiç kullanmaz, bu yüzden rollover'sız hızlı bir sonuç göze batar. Botlar tuşları nadiren üst üste bindirir.
En uzun duraklama, saniyeden saniyeye hız dalgalanmaları ve bir saniyeyi aşan aralıkların payı. İnsanlar, bir betiğe taklit etmesi söylenmesi gereken şekillerde tereddüt eder.
Bir puanlama modeli bunları birleştirir ve bir sonucu şüpheli olarak işaretleyebilir. 130 WPM'nin altında bir işaret tek başına hiçbir şeyi reddetmez. Sonucun senden asla gizlenmez; bu kontroller yalnızca sıralamaya girip girmeyeceğine karar verir.
Yazma testinde hile zamanlama kontrollerini atlatabilir mi?
Evet, hile özenle hazırlanmışsa. David Condrey'nin Ocak 2026 tarihli bir arXiv makalesi, insan tarafından yazılmış metni yapay zekâ tarafından üretilmiş metinden ayırmayı amaçlayan tuş vuruşu zamanlama dedektörlerini test etti. Dedektörler tamamen otomatik enjeksiyonu kusursuz biçimde ayırdı, ama insan zamanlamasıyla yapılan saldırılar (yapay zekâ metnini yeniden yazan bir insan ya da gecikmeleri insan yazma verilerinden örnekleyen bir program) beş sınıflandırıcının hepsini en az %99,8 oranında atlattı. Makale yazma testleriyle değil yazar tespitiyle ilgili, ama ders buraya da taşınıyor: üçüncü adım özensizleri yakalar, başka pek bir şeyi değil.
Kendi test yardımcımız da aynı şeyi küçük ölçekte gösteriyor: rastgele sapma ve birkaç duraklama onu açıkça yapay olmaktan inandırıcı olmaya taşıdı.
Yani üçüncü adım bir süzgeç. Hükmü dördüncü adım verir.
Dördüncü adım: doğrulama için yeniden test
Süreli bir sonuç 130 WPM'nin üstündeyse ve zamanlaması da olağandışı görünüyorsa, onu görürsün ve kaydedilir, ama doğrulama için bir yeniden testi geçene kadar herkese açık tablolara girmez. Bu, yeni bir 30 saniyelik testtir ve iddia ettiğin hızın en az %75'ine ulaşman gerekir. Tek seferlik bir şans ya da ödünç alınmış bir kayıt ikinci bir turu atlatamaz.
Neden 130 WPM? Dhakal'ın verilerindeki 51,56 WPM ortalamanın yaklaşık iki buçuk katı, yazanların çoğunun epey ötesinde ve gerçekten bu kadar hızlı yazan biri bunu iki kez yapabilir. Tuhaf zamanlamalı, birdenbire gelen hızlı bir sonuç, ödünç bir kaydın ya da bir betiğin ürettiği türden bir görüntüdür; dürüstse de fazladan bir test küçük bir bedel.
Yeniden test sıradan metinle yapılan sıradan bir yazma testidir; bozulmuş bir görüntü ya da tuhaf sembollerle dolu bir sayfa değil. Okunması zor metin herkesi yavaşlatır ve en çok da yeniden testin aklamak için var olduğu dürüst hızlı yazanları yavaşlatır. Dürüst hızlı yazanların geçemediği bir doğrulama, hiç olmamasından kötüdür. Sıradan metin kontrolü adil de kılar: yeniden testin kendi kaydı da diğer her sonuç gibi aynı zamanlama kontrollerinden geçer.
Hız sınırları ve yasaklar
Gönderimler hız sınırına tabi: oturum açmış kullanıcı başına dakikada otuz, IP adresi başına altmış. Kontrollere sürekli takılan bir hesap gölge yasağa (shadow ban) alınır, yani sessizce tablolardan gizlenir; 24 saat içinde üç ciddi hile karşıtı olay bunu otomatik olarak tetikler. Olayları bir zaman aralığı içinde saymak, tek bir tuhaf sonucun sana asla bir hesaba mal olmamasını, tekrar tekrar takılan bir betiğin ise çabucak durdurulmasını sağlar.
Tüm zamanların liderlik tabloları ayrıca hesapta 30 dakikalık yazma gerektirir; böylece tek bir kusursuz turu olan yeni bir hesap zirveye çıkamaz.
Yanlışlıkla işaretlenmene ne yol açar
İşaretlenen sonuçların çoğu hile değildir. Bir kontrole dürüstçe takılmanın yolları:
Telefonda otomatik düzeltme. Bir değiştirme, birkaç karakteri değiştiren tek bir input olayı olarak gelir. Bunu tek tuş vuruşu sayar, işaretler ve sonucu reddetmek yerine bir notla herkese açık tabloların dışında tutarız.
Yapıştırılan metin. Yapıştırma engellidir ve yapıştırma denenmiş bir sonuç tablolardan çıkarılır.
Sekme değiştirmek. Test sırasında odağın sayfadan iki saniyeden uzun ayrılması testi kesintiye uğramış olarak işaretler; kaydedilir ve gösterilir ama sıralamaya girmez.
Duraklamak. Kelime ya da alıntı testinde beş saniyeyi aşan bir boşluk sonucu duraklatılmış olarak işaretler. Aynı muamele.
IME composition. Japonca, Korece ve Çince girişler composition olaylarıyla gelir, bu yüzden onlar için keydown kuralını atlarız. Yine de bir şey yanlış görünüyorsa bu bir hatadır ve kaydı görmek isteriz.
Çevrimdışı sonuçlar. Bittikten on dakikadan fazla sonra eşitlenen bir sonuç geçmişinde sıralamasız kalır, çünkü saatini doğrulayamayız.
Gerçekten hızlı olmak. 130 WPM'nin üstünde yeniden testle karşılaşırsın; muhtemelen ilk iyi gününde.
Nasıl itiraz edilir
Her hariç tutmanın nedeni geçmişinde görünür. Bir sonuç ya da kısıtlama konusunda yanıldığımızı düşünüyorsan, hesabındaki e-posta adresinden, sonucun bağlantısını ya da testin tarihini ve saatini ekleyerek hile karşıtı önlemler sayfamızdaki itiraz adresine yaz. Bir insan tuş vuruşu tekrarını izler ve birkaç gün içinde yanıt verir. İtirazlar asla yalnızca otomatik model tarafından karara bağlanmaz.
Az önce kontrolleri geçmek için bir kullanım kılavuzu mu yayımladık? Kısmen. Özellik listesi davranıştan her zaman çıkarılabilirdi; eşikler ise gizli kalıyor. Önemli olan kısım yeniden test ve onu geçmenin yolu yazmak.
Sık sorulan sorular
Yazma testleri botları nasıl tespit eder?
İyi olanlar tuş kaydını okur: her karakterin arkasında bir tuş basışı olup olmadığına, tuşlar arasındaki aralıkların ne kadar değiştiğine ve tuşların nasıl basılı tutulup üst üste bindirildiğine bakar. Betikler fazla düzenli olma eğilimindedir; özenli botlar insanları taklit edebilir, bu yüzden bir yeniden test ekliyoruz.
Bir bot, yazma testinin hile karşıtı önlemlerini geçebilir mi?
Özenli bir bot zamanlama kontrollerini geçebilir: tuş vuruşu zamanlama dedektörleri üzerine yapılan araştırma, sahte insan benzeri zamanlamanın onları neredeyse her seferinde atlattığını buldu. Hızlı sonuçları bu yüzden yeniden teste tutuyoruz; bir botun onu, aynı kontrollerden geçen ikinci bir kayıtla yeniden geçmesi gerekir.
Yazma testi sonucum neden sıralamaya girmedi?
Genellikle nedeni 15 saniyeden ya da 10 kelimeden kısa bir test, beş saniyeyi aşan bir duraklama, bir sekme değişikliği ya da yeniden testini bekleyen 130 WPM üstü bir sonuçtur. Geçmişin nedeni gösterir.