الشروحات المعمقة

كيف تؤثر إعدادات اللغة على اختبارات CAPTCHA

تغيّر إعدادات اللغة مظهر اختبار CAPTCHA ونصوصه، لكنها لا تغيّر الرمز الذي يثبت اجتيازه. الموقع نفسه قد يعرض reCAPTCHA بالعربية لزائر من الرياض وبالإنجليزية لزائر من لندن، وقد يبدّل نوع التحدي بالكامل بحسب الموقع الجغرافي — ومع ذلك يبقى مفتاح الموقع وتدفق التحقق ثابتين. الاستثناء الوحيد هو صور CAPTCHA النصية، حيث تتغيّر الأحرف المعروضة فعلاً بتغيّر اللغة. معرفة ما يتحرّك وما يثبت هي ما يجعل أتمتتك مستقرة عبر الأسواق.

كيف تؤثر اللغة على عملية الحل

هذا هو السؤال العملي الذي يهمّ أي مطوّر أتمتة، والإجابة تختلف بين نوعين من التحديات.

الأنواع المعتمدة على الرمز (reCAPTCHA وTurnstile)

تمسّ اللغة الواجهة فقط لا الرمز، وحلّ CaptchaAI مستقل عنها تماماً:

  • أرسل مفتاح الموقع وعنوان URL للصفحة
  • يعيد CaptchaAI رمزاً صالحاً
  • يعمل الرمز مهما كانت اللغة التي تعرضها القطعة

لا حاجة لأي معلمة لغة عند استدعاء CaptchaAI لهذه الأنواع. ولاحظ أن hCaptcha يُترجَم مثلها، لكن CaptchaAI لا يحلّ hCaptcha حالياً.

صور CAPTCHA النصية

هنا تؤثر اللغة مباشرةً في أحرف الصورة، فاضبط معلمة language لتطابق مجموعة الأحرف:

لغة الموقع ما يظهر في الصورة معلمة language في CaptchaAI
الإنجليزية نص لاتيني مثل "XKCD42" 0 (افتراضي/لاتيني)
الروسية أحرف سيريلية 1 (سيريلي) أو 2
الصينية رموز صينية 2 (غير لاتيني)
العربية نص عربي 2 (غير لاتيني)
اليابانية حروف يابانية (هيراغانا/كانجي) 2 (غير لاتيني)

اختبارات CAPTCHA الصوتية

تُنطق تحديات reCAPTCHA الصوتية بلغة hl أو رأس Accept-Language، ويعالجها CaptchaAI عبر تدفق حل reCAPTCHA القياسي بصرف النظر عن لغة الصوت.

ماذا يتغيّر عند اختلاف اللغة؟

اللغة تلمس عادةً الطبقة المرئية من التحدي لا آليته:

مزوّد CAPTCHA ما الذي يُترجَم بحسب اللغة ما الذي يبقى ثابتاً
reCAPTCHA نص الواجهة، تسميات الصور، لغة الصوت مفتاح الموقع، تدفق التحقق، تنسيق الرمز
Turnstile نص القطعة ورسائل الخطأ مفتاح الموقع، تنسيق الرمز، آلية الحل
hCaptcha تعليمات التحدي وتسميات الفئات مفتاح الموقع، تنسيق الرمز
Image/OCR مجموعة الأحرف ولغة النص تنسيق الصورة، تدفق الإرسال والاستطلاع

كيف يكتشف مزوّد CAPTCHA لغة الزائر

يستدل المزوّدون على اللغة من عدة إشارات:

1. رأس Accept-Language

Accept-Language: ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7

يخبر هذا الرأس الخادم بالأولوية: اليابانية أولاً، ثم الإنجليزية (الولايات المتحدة)، ثم الإنجليزية العامة. يعتمد عليه reCAPTCHA وTurnstile في اختيار لغة الواجهة.

2. معلمة hl في HTML

يقبل reCAPTCHA معلمة لغة صريحة عند تحميل السكربت:

<!-- Force English reCAPTCHA -->
<script src="https://www.google.com/recaptcha/api.js?hl=en"></script>

<!-- Force Japanese -->
<script src="https://www.google.com/recaptcha/api.js?hl=ja"></script>

تتجاوز معلمة hl رأس Accept-Language، ولا يعنيك مطابقتها عند الحل — يعيد CaptchaAI رمزاً صالحاً مهما كانت لغة الواجهة.

3. تحديد الموقع الجغرافي عبر IP

