المقارنات

Cloudflare Bot Management مقابل Turnstile: أي حماية تواجه أتمتتك؟

عندما يتوقّف سكربت الأتمتة أمام صفحة من Cloudflare، فالسؤال الأول عمليّ: هل أواجه Bot Management أم Turnstile؟ الفرق يحدّد الحل بالكامل، ولذلك يبدأ هذا الدليل من التمييز بينهما قبل أي كود. باختصار:

  • Bot Management — دفاع على مستوى الشبكة يقيّم كل طلب، ويأتي ضمن خطة Cloudflare للمؤسسات.
  • Turnstile — أداة CAPTCHA مجانية ومستقلة تُضمَّن في صفحة واحدة للتحقق من المستخدم.
  • CaptchaAI — يعالج مكوّن CAPTCHA في الحالتين، رموز Turnstile وصفحات Cloudflare Challenge، بينما يبقى الحظر الشبكي مسؤولية بيئتك.

الفرق في سطر واحد

Bot Management يحمي النطاق كله ويمنح كل طلب درجة من 1 إلى 99، بينما Turnstile يتحقق من إجراء واحد ويعطي نتيجة نجاح أو فشل. يلخّص الجدول ما يهمّ فريق الأتمتة:

الميزة Bot Management Turnstile
ما هو دفاع عن الروبوتات للمؤسسات أداة CAPTCHA مجانية
التسعير ضمن خطة المؤسسات مجاني لكل الخطط
النشر على مستوى الشبكة أداة تُضمَّن في الصفحة
يتطلب Cloudflare DNS نعم لا
التحدي المرئي أحيانًا نادرًا
نطاق الكشف كل الطلبات إلى النطاق إجراء صفحة محدد
درجة الروبوت 1–99 لكل طلب نجاح أو فشل
تكامل WAF نعم لا
تحدي JavaScript صفحة انتظار 5 ثوانٍ إثبات عمل خلفي
تحديد معدل الطلبات نعم لا
دعم CaptchaAI عبر Turnstile وChallenge نعم، بمعدل نجاح مرتفع

كيف تعرف أيّهما تواجه؟

قبل كتابة أي كود حل، حدّد نوع الحماية من إشارات الاستجابة؛ فهذه أسرع طريقة لتوفير الوقت وتفادي استهداف الحل الخاطئ:

العلامة التي تراها المنتج المرجّح الدليل في الاستجابة
صفحة "التحقق من متصفحك" 5 ثوانٍ Bot Management، تحدي JS cf-chl-bypass وjschl_vc
أداة Turnstile داخل نموذج Turnstile مستقلة الفئة cf-turnstile
خطأ 403 مع صفحة خطأ Cloudflare Bot Management، حظر صريح ترويسة cf-ray
مربّع اختيار على صفحة Cloudflare التحدي المُدار النطاق challenges.cloudflare.com
لا تحدي ظاهر وملفات CF مضبوطة Bot Management، مرور ناجح كوكيز cf_clearance

Cloudflare Bot Management: دفاع على مستوى الشبكة

Bot Management جزء من خطة Cloudflare للمؤسسات، ويعمل على مستوى الشبكة: كل طلب يُقيَّم قبل بلوغ الخادم الأصلي.

ما تواجهه الأتمتة

قد ترى الطلبات الآلية أحد أربعة مسارات:

  • حظر مباشر (403) — درجة منخفضة جدًا تحظرها قاعدة WAF.
  • صفحة تحدي JavaScript — "التحقق من متصفحك" لمدة 5 ثوانٍ.
  • تحدٍّ مُدار — أداة Turnstile أو تحدي JS تكيُّفيًا.
  • مرور غير مرئي — درجة مرتفعة تكفي للسماح بالطلب.

مكوّنات Bot Management

وخلف هذه المسارات مكوّنات متكاملة:

المكوّن الغرض
درجة الروبوت تقييم بتعلُّم الآلة لكل طلب
التحدي المُدار يعرض تحدي JS أو Turnstile تكيُّفيًا
Super Bot Fight Mode نسخة مبسّطة في خطط Cloudflare المدفوعة دون المؤسسات
تحليلات الروبوت لوحة تُظهر حركة البشر مقابل الروبوتات
قواعد WAF المخصصة قواعد تعتمد على عتبات الدرجة
تحديد معدل الطلبات حدود لكل IP أو جلسة
كشف JavaScript كشف المتصفح مقطوع الرأس والأدوات

كيف يعمل Bot Management

يمرّ كل طلب عبر إشارات مجتمعة تُنتج درجة تحدّد معاملته:

Request arrives at Cloudflare edge
    ↓
