لقد قمت بحل مشكلة Cloudflare Challenge عبر CaptchaAI، وحصلت على ملف تعريف الارتباط cf_clearance، وقمت بتعيينه في جلستك - وتظهر صفحة التحدي مرة أخرى. تحدث هذه الحلقة عندما لا يتطابق ملف تعريف الارتباط مع سياق الجلسة. هنا كل الأسباب وكيفية اصلاحها.
كيف يعمل cf_clearance
عندما يقوم CaptchaAI بحل مشكلة Cloudflare Challenge، فإنه يقوم بإرجاع ملف تعريف الارتباط cf_clearance. يرتبط ملف تعريف الارتباط هذا بما يلي:
- ** عنوان IP الوكيل ** المستخدم أثناء الحل
- ** وكيل المستخدم ** المستخدم أثناء الحل
- المجال للموقع المستهدف
إذا كان أي من هذه الأمور يختلف بين الحل وطلبك اللاحق، فإن Cloudflare يرفض ملف تعريف الارتباط ويعرض التحدي مرة أخرى.
السبب 1: عدم تطابق وكيل المستخدم
السبب الأكثر شيوعا. يجب أن يتطابق وكيل المستخدم الذي ترسله إلى CaptchaAI تمامًا مع وكيل المستخدم في طلباتك.
import requests
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
# Step 1: Solve with the SAME User-Agent
solve_data = {
"key": "YOUR_API_KEY",
"method": "cloudflare_challenge",
"pageurl": "https://example.com",
"proxy": "host:port:user:pass",
"proxytype": "HTTP",
"userAgent": USER_AGENT, # Must match step 2
"json": 1
}
submit = requests.post("https://ocr.captchaai.com/in.php", data=solve_data).json()
# ... poll for result ...
# Step 2: Use the SAME User-Agent in subsequent requests
session = requests.Session()
session.headers["User-Agent"] = USER_AGENT # Must match step 1
session.cookies.set("cf_clearance", cf_clearance_value, domain=".example.com")
resp = session.get("https://example.com")
السبب 2: عدم تطابق IP الوكيل
يرتبط ملف تعريف الارتباط cf_clearance بعنوان IP الذي حل التحدي. إذا طلبت الموقع من عنوان IP مختلف، فسيتم رفض ملف تعريف الارتباط.
PROXY = "host:port:user:pass"
# Solve with this proxy
solve_data = {
"key": "YOUR_API_KEY",
"method": "cloudflare_challenge",
"pageurl": "https://example.com",
"proxy": PROXY,
"proxytype": "HTTP",
"userAgent": USER_AGENT,
"json": 1
}
# Use the SAME proxy for subsequent requests
session.proxies = {
"http": f"http://user:pass@host:port",
"https": f"http://user:pass@host:port"
}
هام: إذا كنت تستخدم وكلاء متناوبين، فقم بتثبيته في جلسة ثابتة. يجب أن يبقى IP كما هو بين الحل والتصفح.
السبب 3: لم يتم تعيين ملف تعريف الارتباط بشكل صحيح
يجب تعيين ملف تعريف الارتباط cf_clearance على المجال الصحيح بالسمات الصحيحة.
# WRONG — setting on wrong domain
session.cookies.set("cf_clearance", value, domain="example.com")
# CORRECT — include the dot prefix for subdomain coverage
session.cookies.set("cf_clearance", value, domain=".example.com")
# Or set all cookies returned by CaptchaAI
for cookie_str in result.get("cookies", "").split(";"):
if "cf_clearance" in cookie_str:
name, val = cookie_str.strip().split("=", 1)
session.cookies.set(name.strip(), val.strip(), domain=".example.com")
السبب 4: انتهاء صلاحية ملف تعريف الارتباط
تتمتع ملفات تعريف الارتباط cf_clearance بعمر محدود — عادةً ما بين 15 إلى 30 دقيقة. بعد انتهاء الصلاحية، يظهر Cloudflare التحدي مرة أخرى.
الإصلاح: تتبع عمر ملف تعريف الارتباط وإعادة الحل قبل انتهاء الصلاحية.
import time
last_solve_time = None
COOKIE_TTL = 900 # 15 minutes
def get_cf_clearance():
global last_solve_time
if last_solve_time and (time.time() - last_solve_time) < COOKIE_TTL:
return # Cookie still valid
# Solve again
cf_clearance = solve_cloudflare_challenge()
session.cookies.set("cf_clearance", cf_clearance, domain=".example.com")
last_solve_time = time.time()
السبب 5: عدم تطابق بصمة TLS
يقوم Cloudflare بفحص بصمات TLS. تحتوي مكتبة requests الخاصة بـ Python على بصمة TLS مختلفة عن Chrome. ترفض بعض المواقع الطلبات حتى مع cf_clearance الصالح إذا كانت بصمة TLS غير متطابقة.
الإصلاح: استخدم curl_cffi أو tls-client لبصمات أصابع TLS المشابهة للمتصفح.
pip install curl_cffi
from curl_cffi import requests as curl_requests
session = curl_requests.Session(impersonate="chrome120")
session.cookies.set("cf_clearance", value, domain=".example.com")
resp = session.get("https://example.com")
قائمة التحقق من التصحيح
Challenge keeps repeating
↓
User-Agent in solve request matches browsing request? → No → Sync User-Agent
↓ Yes
Same proxy IP for solve and browse? → No → Pin proxy IP (sticky session)
↓ Yes
Cookie set on correct domain (.example.com)? → No → Fix domain
↓ Yes
Cookie less than 15 minutes old? → No → Re-solve the challenge
↓ Yes
TLS fingerprint matches a browser? → No → Use curl_cffi or tls-client
↓ Yes
Site may have additional bot detection → Use headless browser instead
الأسئلة الشائعة
ما هي مدة بقاء ملف تعريف الارتباط cf_clearance؟
عادة 15-30 دقيقة. تحدد بعض المواقع فترات أقصر. إعادة الحل بشكل استباقي قبل انتهاء الصلاحية.
هل أحتاج إلى إصدار Chrome محدد في وكيل المستخدم؟
استخدم وكيل مستخدم حاليًا وواقعيًا. يقوم وكلاء المستخدم القديمون بتشغيل عمليات فحص Cloudflare بشكل أكثر قوة.
هل يمكنني إعادة استخدام ملف تعريف الارتباط cf_clearance عبر صفحات مختلفة؟
نعم، طالما أنهم موجودون في نفس المجال وتستخدمون نفس عنوان IP ووكيل المستخدم.
حل Cloudflare Challenges مع CaptchaAI
كسر حلقة التحدي فيcaptchaai.com.