تست‌های سرعت تایپ چطور تقلب را تشخیص می‌دهند؟ ما چطور بررسی می‌کنیم

تست‌های سرعت تایپ تقلب را با بررسی گزارش کلیدهای پشت هر امتیاز تشخیص می‌دهند. آزمون ما هر نتیجه را از روی گزارش کلیدهایش دوباره حساب می‌کند، یک هش را بررسی می‌کند، ساختار و زمان‌بندی گزارش را می‌آزماید، و هر نتیجهٔ زمان‌دار بالای 130 WPM را که زمان‌بندی‌اش هم غیرعادی به نظر برسد، تا وقتی آزمون مجدد را نگذرانید بیرون از جدول‌های عمومی نگه می‌دارد. بررسی‌های زمان‌بندی ربات‌های بی‌دقت را می‌گیرند؛ آزمون مجدد ربات بادقت را وادار می‌کند همه چیز را از نو انجام دهد.

اولین رباتی که از بررسی‌های زمان‌بندی ما گذشت، مال خودمان بود.

ابزار کمکی آزمون‌های سرتاسری (end-to-end) ما کلیدها را با فاصلهٔ ثابت 40 میلی‌ثانیه می‌زد، چون یک اسکریپت آزمون همین کار را می‌کند. سرور نتیجه را دوباره حساب کرد، هش را تأیید کرد و آن دور را مشکوک امتیاز داد: واریانس صفر بین ضربه‌ها، رول‌اوور صفر، زمان‌های نگه‌داشتن یکسان. ناچار شدیم لرزش تصادفی برای هر کلمه و مکث‌های گاه‌به‌گاه 80 تا 300 میلی‌ثانیه‌ای «فکر کردن» اضافه کنیم تا مجموعهٔ آزمون خودمان بتواند نتیجه‌ای انسان‌نما ثبت کند. این گزینه هنوز در کد هست، با برچسب humanLike.

این بررسی‌ها در برابر هر چیزی که تلاشی نمی‌کند جواب می‌دهند، و هر چیزی که تلاش کند می‌تواند از آن‌ها بگذرد، پس طراحی ما وزن اصلی را روی آزمون مجدد می‌گذارد.

گام اول: همه چیز را دوباره حساب کن

مرورگر شما WPM برای ما نمی‌فرستد. گزارش کلیدها را می‌فرستد (هر رویداد keydown، keyup، input و composition، با برچسب زمانی ساعت یکنواخت performance.now())، معیارهایی که خودش حساب کرده، و یک هش SHA-256 از نتیجهٔ استاندارد.

سرور همان کد معیارها را روی گزارش اجرا می‌کند و مقایسه می‌کند. اگر هر عددی بیش از 0.01 فرق داشته باشد، نتیجه با metrics_mismatch رد می‌شود. اگر هش نخواند، با hash_mismatch رد می‌شود. افزونهٔ مرورگری که فیلد WPM را ویرایش می‌کند، رایج‌ترین تقلب در سایت‌هایی که به سمت کاربر اعتماد می‌کنند، همین‌جا شکست می‌خورد. همان توابع عدد روی صفحهٔ شما و عدد در پایگاه داده را تولید می‌کنند، و برای همین صفحهٔ معیارهای ما می‌تواند قول دهد مثال حل‌شده‌اش تا دو رقم اعشار بازتولید می‌شود.

چرا آزمون را روی سرور زمان‌گیری نکنیم؟ چون آن وقت امتیازتان شبکه را هم شامل می‌شد. هر ضربه کمی دیر به ما می‌رسید، به اندازه‌ای که با اتصالتان تغییر می‌کند، و یک تایپیست سریع با خط کند سرعتی را از دست می‌داد که واقعاً داشت. گزارش کلیدها ساعت سمت کاربر را برای دقت به ما می‌دهد و محاسبهٔ دوبارهٔ سرور را برای صداقت.

گام دوم: آیا گزارش منطقی است؟

