يعد حل Cloudflare Challenge أكثر تعقيدًا من أنواع CAPTCHA الأخرى لأنه يتطلب مطابقة الوكيل وربط IP وتناسق وكيل المستخدم. فيما يلي الأخطاء الأكثر شيوعًا وكيفية إصلاح كل منها.
أخطاء إرسال واجهة برمجة التطبيقات
ERROR_BAD_PARAMETERS
السبب: المعلمات المطلوبة مفقودة.
الإصلاح: يتطلب Cloudflare Challenge هذه المعلمات:
method=cloudflare_challenge
pageurl=https://example.com
proxy=user:pass@host:port
proxytype=HTTP
الأربعة كلها إلزامية. على عكس Turnstile أو reCAPTCHA، الوكيل مطلوب.
ERROR_PROXY_CONNECTION_FAILED
السبب: لا يمكن لـ CaptchaAI الاتصال عبر الوكيل الخاص بك.
الإصلاح:
- اختبر الوكيل بشكل مستقل:
curl -x http://user:pass@host:port https://httpbin.org/ip - تأكد من أن الوكيل يدعم HTTPS
- تحقق من متطلبات القائمة البيضاء لعناوين IP على موفر الوكيل الخاص بك
- حاول استخدام وكيل مختلف من نفس المزود
ERROR_PROXY_BANNED
السبب: تم حظر عنوان IP الوكيل الخاص بك بواسطة Cloudflare.
الإصلاح:
- قم بالتبديل إلى وكيل سكني أو مزود خدمة الإنترنت
- يتم وضع علامة على عناوين IP لمراكز البيانات بشكل كبير بواسطة Cloudflare
- قم بالتدوير إلى عنوان IP جديد وأعد المحاولة
ERROR_CAPTCHA_UNSOLVABLE
السبب: لا يمكن حل التحدي، حتى بعد إعادة المحاولة.
الإصلاح:
- ربما قام الموقع بتغيير إعدادات Cloudflare الخاصة به
- حاول استخدام وكيل مختلف (قد يكون عنوان IP الخاص بالوكيل نفسه محظورًا)
- انتظر 5 دقائق ثم أعد المحاولة — قد يكون Cloudflare في وضع الأمان المشدد
- تحقق من أن عنوان URL للصفحة لا يزال يعرض Cloudflare Challenge
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}"}
تم رفض ملف تعريف الارتباط - عدم تطابق وكيل المستخدم
السبب: وكيل مستخدم مختلف بين الحل والطلبات.
الإصلاح: استخدم وكيل المستخدم الذي تم إرجاعه في رد الحل:
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
أخطاء المهلة
يستغرق الحل وقتًا طويلاً (> 5 دقائق)
السبب: يمكن أن تكون صفحات Cloudflare Challenge بطيئة عندما يكون الوكيل بطيئًا أو عندما يكون التحدي معقدًا.
الإصلاح:
- استخدم وكيلًا أسرع مع زمن وصول أقل
- زيادة مهلة الاستقصاء إلى 60 محاولة (5 دقائق)
- تحقق مما إذا كان الموقع يحتوي بالفعل على Cloudflare Challenge مقابل حماية مختلفة
يستمر CAPCHA_NOT_READY
السبب: لا يزال الحل قيد التقدم.
الإصلاح:
- تستغرق Cloudflare Challenge من 20 إلى 60 ثانية، وهي مدة أطول من الأنواع الأخرى
- قم بالاستطلاع كل 5 ثوانٍ لما يصل إلى 60 محاولة
- إذا لم تكن جاهزًا بعد 5 دقائق، قم بإحباط العملية وإعادة المحاولة باستخدام وكيل مختلف
أخطاء التكامل الشائعة
| خطأ | النتيجة | إصلاح |
|---|---|---|
| معلمة الوكيل مفقودة | ERROR_BAD_PARAMETERS |
قم دائمًا بتضمين وكيل لتحدي JavaScript |
| باستخدام وكيل مركز البيانات | ERROR_PROXY_BANNED |
استخدام الوكلاء السكنية |
| UA مختلفة للطلبات | تم رفض ملف تعريف الارتباط | إعادة استخدام UA من الحل |
| IP مختلف للطلبات | تم رفض ملف تعريف الارتباط | استخدم نفس الوكيل لجميع الطلبات |
| عدم تعيين مجال ملفات تعريف الارتباط | لم يتم إرسال ملف تعريف الارتباط | اضبط المجال على .example.com (مع بادئة النقطة) |
| استخدام HTTP بدلاً من HTTPS | فشل الاتصال | يتطلب Cloudflare HTTPS |
قائمة التحقق من التصحيح
- ✅هل الصفحة خلف Cloudflare Challenge فعلا؟ (ليس Turnstile أو reCAPTCHA)
- ✅ هل جميع المعلمات المطلوبة متضمنة؟ (الطريقة، عنوان URL للصفحة، الوكيل، نوع الوكيل)
- ✅ هل يعمل البروكسي؟ اختبار مع
curl - ✅هل البروكسي سكني أم مزود خدمة الإنترنت؟ (يتم حظر عناوين IP لمركز البيانات)
- ✅ هل تستخدم نفس الوكيل لحل الطلبات؟
- ✅ هل تستخدم وكيل المستخدم الذي تم إرجاعه للطلبات؟
- ✅ هل يتم تعيين ملف تعريف الارتباط على المجال الصحيح؟
- ✅ هل لا يزال ملف تعريف الارتباط ضمن مدة البقاء (TTL) الخاصة به؟
الأسئلة الشائعة
لماذا يلزم وجود وكيل لـ Cloudflare Challenge ولكن ليس لـ reCAPTCHA؟
يقوم Cloudflare بربط ملف تعريف الارتباط cf_clearance بعنوان IP. يجب أن يتم الحل من نفس عنوان IP الذي ستستخدمه للطلبات اللاحقة. رموز reCAPTCHA ليست مرتبطة بـ IP.
هل يمكنني استخدام بروكسيات SOCKS5؟
نعم. قم بتعيين proxytype=SOCKS5 وقم بتنسيق الوكيل كـ user:pass@host:port.
كيف يمكنني معرفة ما إذا كان ملف تعريف الارتباط الخاص بي لا يزال صالحًا؟
قم بتقديم طلب باستخدام ملف تعريف الارتباط. إذا حصلت على 200 رد بمحتوى الصفحة، فهذا صحيح. إذا حصلت على 403 أو شاهدت "جارٍ التحقق من المتصفح"، فهذا يعني أن ملف تعريف الارتباط قد انتهت صلاحيته.
لماذا أستمر في الحصول على ERROR_CAPTCHA_UNSOLVABLE؟
وهذا يعني عادةً أن عنوان IP الخاص بالوكيل تم وضع علامة عليه بشكل كبير بواسطة Cloudflare. قم بالتدوير إلى عنوان IP سكني جديد. إذا استمر الخطأ عبر عناوين IP جديدة متعددة، فقد يكون لدى الموقع إعدادات Cloudflare صارمة للغاية.