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

Cloudflare Challenge مقابل Turnstile: كيفية اكتشاف أي واحد لديك

يعد استخدام طريقة CaptchaAI الخاطئة لحماية Cloudflare أحد الأخطاء الأكثر شيوعًا. يبدو Cloudflare Challenge وCloudflare Turnstile متشابهين ولكنهما مختلفان بشكل أساسي. إن إرسال turnstile عندما يستخدم الموقع تحدي الصفحة الكاملة - أو العكس - سيفشل دائمًا.


نوعي الحماية Cloudflare

ميزة Cloudflare Challenge Cloudflare Turnstile
النوع إعلان بيني بملء الصفحة القطعة المدمجة
المظهر حظر الصفحة بأكملها، "التحقق من المتصفح الخاص بك" مربع اختيار صغير أو عنصر واجهة مستخدم غير مرئي داخل النموذج
طريقة CaptchaAI cloudflare_challenge turnstile
المرتجعات ملف تعريف الارتباط cf_clearance سلسلة رمزية
يتطلب الوكيل نعم (إلزامي) موصى به
يتطلب وكيل المستخدم نعم (إلزامي) لا

كيفية التعرف على Cloudflare Challenge

Cloudflare Challenge عبارة عن صفحة بينية بملء الصفحة تمنع الوصول إلى المحتوى. تراه قبل تحميل الصفحة الفعلية.

علامات بصرية:

  • رسالة "يتم التحقق من متصفحك قبل الوصول إلى...".
  • أداة تحميل Cloudflare
  • يحتوي عنوان الصفحة على "لحظة واحدة فقط..."
  • يظل عنوان URL كما هو ولكن المحتوى عبارة عن صفحة Cloudflare

علامات HTML:

<!-- Cloudflare Challenge page indicators -->
<title>Just a moment...</title>
<div id="challenge-running">...</div>
<div class="cf-browser-verification">...</div>

الكشف البرمجي:

import requests

resp = requests.get("https://example.com")

is_cf_challenge = (
    resp.status_code == 403 and
    "Just a moment" in resp.text or
    "cf-browser-verification" in resp.text or
    "challenge-platform" in resp.text
)

if is_cf_challenge:
    print("Cloudflare Challenge detected — use method: cloudflare_challenge")

كيفية التعرف على Cloudflare Turnstile

يعد Turnstile أداة مضمنة داخل صفحة تم تحميلها بالفعل. ويظهر ضمن النماذج، مثل reCAPTCHA.

علامات بصرية:

  • عنصر واجهة المستخدم Cloudflare الصغير داخل النموذج (نمط مربع الاختيار)
  • بقية محتوى الصفحة مرئية
  • القطعة تقول "التحقق من أنك إنسان"

علامات HTML:

<!-- Turnstile widget indicators -->
<div class="cf-turnstile" data-sitekey="0x4AAAAAAADnPIDROz1234"></div>

<!-- Or loaded via JavaScript -->
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js"></script>

الكشف البرمجي:

import requests

resp = requests.get("https://example.com/login")

is_turnstile = (
    "cf-turnstile" in resp.text or
    "challenges.cloudflare.com/turnstile" in resp.text
)

if is_turnstile:
    # Extract sitekey
    if 'data-sitekey="' in resp.text:
        start = resp.text.index('data-sitekey="') + 14
        end = resp.text.index('"', start)
        sitekey = resp.text[start:end]
        print(f"Turnstile detected — sitekey: {sitekey}")
        print("Use method: turnstile")

وظيفة الكشف مجتمعة

def detect_cloudflare_type(url):
    """Detect which Cloudflare protection a URL uses."""
    resp = requests.get(url, allow_redirects=True)

    # Check for full-page Challenge
    if resp.status_code in [403, 503]:
        if any(marker in resp.text for marker in [
            "Just a moment",
            "cf-browser-verification",
            "challenge-platform",
            "challenge-running"
        ]):
            return {"type": "cloudflare_challenge", "method": "cloudflare_challenge"}

    # Check for embedded Turnstile
    if "cf-turnstile" in resp.text or "challenges.cloudflare.com/turnstile" in resp.text:
        sitekey = None
        if 'data-sitekey="' in resp.text:
            start = resp.text.index('data-sitekey="') + 14
            end = resp.text.index('"', start)
            sitekey = resp.text[start:end]
        return {"type": "turnstile", "method": "turnstile", "sitekey": sitekey}

    return {"type": "none", "method": None}


# Usage
result = detect_cloudflare_type("https://example.com")
print(f"Protection: {result['type']}")
print(f"CaptchaAI method: {result['method']}")

حل كل نوع

Cloudflare Challenge:

data = {
    "key": "YOUR_API_KEY",
    "method": "cloudflare_challenge",
    "pageurl": "https://example.com",
    "proxy": "host:port:user:pass",   # MANDATORY
    "proxytype": "HTTP",               # MANDATORY
    "userAgent": "Mozilla/5.0 ...",    # MANDATORY
    "json": 1
}
# Returns cf_clearance cookie — set it in your session

Cloudflare Turnstile:

data = {
    "key": "YOUR_API_KEY",
    "method": "turnstile",
    "sitekey": "0x4AAAAAAADnPIDROz1234",
    "pageurl": "https://example.com/login",
    "json": 1
}
# Returns a token — inject into cf-turnstile-response field

الأخطاء الشائعة

خطأ النتيجة إصلاح
استخدام turnstile لصفحة التحدي ERROR_CAPTCHA_UNSOLVABLE قم بالتبديل إلى cloudflare_challenge
استخدام cloudflare_challenge للباب الدوار صيغة الرد خاطئة قم بالتبديل إلى turnstile
لا يوجد وكيل للتحدي ERROR_PROXY_NOT_AUTHORIZED إضافة وكيل — إنه إلزامي للتحدي
لا يوجد مفتاح موقع لـ Turnstile ERROR_BAD_PARAMETERS استخراج مفتاح الموقع من صفحة HTML

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

هل يمكن للموقع استخدام كلا من Challenge و Turnstile؟

نعم. قد يستخدم الموقع Cloudflare Challenge عند الوصول الأولي وTurnstile في نموذج تسجيل الدخول الخاص به. تحتاج إلى حل كلاهما بالتسلسل.

لماذا يتطلب التحدي وجود وكيل ولكن Turnstile لا يتطلب ذلك؟

يقوم التحدي بإرجاع ملف تعريف الارتباط cf_clearance المرتبط بعنوان IP. يجب على CaptchaAI استخدام الوكيل الخاص بك لإنشاء ملف تعريف ارتباط يعمل من عنوان IP الخاص بك. يقوم Turnstile بإرجاع رمز مميز مستقل عن IP.

ماذا لو أعاد الاكتشاف "لا شيء" ولكنني مازلت أرى Cloudflare؟

يتم تشغيل بعض إجراءات حماية Cloudflare فقط عند إجراءات محددة (طلبات POST، أو استدعاءات واجهة برمجة التطبيقات) أو لوكلاء مستخدمين محددين. حاول الوصول إلى عنوان URL باستخدام وكيل مستخدم يشبه الروبوت لبدء التحدي.


حل اختبارات CAPTCHA الخاصة بـ Cloudflare باستخدام CaptchaAI

التعامل مع كل من التحدي وTurnstile فيcaptchaai.com.


أدلة ذات صلة

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