پیش از هر تحلیل زمان‌بندی، بررسی‌های ساده روی شکل ارسال:

  • آزمون باید دست‌کم 15 ثانیه یا 10 کلمه طول بکشد. دورهای کوتاه‌تر برای رتبه‌بندی بیش از حد پرنویزند و از همه آسان‌تر دست‌کاری می‌شوند.
  • یک نتیجه نمی‌تواند زودتر از زمانی برسد که آزمون ممکن بود تمام شود: شروعش به‌علاوهٔ طول خودش. نتیجهٔ 60 ثانیه‌ای که بیست ثانیه بعد از شروعش برسد، اتفاق نیفتاده است.
  • تعداد رویدادها باید با نویسه‌های تایپ‌شده جور باشد.
  • روی رایانهٔ رومیزی، هر رویداد input باید ظرف 50 میلی‌ثانیه پس از یک keydown بیاید. این متن چسبانده‌شده، رویدادهای input اسکریپتی و بیشتر ابزارهای تزریق ضربه را می‌گیرد، که بدون کلید فیزیکی متن می‌فرستند. تایپ از طریق ویرایشگر روش ورودی (IME composition) از این قاعده معاف است، و نتایج گوشی در جدول‌های عمومی نمی‌آیند.
  • گزارشی بدون شروع، بدون پایان یا با برچسب‌های زمانی غیریکنوا، معیوب است و یکسره رد می‌شود.

هیچ‌کدام از این‌ها زیرکانه نیست، اما بیشتر حجم را حذف می‌کند.

گام سوم: زمان‌بندی ضربه‌ها چه چیزی را آشکار می‌کند؟

این بخشی است که عمداً به‌طور کامل مستند نمی‌کنیم: فهرست ویژگی‌ها عمومی است، آستانه‌ها و وزن‌ها نه. آستانهٔ منتشرشده یک هدف است. اگر می‌گفتیم «انحراف معیار کمتر از N میلی‌ثانیه علامت می‌خورد»، نسخهٔ بعدی هر اسکریپتی N به‌علاوهٔ یک را اضافه می‌کرد. ویژگی‌هایی که امتیاز می‌دهیم:

میانگین فاصلهٔ بین کلیدها و میزان تغییر آن. تایپ انسان نامنظم است. در مطالعهٔ Dhakal و همکاران در سال 2018 روی 168,960 تایپیست، میانگین فاصلهٔ بین کلیدها حدود 239 میلی‌ثانیه با انحراف معیار حدود 112 میلی‌ثانیه بود. اسکریپتی که با فاصلهٔ ثابت تایپ کند تقریباً هیچ تغییری ندارد؛ یک مطالعهٔ arXiv در سال 2025 دربارهٔ یک CAPTCHA مبتنی بر ضربهٔ کلید دقیقاً همین را در ربات آزمایشی‌اش دید، که با تأخیر ثابت 50 میلی‌ثانیه تایپ می‌کرد. این قوی‌ترین نشانهٔ ماست، و همان نشانه‌ای که ابزار کمکی ما در آن گیر افتاد.

سهم فاصله‌های زیر 40 میلی‌ثانیه. فاصلهٔ 40 میلی‌ثانیه، اگر حفظ شود، یعنی 1,500 نویسه در دقیقه، یا با پنج نویسه برای هر کلمه 300 WPM. انگشت‌ها وقتی هنگام رول‌اوور کلیدها را هم‌پوشان می‌زنند، تک‌فاصله‌هایی به همین کوتاهی می‌سازند، پس یک فاصلهٔ کوتاه معنایی ندارد. گزارشی که سهم بزرگی از فاصله‌هایش این‌قدر کوتاه باشد، تایپ نیست.

زمان نگه‌داشتن کلید. انگشت‌های واقعی ده‌ها میلی‌ثانیه با هم فرق دارند؛ رویدادهای ساختگی اغلب زمان نگه‌داشتن یکسان یا نزدیک صفر دارند، چون ابزار keydown و keyup را پشت سر هم می‌فرستد.

نسبت رول‌اوور. اینکه کلید بعدی چند وقت یک بار پیش از بالا آمدن کلید قبلی پایین می‌رود. Dhakal میانگین نسبت رول‌اوور را 25% اندازه گرفت، که بیشتر تایپیست‌های سریع در 40 تا 70% ضربه‌ها رول‌اوور داشتند و کلیدها به‌طور میانگین 30 میلی‌ثانیه هم‌پوشانی داشتند. تایپیست‌های کند تقریباً هیچ رول‌اووری ندارند، پس نتیجهٔ سریع بدون رول‌اوور به چشم می‌آید. ربات‌ها به‌ندرت کلیدها را هم‌پوشان می‌زنند.

طولانی‌ترین مکث، نوسان سرعت از ثانیه‌ای به ثانیهٔ دیگر، و سهم فاصله‌های بالای یک ثانیه. آدم‌ها به شکل‌هایی مکث می‌کنند که باید به اسکریپت گفته شود تقلیدشان کند.

یک مدل امتیازدهی این‌ها را ترکیب می‌کند و می‌تواند یک نتیجه را مشکوک علامت بزند. زیر 130 WPM، یک علامت به‌تنهایی چیزی را رد نمی‌کند. نتیجهٔ شما هرگز از خودتان پنهان نمی‌شود؛ این بررسی‌ها فقط تعیین می‌کنند که رتبه‌بندی شود یا نه.

