استكشاف الأخطاء

أخطاء Cloudflare Challenge الشائعة وطرق إصلاحها

معظم حالات فشل Cloudflare Challenge لا تعود إلى الحل نفسه، بل إلى عدم تطابق بين الوكيل وعنوان IP ووكيل المستخدم وقت الحل وفي الطلبات اللاحقة. فبمجرد أن يصدر Cloudflare ملف cf_clearance يربطه بعنوان IP وبصمة المتصفح، وأي اختلاف لاحق يُبطل الجلسة ويعيدك إلى صفحة التحقق. يصنّف هذا الدليل الأخطاء الأشيع حسب عرضها الظاهر — من رسائل الـ API إلى رفض ملف تعريف الارتباط والمهلات — مع إصلاح مباشر لكل حالة.


القاعدة الأساسية في حل Cloudflare Challenge: ثبات الوكيل وعنوان IP ووكيل المستخدم

خلافًا لـ reCAPTCHA أو Turnstile حيث يكفي الحصول على الرمز وإرساله، يفرض Cloudflare Challenge ثلاثة عناصر يجب أن تبقى ثابتة من لحظة الحل حتى آخر طلب:

  • الوكيل نفسه: يجب أن يمرّ الحل والطلبات اللاحقة عبر الوكيل ذاته، لأن عنوان IP جزء من هوية الجلسة.
  • وكيل المستخدم نفسه: استخدم قيمة User-Agent التي يعيدها رد الحل حرفيًا، دون أي تعديل.
  • نوع وكيل مناسب: الوكلاء السكنيون أو وكلاء مزوّدي الإنترنت (ISP) يمرّون بثقة أعلى بكثير من وكلاء مراكز البيانات.

اختلال أي من هذه العناصر يُظهر الأخطاء التالية، ومن يرسّخ هذه القاعدة يتفادى معظمها مبكرًا.


أخطاء الإرسال إلى الـ API

تظهر هذه الأخطاء لحظة إرسال المهمة إلى نقطة النهاية in.php، أي قبل أن يبدأ الحل فعليًا.

ERROR_BAD_PARAMETERS

السبب: أحد المعاملات الإلزامية ناقص.

الإصلاح: يتطلب Cloudflare Challenge المعاملات الأربعة التالية مجتمعة:

method=cloudflare_challenge
pageurl=https://example.com
proxy=user:pass@host:port
proxytype=HTTP

لا يمكن الاستغناء عن أي منها. وخلافًا لـ Turnstile أو reCAPTCHA، فمعامل proxy هنا إلزامي. ولوكلاء SOCKS5 اضبط proxytype=SOCKS5 بالتنسيق ذاته.

ERROR_PROXY_CONNECTION_FAILED

السبب: تعذّر على CaptchaAI الاتصال عبر الوكيل الذي زوّدته.

الإصلاح:

  • اختبر الوكيل وحده: curl -x http://user:pass@host:port https://httpbin.org/ip
  • تأكد أن الوكيل يدعم HTTPS وليس HTTP فقط
  • راجع اشتراط مزوّد الوكيل إضافة عنوان IP إلى القائمة البيضاء
  • جرّب وكيلًا آخر من المزوّد نفسه

ERROR_PROXY_BANNED

السبب: حظر Cloudflare عنوان IP الخاص بالوكيل.

الإصلاح:

  • انتقل إلى وكيل سكني أو وكيل ISP
  • عناوين IP لمراكز البيانات مؤشَّرة بكثافة لدى Cloudflare وتُحظر بسرعة
  • دوّر إلى عنوان IP جديد وأعد المحاولة

مثال واقعي: عند مراقبة أسعار متجر إلكتروني إقليمي في السعودية أو مصر محمي بـ Cloudflare، تقودك وكلاء مراكز البيانات الرخيصة سريعًا إلى ERROR_PROXY_BANNED؛ والحل وكيل سكني قريب جغرافيًا من جمهور الموقع.

ERROR_CAPTCHA_UNSOLVABLE

السبب: تعذّر حل التحدي حتى بعد إعادة المحاولة.

الإصلاح:

  • ربما غيّر الموقع إعدادات Cloudflare لديه
  • جرّب وكيلًا مختلفًا، فقد يكون عنوان IP نفسه محظورًا
  • انتظر خمس دقائق ثم أعد المحاولة؛ قد يكون Cloudflare في وضع أمان مشدّد مؤقت
  • تأكد أن رابط الصفحة لا يزال يعرض Cloudflare Challenge وليس حماية أخرى

أخطاء المهلة وبطء الحل

Cloudflare Challenge أبطأ بطبيعته من بقية الأنواع، فلا تعدّ طول وقت الحل خطأً دائمًا.

يستغرق الحل وقتًا طويلًا (أكثر من 5 دقائق)

السبب: يبطؤ الحل حين يكون الوكيل بطيئًا أو حين يكون التحدي معقدًا.

الإصلاح:

  • استخدم وكيلًا أسرع وبزمن استجابة أقل
  • ارفع مهلة الاستطلاع إلى 60 محاولة (نحو 5 دقائق)
  • تحقق أن الصفحة محمية بـ Cloudflare Challenge أصلًا لا بحماية أخرى

استمرار CAPCHA_NOT_READY

السبب: الحل لا يزال قيد التنفيذ.

الإصلاح:

  • يستغرق Cloudflare Challenge بين 20 و60 ثانية، أطول من الأنواع الأخرى
  • استطلع النتيجة كل 5 ثوانٍ لما يصل إلى 60 محاولة
  • إن لم تجهز بعد 5 دقائق، أوقف العملية وأعد المحاولة بوكيل مختلف

أخطاء ملف تعريف الارتباط cf_clearance بعد الحل

