كيف تكشف اختبارات سرعة الكتابة الغش؟ وكيف نتحقق من اختباراتنا

تكشف اختبارات سرعة الكتابة الغش بفحص سجل ضغطات المفاتيح وراء كل نتيجة. اختبارنا يعيد حساب كل نتيجة من سجل ضغطاتها، ويتحقق من البصمة (hash)، ويفحص بنية السجل وتوقيته، ويُبقي أي نتيجة موقوتة تتجاوز 130 WPM ويبدو توقيتها أيضًا غير معتاد خارج اللوحات العامة حتى تجتاز إعادة اختبار. فحوص التوقيت تكشف البرامج الآلية المتهاونة؛ وإعادة الاختبار تُرغم البرنامج المتقن على أن يعيد الأمر كله من جديد.

أول برنامج آلي تجاوز فحوص التوقيت لدينا كان برنامجنا نحن.

كانت أداة المساعدة في اختباراتنا الشاملة تضغط المفاتيح بفاصل ثابت قدره 40 مللي ثانية، لأن هذا ما يفعله سكربت الاختبار. فأعاد الخادم حساب النتيجة، وأكّد البصمة، وصنّف الجولة مشبوهة: تباين صفري بين الضغطات، وتداخل صفري، وأزمنة ضغط متطابقة. واضطررنا إلى إضافة تذبذب عشوائي لكل كلمة وتوقفات «تفكير» عرضية من 80 إلى 300 مللي ثانية قبل أن تتمكن مجموعة اختباراتنا من نشر نتيجة تبدو بشرية. والخيار لا يزال في الشيفرة، تحت اسم humanLike.

الفحوص تنجح مع كل ما لا يحاول التحايل، وكل ما يحاول يستطيع اجتيازها، لذا يضع التصميم الثقل الحقيقي على إعادة الاختبار.

الخطوة الأولى: إعادة حساب كل شيء

متصفحك لا يرسل إلينا WPM. بل يرسل سجل ضغطات المفاتيح (كل حدث keydown وkeyup وinput وcomposition، موسومًا بالوقت من ساعة performance.now() الرتيبة)، والمقاييس التي حسبها، وبصمة SHA-256 للنتيجة بصيغتها القياسية.

يُشغّل الخادم شيفرة المقاييس نفسها على السجل ويقارن. فإن اختلف أي رقم بأكثر من 0.01، تُرفض النتيجة بسبب metrics_mismatch. وإن لم تتطابق البصمة، تُرفض بسبب hash_mismatch. وإضافة المتصفح التي تعدّل حقل WPM، وهي أشيع طرق الغش في المواقع التي تثق بجهاز المستخدم، تفشل هنا. فالدوال نفسها تُنتج الرقم على شاشتك وفي قاعدة البيانات، ولهذا تستطيع صفحة المقاييس لدينا أن تَعِد بأن مثالها المحلول يُعاد إنتاجه حتى منزلتين عشريتين.

لماذا لا نوقّت الاختبار على الخادم؟ لأن نتيجتك حينها ستشمل الشبكة. فكل ضغطة ستصلنا متأخرة قليلًا، بمقدار يتفاوت حسب اتصالك، والكاتب السريع على خط بطيء سيخسر سرعة كان يملكها فعلًا. السجل يمنحنا ساعة جهاز المستخدم من أجل الدقة، وإعادة الحساب على الخادم من أجل النزاهة.

الخطوة الثانية: هل للسجل معنى؟