Bot Management engine evaluates:
  ├─ Machine learning model (behavioral fingerprint)
  ├─ Heuristics (known bot patterns)
  ├─ JavaScript fingerprinting (if JS challenge triggered)
  ├─ JA3/JA4 TLS fingerprint
  ├─ HTTP header analysis
  └─ IP reputation (Cloudflare sees ~20% of internet traffic)
    ↓
Bot score assigned: 1 (definitely bot) to 99 (definitely human)
    ↓
WAF rules act on the score:

  - Score > 50 → Allow
  - Score 30-50 → Managed challenge
  - Score < 30 → Block or JavaScript challenge

Cloudflare Turnstile: أداة CAPTCHA مجانية

Turnstile أداة CAPTCHA مستقلة تحل محل الاختبارات التقليدية. تعمل بمعزل عن Bot Management وعلى أي موقع، لا على مواقع Cloudflare وحدها.

أوضاع أداة Turnstile

تدعم الأداة ثلاثة أوضاع بحسب التفاعل المطلوب:

الوضع السلوك حالة الاستخدام
مُدار يوازن بين المرئي والتفاعلي الافتراضي الموصى به
غير تفاعلي غير مرئي، إثبات عمل فقط نماذج منخفضة الاحتكاك
غير مرئي يعمل عند تحميل الصفحة تحقق في الخلفية

كيف يعمل Turnstile

تُجري الأداة فحوصًا خلفية بلا تفاعل من المستخدم غالبًا، ثم تُنتج رمزًا يُرسَل مع النموذج:

Page loads Turnstile widget
    ↓
Widget runs background checks:
  ├─ Browser proof-of-work challenge (cryptographic puzzle)
  ├─ Private Access Token (Apple devices)
  ├─ Browser environment validation
  └─ Cloudflare threat intelligence
    ↓
Result: cf-turnstile-response token generated
    ↓
Token submitted with form data
    ↓
Server validates token via Cloudflare API (siteverify)

دمج Turnstile في الصفحة

الدمج الأساسي سطران: عنصر الحاوية وسكربت التحميل.

<!-- Simple Turnstile integration -->
<div class="cf-turnstile" data-sitekey="0x4AAAAAAAC3DHQhMMQ_Rxrg"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

سيناريو من السوق: متجر خليجي تحت الحماية

تخيّل فريق أتمتة يراقب توافر المنتجات على متجر تجزئة خليجي كبير يعتمد Cloudflare. في صفحات التصفّح يمرّ الزحف بلا احتكاك لأن درجة الروبوت مرتفعة، لكن عند إتمام الشراء أو إنشاء الحساب تظهر أداة Turnstile فيتوقّف السكربت. التشخيص الصحيح يوفّر أيامًا من العمل:

  • إن ظهرت أداة Turnstile على نقطة واحدة، فالمشكلة ليست شبكية؛ وحلّ الرمز عبر CaptchaAI يكفي دون بنية وكلاء معقّدة.
  • إن ظهرت صفحة "التحقق من متصفحك" على كل طلب، فتلك إشارة Bot Management وتتطلب معالجة أوسع.
  • أسعار CaptchaAI بالدولار الأمريكي وتبدأ من خطة BASIC بسعر 15 دولارًا شهريًا مع 5 خيوط متزامنة، فتجربة السيناريو منخفضة التكلفة قبل الإنتاج.

حلّ التحديات: Turnstile مقابل Bot Management

يختلف أسلوب الحل جذريًا. Turnstile حالة مباشرة تُرسِل فيها مفتاح الموقع وتنتظر الرمز، أما Bot Management فطبقات متعددة يظهر مكوّن CAPTCHA فيها — إن وُجد — كتحدٍّ مُدار بهيئة Turnstile.

حل Turnstile مباشرةً

يُحلّ Turnstile عبر طريقة turnstile بمعدل نجاح مرتفع؛ أرسِل الطلب ثم استطلِع النتيجة دوريًا حتى يجهز الرمز:

import requests
import time

API_KEY = "YOUR_API_KEY"

submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "turnstile",
    "sitekey": "0x4AAAAAAAC3DHQhMMQ_Rxrg",
    "pageurl": "https://example.com/signup",
    "json": 1,
})

task_id = submit.json()["request"]

for _ in range(60):
    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.get("status") == 1:
        token = result["request"]
        print(f"Turnstile token: {token[:50]}...")
        break

التعامل مع تحديات Bot Management

افحص الاستجابة أولًا: الحظر الصريح يحتاج ضبط الترويسات والوكيل، بينما التحدي الذي يحوي أداة Turnstile يُحلّ مباشرة:

# Bot Management flow for automation:

# 1. Make initial request
response = requests.get("https://protected-site.com/api/data")

# 2. Check if challenged
if response.status_code == 403:
    # Hard block — need to adjust headers, proxy, or approach
    pass