بعد نجاح الحل تظهر فئة أخرى: الموقع يرفض ملف cf_clearance رغم حصولك عليه، والسبب يعود دائمًا إلى القاعدة الأساسية أعلاه.

الموقع يرفض ملف تعريف الارتباط ويعيد عرض التحدي

السبب: عدم تطابق عنوان IP بين الحل والاستخدام.

الإصلاح: استخدم الوكيل نفسه بالضبط في الطلبات اللاحقة:

# WRONG — different proxy for solving and requests
solve_proxy = "proxy1.example.com:8080"
request_proxy = "proxy2.example.com:8080"

# CORRECT — same proxy for both
proxy = "user:pass@proxy1.example.com:8080"

# Submit solve with this proxy
response = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY,
    "method": "cloudflare_challenge",
    "pageurl": "https://example.com",
    "proxy": proxy,
    "proxytype": "HTTP",
    "json": 1
})

# Use the SAME proxy for page requests
session = requests.Session()
session.cookies.set("cf_clearance", solved_cookie)
session.proxies = {"https": f"http://{proxy}"}

رفض ملف تعريف الارتباط بسبب اختلاف وكيل المستخدم

السبب: اختلاف قيمة User-Agent بين الحل والطلبات.

الإصلاح: استخدم وكيل المستخدم الذي يعيده رد الحل كما هو:

solution = result["request"]

# Extract and reuse the exact user agent
user_agent = solution.get("user_agent")

session = requests.Session()
session.headers["User-Agent"] = user_agent  # Must match exactly
session.cookies.set("cf_clearance", solution["cf_clearance"])

انتهاء صلاحية ملف تعريف الارتباط

السبب: لملف cf_clearance عمر محدود (عادةً بين 15 دقيقة و24 ساعة).

الإصلاح:

  • سجّل وقت الحصول على ملف تعريف الارتباط
  • أعد الحل قبل انتهاء صلاحيته (TTL)
  • فعّل إعادة حل تلقائية عند أي استجابة تعيدك إلى صفحة التحدي
def make_request(url, session):
    response = session.get(url)
    if "challenge" in response.text.lower() or response.status_code == 403:
        # Cookie expired — re-solve
        new_cookie = solve_cloudflare_challenge(url, proxy)
        session.cookies.set("cf_clearance", new_cookie)
        response = session.get(url)
    return response

جدول مرجعي: أخطاء شائعة وحلولها السريعة

الخطأ الشائع النتيجة الإصلاح
نسيان معامل الوكيل ERROR_BAD_PARAMETERS ضمّن الوكيل دائمًا مع Cloudflare Challenge
استخدام وكيل مركز بيانات ERROR_PROXY_BANNED استخدم وكلاء سكنيين
اختلاف وكيل المستخدم في الطلبات رفض ملف تعريف الارتباط أعد استخدام User-Agent من رد الحل
اختلاف عنوان IP في الطلبات رفض ملف تعريف الارتباط استخدم الوكيل نفسه لكل الطلبات
عدم ضبط نطاق ملف تعريف الارتباط لا يُرسَل ملف تعريف الارتباط اضبط النطاق على .example.com (مع نقطة بادئة)
استخدام HTTP بدل HTTPS فشل الاتصال يشترط Cloudflare استخدام HTTPS

قائمة تحقق سريعة لأخطاء Cloudflare Challenge قبل فتح تذكرة دعم

  1. ✅ هل الصفحة فعلًا خلف Cloudflare Challenge؟ (وليست Turnstile أو reCAPTCHA)
  2. ✅ هل المعاملات الإلزامية كلها موجودة؟ (method، pageurl، proxy، proxytype)
  3. ✅ هل يعمل الوكيل؟ اختبره بـ curl
  4. ✅ هل الوكيل سكني أو ISP؟ (عناوين مراكز البيانات تُحظر)
  5. ✅ هل تستخدم الوكيل نفسه للحل وللطلبات معًا؟
  6. ✅ هل تستخدم وكيل المستخدم المُعاد في الطلبات؟
  7. ✅ هل ملف تعريف الارتباط مضبوط على النطاق الصحيح؟
  8. ✅ هل ما زال ملف تعريف الارتباط ضمن مدة صلاحيته (TTL)؟

الأسئلة الشائعة

ما الفرق بين Cloudflare Challenge وTurnstile عند التشخيص؟

  • Turnstile: رمز واحد (cf-turnstile-response) ترسله وغالبًا دون وكيل، وأخطاؤه تدور حول الرمز.
  • Cloudflare Challenge: ملف cf_clearance مرتبط بعنوان IP ووكيل المستخدم، وأخطاؤه تدور حول ثبات الجلسة والوكيل.

هل يجب أن يكون الوكيل من نفس بلد الموقع المستهدف؟

ليس شرطًا تقنيًا، لكن الوكيل السكني القريب جغرافيًا يمرّ بثقة أعلى ويقلّل احتمال ERROR_PROXY_BANNED، خصوصًا على المواقع الإقليمية المشدّدة.

كم يستغرق حل Cloudflare Challenge عادةً؟

  • المدة المعتادة بين 20 و60 ثانية، أطول من reCAPTCHA أو Turnstile.
  • اضبط الاستطلاع كل 5 ثوانٍ حتى 60 محاولة قبل اعتبارها فاشلة.

كيف أتجنّب انتهاء صلاحية cf_clearance في المهام الطويلة؟

  • راقب عمر الملف وأعد الحل استباقيًا قبل انتهاء الصلاحية (TTL).
  • أو فعّل إعادة حل تلقائية عند أول استجابة 403 أو ظهور رسالة "جارٍ التحقق من متصفحك".

أدلة ذات صلة

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