قبل أي تحليل للتوقيت، فحوص بسيطة لشكل ما أُرسل:

  • يجب أن يستمر الاختبار 15 ثانية أو 10 كلمات على الأقل. فالجولات الأقصر مشوّشة أكثر من أن تُصنَّف، وأسهل ما يمكن تضخيمه.
  • لا يمكن أن تصل النتيجة قبل أن يكون الاختبار قد انتهى: أي وقت بدايته زائد مدته. نتيجة 60 ثانية تصل بعد عشرين ثانية من بدايتها لم تحدث.
  • يجب أن يتناسب عدد الأحداث مع الأحرف المكتوبة.
  • على الحاسوب المكتبي، يجب أن يلي كل حدث input حدثَ keydown في غضون 50 مللي ثانية. وهذا يكشف النص الملصوق، وأحداث الإدخال المبرمجة، ومعظم أدوات حقن ضغطات المفاتيح، التي تُطلق نصًا دون مفتاح فعلي. والكتابة عبر محرر طريقة الإدخال (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، لا يرفض التعليم وحده أي شيء. ونتيجتك لا تُخفى عنك أبدًا؛ فهذه الفحوص تقرر فقط هل تُصنَّف أم لا.

هل يمكن للغش في اختبار سرعة الكتابة أن يتجاوز فحوص التوقيت؟

نعم، إن بُنيت أداة الغش بعناية. فقد اختبرت ورقة على arXiv نشرها David Condrey في يناير 2026 كواشف قائمة على توقيت ضغطات المفاتيح، يُراد بها التمييز بين النص الذي كتبه إنسان والنص الذي ولّده الذكاء الاصطناعي. وقد ميّزت الحقن المؤتمت بالكامل تمييزًا تامًا، لكن الهجمات ذات التوقيت البشري (شخص يعيد كتابة نص من الذكاء الاصطناعي، أو برنامج يأخذ عينات من التأخيرات من بيانات كتابة بشرية) أفلتت من المصنِّفات الخمسة جميعها بنسب لا تقل عن 99.8%. الورقة تتناول كشف هوية الكاتب لا اختبارات الكتابة، لكن الدرس ينطبق: الخطوة الثالثة تكشف المتهاونين ولا شيء يُذكر غيرهم.

وأداة المساعدة في اختباراتنا تُثبت الفكرة نفسها على نطاق صغير: فالتذبذب العشوائي وبضعة توقفات نقلاها من اصطناعية بوضوح إلى معقولة.

لذا فالخطوة الثالثة مرشِّح. والحكم يأتي من الخطوة الرابعة.

الخطوة الرابعة: إعادة الاختبار للتوثيق

إن كانت نتيجة موقوتة أعلى من 130 WPM وكان توقيتها أيضًا غير معتاد، فإنك تراها وتُحفظ، لكنها تبقى خارج اللوحات العامة حتى تجتاز إعادة اختبار للتوثيق. وهي اختبار جديد مدته 30 ثانية، وعليك أن تبلغ فيه 75% على الأقل من السرعة التي ادّعيتها. فالمصادفة العابرة أو السجل المستعار لا ينجوان من جولة ثانية.

لماذا 130 WPM؟ إنها نحو مرتين ونصف متوسط 51.56 WPM في بيانات Dhakal، أي أبعد بكثير مما يبلغه معظم الكَتَبة، ومن يكتب بهذه السرعة فعلًا يستطيع أن يفعلها مرتين. والنتيجة السريعة المفاجئة ذات التوقيت الغريب هي الشكل الذي يُنتجه سجل مستعار أو سكربت، وإن كانت صادقة، فاختبار إضافي واحد ثمن زهيد.

إعادة الاختبار اختبار سرعة كتابة عادي، بنص عادي، لا صورة مشوّهة ولا صفحة من الرموز الغريبة. فالنص الصعب القراءة يُبطئ الجميع، وأكثر من يُبطئهم هم الكَتَبة السريعون الصادقون الذين وُجدت إعادة الاختبار لتبرئتهم. والتوثيق الذي يفشل فيه الكَتَبة السريعون الصادقون أسوأ من عدمه. كما أن النص العادي يجعل الفحص عادلًا: فسجل إعادة الاختبار نفسه يمر بفحوص التوقيت نفسها التي تمر بها أي نتيجة أخرى.

حدود المعدل والحظر

الإرسال محدود المعدل: ثلاثون في الدقيقة لكل مستخدم مسجّل الدخول، وستون لكل عنوان IP. والحساب الذي يتعثر بالفحوص مرارًا يُحظر حظرًا خفيًا (shadow ban)، أي يُخفى بهدوء من اللوحات، وثلاثة أحداث جدية لمكافحة الغش خلال 24 ساعة تُطلق ذلك تلقائيًا. وعدّ الأحداث ضمن نافذة زمنية يعني أن نتيجة غريبة واحدة لا تكلّفك حسابك أبدًا، بينما يتوقف السكربت الذي يفشل مرة بعد مرة سريعًا.

وتشترط لوحات المتصدرين لكل الأوقات أيضًا 30 دقيقة من الكتابة على الحساب، فلا يستطيع حساب جديد بجولة مثالية واحدة أن يتصدرها.

ما الذي قد يُعلّم نتيجتك عن غير قصد

معظم النتائج المعلَّمة ليست غشًا. وهذه الطرق الصادقة للتعثر بفحص ما:

التصحيح التلقائي على الهاتف. يصل الاستبدال حدثَ إدخال واحدًا يغيّر عدة أحرف. نحتسبه ضغطة واحدة، ونُعلّمه، ونُبقي النتيجة خارج اللوحات العامة مع ملاحظة، لا برفض.

النص الملصوق. اللصق محظور، والنتيجة التي جرت فيها محاولة لصق تُستبعد من اللوحات.

التبديل بين علامات التبويب. مغادرة التركيز للصفحة أكثر من ثانيتين أثناء الاختبار تجعله مقاطَعًا؛ فيُحفظ ويُعرض لكنه لا يُصنَّف.

التوقف. فاصل يتجاوز خمس ثوانٍ في اختبار كلمات أو اقتباس يجعل النتيجة متوقفة مؤقتًا. والمعاملة نفسها.

تركيب الإدخال عبر IME. الإدخال الياباني والكوري والصيني يصل عبر أحداث composition، لذا نتجاوز قاعدة keydown معها. وإن ظل شيء يبدو خاطئًا، فهذا خلل برمجي، ونودّ الحصول على السجل.

النتائج دون اتصال. النتيجة التي تُزامَن بعد أكثر من عشر دقائق من انتهائها تبقى في سجلك دون تصنيف، لأننا لا نستطيع التحقق من ساعتها.

أن تكون سريعًا فعلًا. فوق 130 WPM ستواجه إعادة الاختبار، على الأرجح في أول يوم جيد لك.

كيف تعترض

كل استبعاد يُظهر سببه في سجلك. إن رأيت أننا مخطئون بشأن نتيجة أو قيد ما، فراسل عنوان الاعتراضات الموجود في صفحة مكافحة الغش لدينا من العنوان المسجّل في حسابك، مع رابط النتيجة أو تاريخ الاختبار ووقته. سيشاهد شخص إعادة تشغيل ضغطات المفاتيح ويرد خلال بضعة أيام. ولا تُحسم الاعتراضات أبدًا بالنموذج الآلي وحده.

هل نشرنا للتو دليلًا لاجتياز الفحوص؟ جزئيًا. فقائمة الخصائص كان يمكن استنتاجها دائمًا من السلوك، والحدود تبقى سرية. وإعادة الاختبار هي الجزء المهم، والطريقة لاجتيازها هي أن تكتب.

أسئلة شائعة

كيف تكشف اختبارات سرعة الكتابة البرامج الآلية؟

الجيدة منها تقرأ سجل ضغطات المفاتيح: هل وراء كل حرف ضغطة مفتاح، وكم تتفاوت الفواصل بين المفاتيح، وكيف تُضغط المفاتيح وتتداخل. السكربتات تميل إلى الانتظام الزائد؛ والبرامج الآلية المتقنة تستطيع تقليد البشر، ولهذا نضيف إعادة اختبار.

هل يستطيع برنامج آلي اجتياز أدوات مكافحة الغش في اختبار سرعة الكتابة؟

البرنامج المتقن يستطيع اجتياز فحوص التوقيت: فقد وجد بحث عن الكواشف القائمة على توقيت ضغطات المفاتيح أن التوقيت المزوَّر الشبيه بالبشري أفلت منها في كل مرة تقريبًا. ولهذا نحجز النتائج السريعة لإعادة اختبار، يجب على البرنامج الآلي أن يجتازها مجددًا بسجل ثانٍ يمر بالفحوص نفسها.

لماذا لم تُصنَّف نتيجة اختباري؟

عادةً بسبب اختبار أقصر من 15 ثانية أو 10 كلمات، أو توقف يتجاوز خمس ثوانٍ، أو تبديل علامة التبويب، أو نتيجة أعلى من 130 WPM تنتظر إعادة الاختبار. ويُظهر سجلك السبب.

المصادر