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

Cloudflare Challenge cf_clearance دليل ملفات تعريف الارتباط

عندما تضع Cloudflare إشارة على زائر مريب، فإنها تعرض صفحة تحدي بينية. بمجرد حل المشكلة، يتلقى المتصفح ملف تعريف الارتباط cf_clearance الذي يمنح الوصول للجلسة. يشرح هذا الدليل كيفية عمل تدفق التحدي وكيفية تعامل CaptchaAI معه.


كيف تعمل صفحات Cloudflare Challenge

  1. يطلب المستخدم صفحة محمية بواسطة Cloudflare
  2. تقوم Cloudflare بتقييم إشارات المخاطر (سمعة IP، والعناوين، وبصمة TLS)
  3. إذا تم وضع علامة عليه، فسيقوم Cloudflare بإرجاع 403 أو 503 مع صفحة تحدي JavaScript
  4. تقوم صفحة التحدي بإجراء عمليات فحص للمتصفح وقد تقدم أداة Turnstile
  5. عند النجاح، يقوم Cloudflare بتعيين cf_clearance وإعادة التوجيه إلى عنوان URL الأصلي
  6. تمر الطلبات اللاحقة مع ملف تعريف الارتباط دون أي اعتراض

ملف تعريف الارتباط cf_clearance

الملكية التفاصيل
الاسم cf_clearance
المجال نطاق الموقع المستهدف (على سبيل المثال، .example.com)
المسار /
مدى الحياة عادة من 30 دقيقة إلى 24 ساعة
المتشعب فقط نعم
آمن نعم (HTTPS فقط)
SameSite لا شيء

يرتبط ملف تعريف الارتباط بعدة عوامل:

  • عنوان IP — عادةً ما يفشل استخدام ملف تعريف الارتباط من عنوان IP مختلف
  • وكيل المستخدم — يجب أن يتطابق مع UA المستخدم أثناء حل التحدي
  • بصمة TLS — ترتبط بعض التكوينات بـ TLS ClientHello

أنواع التحدي

يقدم Cloudflare مستويات تحدي مختلفة:

التحدي رمز الاستجابة تفاعل المستخدم الوصف
تحدي JavaScript 503 لا شيء تنفيذ JavaScript فقط
التحدي المدار 403 ربما يقرر Cloudflare - قد يظهر Turnstile أو يمر بصمت
التحدي التفاعلي 403 نعم يُظهر دائمًا عنصر واجهة المستخدم Turnstile

CaptchaAI يحل جميع الأنواع الثلاثة من خلال حل Cloudflare Challenge.


الحل باستخدام CaptchaAI

بايثون

import requests
import time

API_KEY = "YOUR_API_KEY"
TARGET_URL = "https://example.com/protected-page"

# Submit Cloudflare Challenge task
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "turnstile",
    "sitekey": "0x0000000000000000000000",  # may be generic for CF challenge
    "pageurl": TARGET_URL,
    "json": "1",
}).json()

if resp["status"] != 1:
    raise Exception(f"Submit error: {resp['request']}")

task_id = resp["request"]
print(f"Task ID: {task_id}")

# Poll for result
for _ in range(30):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY, "action": "get", "id": task_id, "json": "1"
    }).json()

    if result["status"] == 1:
        token = result["request"]
        print(f"Token received: {token[:50]}...")
        break
    if result["request"] != "CAPCHA_NOT_READY":
        raise Exception(f"Error: {result['request']}")

JavaScript

const axios = require('axios');

const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://example.com/protected-page';

const submit = await axios.post('https://ocr.captchaai.com/in.php', null, {
  params: {
    key: API_KEY,
    method: 'turnstile',
    sitekey: '0x0000000000000000000000',
    pageurl: TARGET_URL,
    json: 1,
  }
});
const taskId = submit.data.request;

// Poll
let token = null;
for (let i = 0; i < 30; i++) {
  await new Promise(r => setTimeout(r, 5000));
  const poll = await axios.get('https://ocr.captchaai.com/res.php', {
    params: { key: API_KEY, action: 'get', id: taskId, json: 1 }
  });
  if (poll.data.status === 1) {
    token = poll.data.request;
    break;
  }
}
console.log(`Token: ${token.substring(0, 50)}...`);

باستخدام الرمز المميز الذي تم حله

بعد الحل، أدخل الرمز المميز في صفحة التحدي للحصول على cf_clearance:

# With Selenium
from selenium import webdriver

driver = webdriver.Chrome()
driver.get(TARGET_URL)  # Load the challenge page

# Inject token into Turnstile response field
driver.execute_script("""
    const input = document.querySelector('input[name="cf-turnstile-response"]');
    if (input) input.value = arguments[0];

    // Trigger form submit or callback
    const form = document.querySelector('form');
    if (form) form.submit();
""", token)

# Wait for redirect and extract cookies
import time
time.sleep(3)
cookies = driver.get_cookies()
cf_clearance = next(
    (c for c in cookies if c['name'] == 'cf_clearance'), None
)
if cf_clearance:
    print(f"cf_clearance: {cf_clearance['value'][:30]}...")

إعادة استخدام ملف تعريف الارتباط

session = requests.Session()
session.cookies.set("cf_clearance", cf_clearance["value"], domain=".example.com")
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
})

# Now access protected pages
resp = session.get("https://example.com/api/data")
print(resp.status_code)  # 200

عمر ملفات تعريف الارتباط وتحديثها

تنتهي صلاحية ملف تعريف الارتباط cf_clearance. خطة إعادة الحل:

import datetime

def is_cookie_valid(cookie):
    if not cookie:
        return False
    expiry = cookie.get("expiry", 0)
    return datetime.datetime.now().timestamp() < expiry - 60  # 60s buffer

def get_or_refresh_clearance(driver, target_url, solve_func):
    cookies = driver.get_cookies()
    cf = next((c for c in cookies if c["name"] == "cf_clearance"), None)
    if is_cookie_valid(cf):
        return cf["value"]

    # Re-solve
    token = solve_func(target_url)
    # ... inject and extract new cookie

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

مشكلة السبب إصلاح
تم رفض ملف تعريف الارتباط بعد الحل عدم تطابق IP استخدم نفس الوكيل للحل والطلبات
تنتهي صلاحية ملف تعريف الارتباط بسرعة TTL قصير تم ضبطه بواسطة الموقع إعادة الحل قبل انتهاء الصلاحية؛ تحقق من حقل expiry
403 على الرغم من ملف تعريف الارتباط الصالح عدم تطابق وكيل المستخدم مطابقة UA بين جلسات الحل والطلب
صفحة التحدي لا يتم تحميلها تم تعطيل الJavaScript استخدام متصفح كامل (Selenium، Puppeteer)

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

هل يمكنني مشاركة cf_clearance بين الأجهزة المختلفة؟

فقط إذا كانوا يتشاركون نفس عنوان IP وتطابقت مع سلسلة وكيل المستخدم. غالبًا ما تربط Cloudflare ملف تعريف الارتباط بعنوان IP الأصلي.

كم من الوقت يستمر cf_clearance؟

عادة من 30 دقيقة إلى 24 ساعة، اعتمادًا على تكوين Cloudflare الخاص بمالك الموقع.


حل صفحات Cloudflare Challenge باستخدام CaptchaAI

احصل على مفتاح API الخاص بك علىcaptchaai.com.


أدلة ذات صلة

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