elif "challenge" in response.text.lower() or response.status_code == 503:
    # JavaScript challenge or managed challenge
    # If it contains a Turnstile widget, solve it:
    if "cf-turnstile" in response.text or "challenges.cloudflare.com" in response.text:
        # Extract sitekey and solve via CaptchaAI
        sitekey = extract_turnstile_sitekey(response.text)
        token = solve_turnstile(sitekey, "https://protected-site.com/api/data")

صفحة Cloudflare Challenge وليست Turnstile

صفحة "التحقق من متصفحك" ليست Turnstile بل تحدي JavaScript، ويعالجها CaptchaAI عبر طريقة cloudflare_challenge:

submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "cloudflare_challenge",
    "sitekey": "managed",
    "pageurl": "https://protected-site.com/login",
    "json": 1,
})

أتمتة كشف نوع الحماية

تؤتمت هذه الدالة جدول التمييز السابق، فتصنّف الرابط إلى حظر صريح أو تحدي Bot Management أو أداة Turnstile أو مرور ناجح:

import requests

def identify_cloudflare_protection(url):
    """Identify which Cloudflare protection a URL uses."""
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                      "AppleWebKit/537.36 Chrome/120.0.0.0",
    }

    response = requests.get(url, headers=headers, timeout=15, allow_redirects=False)
    html = response.text

    result = {
        "cloudflare_protected": "cf-ray" in response.headers.get("cf-ray", "")
                                or "cloudflare" in response.headers.get("server", "").lower(),
        "bot_management_challenge": False,
        "turnstile_widget": False,
        "hard_block": False,
        "passed": False,
    }

    if response.status_code == 403:
        result["hard_block"] = True
    elif response.status_code == 503 and "jschl" in html:
        result["bot_management_challenge"] = True
    elif "cf-turnstile" in html:
        result["turnstile_widget"] = True
    elif response.status_code == 200:
        result["passed"] = True

    return result

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

كيف أتأكّد أنّ الموقع محمي بـ Cloudflare أصلًا؟

ابحث عن ترويسة cf-ray في الاستجابة أو قيمة cloudflare داخل ترويسة server. وجودهما يؤكّد المرور عبر Cloudflare، لكنه لا يحدّد الطبقة المفعّلة؛ ذلك يتطلّب فحص محتوى الصفحة كما في جدول التمييز أعلاه.

هل يكفي حل رمز Turnstile مع موقع يستخدم Bot Management؟

ليس دائمًا. إن كان التحدي أداة Turnstile مُدارة فحلّ الرمز يكفي غالبًا. أما إن سجّل الطلب درجة منخفضة على مستوى الشبكة، فقد يُرفض قبل ظهور أي أداة، وعندها تحتاج ترويسات صحيحة وبصمة TLS ووكلاء إلى جانب الرمز.

لماذا يمرّ السكربت أحيانًا ويُحظر أحيانًا على النطاق نفسه؟

لأن Bot Management يمنح كل طلب درجة ديناميكية من 1 إلى 99 بناءً على سمعة عنوان IP والبصمة ونمط الطلبات. أي تغيّر في العنوان أو الترويسات أو معدّل الطلبات يرفع الدرجة أو يخفضها، فيختلف القرار بين تحدٍّ وحظر ومرور.

هل Turnstile وCloudflare Challenge نفس الشيء في CaptchaAI؟

لا. يُطلب رمز Turnstile بطريقة turnstile مع مفتاح الموقع، بينما تُعالَج صفحة "التحقق من متصفحك" بطريقة cloudflare_challenge. اختيار الطريقة الخاطئة يعني فشل الحل، لذا يبدأ الأمر دائمًا بتحديد نوع التحدي.

ما الذي يبقى خارج نطاق CaptchaAI مع Bot Management؟

يتعامل CaptchaAI مع مكوّن CAPTCHA — رموز Turnstile وصفحات Cloudflare Challenge — بمعدل نجاح مرتفع. أما الحظر الصريح على مستوى الشبكة، أي استجابات 403، فيتطلّب بنية من ترويسات ووكلاء وإدارة جلسات، وهي مسؤولية بيئتك.


الخلاصة

Cloudflare Bot Management دفاع مؤسسي على مستوى الشبكة يقيّم كل طلب بدرجة مبنية على تعلُّم الآلة وقواعد WAF وتحليل السلوك، وCloudflare Turnstile أداة CAPTCHA مجانية تتحقق من المستخدم عبر إثبات عمل المتصفح. للأتمتة، يُحلّ Turnstile مباشرةً عبر CaptchaAI بمعدل نجاح مرتفع، بينما تتطلّب تحديات Bot Management محاكاة متصفح سليمة إلى جانب CaptchaAI لمكوّن CAPTCHA. والقاعدة العملية واحدة: ابدأ دائمًا بتحديد نوع الحماية قبل كتابة أي كود حل.

مقالات ذات صلة

أدلة ذات صلة

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