يحتوي هذا الريبو على البرنامج النصي الذي استخدمته للتغلب على لعبة الكتابة على الإنترنت، وتصدر قائمة المتصدرين بـ WPM غير إنساني يبلغ 450 تقريبًا.
لا أوصي باستخدام هذا البرنامج النصي فعليًا على الآلة الكاتبة، فهو مخالف لشروط الخدمة (سيتم حظر حسابك، كما حدث مع حسابي) ويلوث لوحة المتصدرين للاعبين الحقيقيين الآخرين. بدلاً من ذلك، أجد هذا المشروع مجرد تجربة مثيرة للاهتمام وتجربة تعليمية.
لأي شخص فضولي، لقد أوضحت أدناه كل خطوة من خطوات العملية. لاحظ أن هذه الطريقة المحددة قد لا تعمل في المستقبل حيث قد (ويجب) على الطابعة تغيير إجراء التحقق من صحة المستخدم. أستطيع أن أؤكد أن هذا البرنامج النصي يعمل اعتبارًا من 16-02-2020.
في الواقع، تعد كتابة السباق تلقائيًا أمرًا بسيطًا مثل استخراج النص من DOM وإرسال المجموعة الصحيحة من أحداث JavaScript الرئيسية.
في حين أن سرعة السباق الخاص بك يتم تحديدها من خلال الفاصل الزمني بين الضغطات المزيفة على المفاتيح (والتي يمكن أن تكون منخفضة بشكل تعسفي)، يبدو أنه إذا تجاوز WPM الخاص بك في أي وقت 450، فسيتم طردك من اللعبة. وبالتالي هناك حد أعلى لـ WPM الذي يمكن للبرنامج النصي الحصول عليه. لتحقيق 445 WPM (أعلى مستوى تمكنت من الحصول عليه)، تم فصل ضغطات المفاتيح بفواصل زمنية عشوائية تتراوح بين 22.5 مللي ثانية و26.5 مللي ثانية.
بعد الحصول على معدل WPM مرتفع بدرجة كافية (> 100)، يتم تقديم رمز التحقق للصورة الذي لا يحتوي على نموذج نصي بحت في أي مكان على جانب العميل - وهذا هو التحدي الحقيقي.
للتحقق من صحة درجاتك، يجب أن تكون قادرًا على إكمال اختبار التحقق خلال فترة زمنية معينة وبدقة عالية بما يكفي (~95% أو أكثر). تحتوي رموز التحقق دائمًا على 5 أسطر من النص الملتوي (المائل والجيبي)، مع علامات سوداء تغطي الصورة.
كلمة التحقق نموذجية
يعد إكمال اختبار التحقق عملية طويلة نسبيًا، وفوضوية، واحتمالية، ومضاربة، ويدوية، إلا أنها تحتاج إلى إكمالها مرة واحدة فقط، وبالتالي ليس لدي أي نية لتبسيط العملية.
قبل قراءة الصورة، يقوم البرنامج النصي بإجراء بعض المعالجة المسبقة باستخدام لوحة HTML مؤقتة لتسهيل التعرف على النص. على وجه الخصوص، يتم فحص الصورة ضوئيًا بحثًا عن أي وحدات بكسل داكنة بما يكفي لتكون جزءًا من العلامات السوداء. عند العثور على بكسل، يتم تغيير البكسل ليمثل نفس لون الخلفية عند تلك النقطة في الصورة.
نفس صورة التحقق بعد المعالجة المسبقة
بعد تطبيق هذا الإجراء، حاولت أيضًا عكس تأثير الالتواء الجيبي. وكان هذا فعالاً للغاية في تحسين إمكانية قراءة صورة معينة، إلا أن الفترة الفعلية لتأثير الالتواء تختلف بين الصور ببضعة بكسلات. حتى أن تطبيق تأثير إزاحة بضع وحدات بكسل يقلل بشكل كبير من إمكانية القراءة بنهاية الصورة عندما تصبح الموجة خارج الطور. لذلك قررت إزالة هذا القسم من المعالجة المسبقة.
الخطوة التالية هي إرسال الصورة التي تمت معالجتها مسبقًا والتي أنشأناها إلى مكتبة OCR (التعرف البصري على الأحرف) تسمى Tesseract. للسماح بتشغيل البرنامج النصي بأكمله داخل المتصفح، يستخدم البرنامج النصي منفذ JS للمكتبة المتوفر هنا.
بعد بضع ثوانٍ، سيعيد Tesseract جزءًا من النص بدقة تتراوح عادةً بين 65% و85%.
كشف تحليل النص الذي أعادته Tesseract عن بعض الأخطاء الشائعة التي يمكنني عكسها يدويًا من خلال بعض التلاعب بالسلسلة.
يتكون هذا من استبدالات مختلفة للأحرف مثل
بمجرد اكتمال الخطوة السابقة، يتم إدخال النص في مربع النص المستخدم لإكمال اختبار CAPTCHA. في هذه المرحلة، لا يزال النص غير دقيق بدرجة كافية لاجتياز اختبار التحقق، ومع ذلك، هناك وقت لإجراء التعديلات اليدوية خلال 3-5 ثوانٍ تقريبًا.
للمساعدة في هذه العملية، يمكن إصلاح الأخطاء الإملائية البسيطة بسهولة باستخدام المتصفحات المضمنة في التدقيق الإملائي (انقر بزر الماوس الأيمن، حدد الكلمات الموصى بها من القائمة).
مع تطبيق كل هذه الخطوات، لم يستغرق الأمر سوى حوالي ست محاولات للحصول على الدقة التي ترضي اختبار CAPTCHA.