بعض التكوينات تختلف بحسب المنطقة التي يأتي منها عنوان IP:

  • عنوان IP من الصين — قد يظهر GeeTest بدل reCAPTCHA (reCAPTCHA محجوب في الصين).
  • عنوان IP من الاتحاد الأوروبي — قد تظهر موافقة GDPR قبل اختبار CAPTCHA.
  • عنوان IP من منطقة عالية المخاطر — قد تكون التحديات أكثر صرامة.

4. لغة المتصفح navigator.language

تقرأ اختبارات CAPTCHA المبنية على JavaScript لغة المتصفح مباشرة:

navigator.language       // "en-US"
navigator.languages      // ["en-US", "en", "ja"]

في المتصفحات بدون واجهة تعود هذه القيم إلى لغة النظام؛ اضبطها صراحةً لتطابق هدفك:

// Playwright
const context = await browser.newContext({
  locale: 'ja-JP',
});

// Puppeteer
const page = await browser.newPage();
await page.setExtraHTTPHeaders({
  'Accept-Language': 'ja-JP,ja;q=0.9',
});

سيناريو عملي: فحص متجر عربي لتدفق الدفع

تختبر إتمام الشراء في متجر يخدم السوق الخليجي، فيكتشف الموقع عنوان IP خليجياً ويعرض reCAPTCHA بالعربية وصورة CAPTCHA بأحرف عربية. تكفي القيم الافتراضية للأنواع المعتمدة على الرمز، بينما تضبط language=2 لصورة CAPTCHA العربية، وتبقي Accept-Language عربياً لينسجم مع الواجهة.

مشكلات التوطين الشائعة

عدم تطابق اللغة بين أداة الأتمتة والموقع

إذا أرسلت أداتك Accept-Language: en-US إلى موقع عربي، فقد يظهر التحدي بالإنجليزية. هذا لا يضرّ الأنواع المعتمدة على الرمز، لكنه قد يسبب مشكلة إذا كان الموقع يتحقق من تناسق اللغة بين الرؤوس وبقية الإشارات.

اختلاف مزوّد CAPTCHA بحسب المنطقة

تعتمد بعض البلدان على مزوّدين مختلفين، فتوقّع نوعاً مغايراً بحسب منطقة الهدف:

  • الأسواق الغربية — reCAPTCHA وTurnstile وhCaptcha.
  • الصين — GeeTest وTencent CAPTCHA وصور مخصّصة.
  • روسيا ودول CIS — صور CAPTCHA مخصّصة وreCAPTCHA.
  • كوريا الجنوبية — أشرطة تمرير مخصّصة وصور CAPTCHA.

استكشاف الأخطاء وإصلاحها

المشكلة السبب الإجراء
ظهور reCAPTCHA بلغة غير متوقّعة تعارض بين hl في وسم السكربت ورأس Accept-Language لا يؤثر ذلك على الحل — الرمز مستقل عن اللغة
التعرّف على أحرف خاطئة في صورة CAPTCHA معلمة language لا تطابق نص الصورة اضبط language=2 للنصوص غير اللاتينية
ظهور نوع CAPTCHA مختلف حسب المنطقة اختيار المزوّد بناءً على الموقع الجغرافي استخدم خادماً وسيطاً يطابق منطقة الهدف
لغة خاطئة في متصفح بدون واجهة استُخدمت لغة النظام الافتراضية اضبط locale صراحةً في سياق المتصفح
اختبار صوتي بلغة غير متوقّعة معلمة hl تتجاوز الرأس لا يؤثر على حل CaptchaAI المعتمد على الرمز

أسئلة شائعة

كيف أُجبر reCAPTCHA على الظهور بالعربية أو الإنجليزية؟

أضف معلمة hl إلى وسم السكربت: ?hl=ar للعربية أو ?hl=en للإنجليزية؛ فهي تتجاوز رأس Accept-Language وتثبّت لغة الواجهة.

هل تؤثر واجهة RTL العربية على قدرة CaptchaAI على قراءة صورة CAPTCHA؟

لا؛ اتجاه الصفحة لا يغيّر شيئاً، والمهم مجموعة الأحرف داخل الصورة. للنص العربي اضبط language=2 (غير لاتيني).

ما الفرق بين رأس Accept-Language ومعلمة navigator.language؟

الأول يُرسَل مع طلب HTTP ويقرأه الخادم، والثاني يُقرأ من المتصفح عبر JavaScript. اضبط الاثنين معاً في الأتمتة لتفادي التعارض.

هل يؤثر الموقع الجغرافي على نوع CAPTCHA الذي أستقبله؟

نعم؛ قد يختار الموقع مزوّداً مختلفاً أو تحدياً أصعب بحسب منطقة IP. استخدم خادماً وسيطاً يطابق منطقة هدفك.


الخطوات التالية

أدلة ذات صلة

التعليقات غير مفعّلة لهذا المقال.