آیا تقلب در تست سرعت تایپ می‌تواند از بررسی‌های زمان‌بندی بگذرد؟

بله، اگر تقلب با دقت ساخته شده باشد. مقاله‌ای در ژانویهٔ 2026 در arXiv از David Condrey تشخیص‌دهنده‌های زمان‌بندی ضربه را آزمود که قرار بود متن تایپ‌شده به دست انسان را از متن تولیدشده با هوش مصنوعی جدا کنند. آن‌ها تزریق کاملاً خودکار را بی‌نقص جدا کردند، اما حمله‌هایی با زمان‌بندی انسانی (کسی که متن هوش مصنوعی را دوباره تایپ می‌کند، یا برنامه‌ای که تأخیرها را از داده‌های تایپ انسانی نمونه‌برداری می‌کند) با نرخ‌هایی دست‌کم 99.8% از هر پنج طبقه‌بند گریختند. موضوع مقاله تشخیص نویسنده است، نه تست تایپ، اما درسش به اینجا هم می‌رسد: گام سوم بی‌دقت‌ها را می‌گیرد و نه چیز زیادی بیشتر.

ابزار کمکی آزمون خود ما همین نکته را در مقیاسی کوچک نشان می‌دهد: لرزش تصادفی و چند مکث آن را از آشکارا ساختگی به باورپذیر رساند.

پس گام سوم یک صافی است. حکم از گام چهارم می‌آید.

گام چهارم: آزمون مجدد برای تأیید

اگر یک نتیجهٔ زمان‌دار بالای 130 WPM باشد و زمان‌بندی‌اش هم غیرعادی به نظر برسد، آن را می‌بینید و ذخیره می‌شود، اما تا وقتی آزمون تأیید را نگذرانید بیرون از جدول‌های عمومی می‌ماند. این یک آزمون تازهٔ 30 ثانیه‌ای است و باید دست‌کم به 75% سرعتی که ادعا کرده‌اید برسید. یک شانس یک‌باره یا یک گزارش قرضی از دور دوم جان سالم به در نمی‌برد.

چرا 130 WPM؟ این حدود دو و نیم برابر میانگین 51.56 WPM در داده‌های Dhakal است، بسیار فراتر از بیشتر تایپیست‌ها، و هر کس واقعاً این‌قدر سریع تایپ کند می‌تواند دو بار انجامش دهد. یک نتیجهٔ سریع ناگهانی با زمان‌بندی عجیب همان شکلی است که یک گزارش قرضی یا یک اسکریپت تولید می‌کند، و اگر صادقانه باشد، یک آزمون اضافه بهای کمی است.

آزمون مجدد یک تست سرعت تایپ معمولی است، با متن معمولی، نه یک تصویر کج‌ومعوج یا صفحه‌ای از نمادهای عجیب. متن دشوارخوان همه را کند می‌کند، و بیشتر از همه تایپیست‌های سریع صادقی را کند می‌کند که آزمون مجدد برای تبرئهٔ آن‌ها وجود دارد. تأییدی که تایپیست‌های سریع صادق در آن رد شوند از نبودنش بدتر است. متن معمولی بررسی را منصفانه هم می‌کند: گزارش کلیدهای خود آزمون مجدد از همان بررسی‌های زمان‌بندی هر نتیجهٔ دیگری می‌گذرد.

محدودیت نرخ و مسدودسازی

ارسال‌ها محدودیت نرخ دارند: سی بار در دقیقه برای هر کاربر واردشده، شصت بار برای هر نشانی IP. حسابی که مدام در بررسی‌ها گیر بیفتد، مسدودسازی پنهان (shadow ban) می‌شود، یعنی بی‌سروصدا از جدول‌ها پنهان می‌شود، و سه رویداد جدی ضدتقلب در 24 ساعت به‌طور خودکار این کار را انجام می‌دهد. شمردن رویدادها در یک بازهٔ زمانی یعنی یک نتیجهٔ عجیب هرگز حسابتان را به خطر نمی‌اندازد، در حالی که اسکریپتی که بارها و بارها شکست می‌خورد زود متوقف می‌شود.

جدول‌های رده‌بندی همهٔ دوران همچنین 30 دقیقه تایپ روی حساب را لازم دارند، پس یک حساب تازه با یک دور بی‌نقص نمی‌تواند در صدر آن‌ها قرار بگیرد.

چه چیزی ناخواسته باعث علامت خوردن می‌شود

بیشتر نتایج علامت‌خورده تقلب نیستند. راه‌های صادقانهٔ گیر افتادن در یک بررسی:

تصحیح خودکار روی گوشی. یک جایگزینی به شکل یک رویداد input می‌رسد که چند نویسه را تغییر می‌دهد. ما آن را یک ضربه حساب می‌کنیم، علامتش می‌زنیم و نتیجه را با یک یادداشت بیرون از جدول‌های عمومی نگه می‌داریم، نه با رد کردن.

متن چسبانده‌شده. چسباندن مسدود است، و نتیجه‌ای که در آن تلاش برای چسباندن شده از جدول‌ها کنار گذاشته می‌شود.

جابه‌جا شدن بین زبانه‌ها. خارج شدن تمرکز از صفحه برای بیش از دو ثانیه در طول آزمون آن را قطع‌شده علامت می‌زند؛ ذخیره و نمایش داده می‌شود اما رتبه نمی‌گیرد.

مکث. فاصلهٔ بیش از پنج ثانیه در آزمون کلمه یا نقل‌قول، نتیجه را مکث‌دار علامت می‌زند. همان رفتار.

ترکیب IME. ورودی ژاپنی، کره‌ای و چینی از طریق رویدادهای composition می‌رسد، پس قاعدهٔ keydown را برای آن‌ها کنار می‌گذاریم. اگر باز هم چیزی اشتباه به نظر برسد، آن یک باگ است و دوست داریم گزارش کلیدها را داشته باشیم.

نتایج آفلاین. نتیجه‌ای که بیش از ده دقیقه پس از پایانش همگام‌سازی شود، بدون رتبه در تاریخچه‌تان می‌ماند، چون نمی‌توانیم ساعتش را تأیید کنیم.

واقعاً سریع بودن. بالای 130 WPM به آزمون مجدد برمی‌خورید، احتمالاً در اولین روز خوبتان.

چطور اعتراض کنیم

هر کنار گذاشتنی دلیلش را در تاریخچهٔ شما نشان می‌دهد. اگر فکر می‌کنید دربارهٔ یک نتیجه یا یک محدودیت اشتباه کرده‌ایم، از نشانی ایمیل حسابتان به نشانی اعتراض در صفحهٔ ضدتقلب ما ایمیل بزنید، همراه با پیوند نتیجه یا تاریخ و ساعت آزمون. یک انسان بازپخش ضربه‌ها را تماشا می‌کند و ظرف چند روز پاسخ می‌دهد. اعتراض‌ها هرگز فقط با مدل خودکار تصمیم‌گیری نمی‌شوند.

آیا همین حالا راهنمای گذشتن از بررسی‌ها را منتشر کردیم؟ تا حدی. فهرست ویژگی‌ها همیشه از روی رفتار قابل کشف بود، و آستانه‌ها خصوصی می‌مانند. آزمون مجدد بخشی است که اهمیت دارد، و راه گذشتن از آن تایپ کردن است.

پرسش‌های پرتکرار

تست‌های سرعت تایپ چطور ربات‌ها را تشخیص می‌دهند؟

تست‌های خوب گزارش کلیدها را می‌خوانند: اینکه پشت هر نویسه یک فشار کلید هست یا نه، فاصله‌های بین کلیدها چقدر تغییر می‌کنند، و کلیدها چطور نگه داشته و هم‌پوشان زده می‌شوند. اسکریپت‌ها معمولاً بیش از حد منظم‌اند؛ ربات‌های بادقت می‌توانند از انسان تقلید کنند، و برای همین ما آزمون مجدد اضافه می‌کنیم.

آیا یک ربات می‌تواند از ضدتقلب تست سرعت تایپ بگذرد؟

یک ربات بادقت می‌تواند از بررسی‌های زمان‌بندی بگذرد: پژوهش روی تشخیص‌دهنده‌های زمان‌بندی ضربه نشان داد زمان‌بندی جعلی انسان‌نما تقریباً هر بار از آن‌ها گریخت. برای همین ما نتایج سریع را برای آزمون مجدد نگه می‌داریم، که ربات باید دوباره و با گزارش دومی که از همان بررسی‌ها بگذرد، آن را پشت سر بگذارد.

چرا نتیجهٔ تست تایپ من رتبه‌بندی نشد؟

معمولاً به خاطر آزمونی کوتاه‌تر از 15 ثانیه یا 10 کلمه، مکثی بیش از پنج ثانیه، جابه‌جا شدن بین زبانه‌ها، یا نتیجه‌ای بالای 130 WPM که منتظر آزمون مجددش است. تاریخچهٔ شما دلیل را نشان می‌دهد.

منابع