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

كيف يعمل اكتشاف CAPTCHA في تجريف الويب

فهم كيفية اكتشاف المواقع للأدوات الآلية يساعد فرق ضمان الجودة والباحثين على بناء سيارات تجريف موثوقة داخل الصلاحيات الممنوحة لهم. يغطي هذا الدليل الآليات التقنية وراء مشغّلات CAPTCHA — وكيفية التعامل معها باستخدام CaptchaAI.

طبقات الكشف

تستخدم أنظمة مكافحة الروبوتات الحديثة طبقات كشف متعددة. يظهر اختبار CAPTCHA عندما تتجمع إشارات كافية للإشارة إلى حركة المرور الآلية.

الطبقة 1: الكشف القائم على IP

المشغل الأبسط والأكثر شيوعًا:

إشارة العتبة النتيجة
الطلبات في الدقيقة > 20-30 من IP واحد حد السعر أو CAPTCHA
الطلبات في الساعة > 200-500 من IP واحد كتلة مؤقتة
سمعة عنوان IP نطاق مركز البيانات المعروف اختبار CAPTCHA فوري
عدم التطابق الجغرافي تم اكتشاف VPN/proxy التدقيق المرتفع

التخفيف: يقوم دوران الوكيل بتوزيع الطلبات عبر عناوين IP. يرىتناوب الوكيل لتجريد اختبار CAPTCHA.

الطبقة الثانية: تحليل رأس HTTP

تقوم الخوادم بفحص رؤوس الطلب بحثًا عن مؤشرات الروبوت:

# Bot-like request (triggers CAPTCHA)
GET /page HTTP/1.1
User-Agent: python-requests/2.28.0

# Human-like request (less likely to trigger)
GET /page HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Referer: https://www.google.com/

الرؤوس الرئيسية التي تؤدي إلى الكشف:

  • User-Agent - يتم وضع علامة على UAs للمكتبة الافتراضية على الفور
  • Accept-Language - مفقود = بوت
  • Referer - لا يوجد مُحيل على الصفحات العميقة = مشبوه
  • Cookie - لا توجد ملفات تعريف ارتباط للجلسة = زائر جديد /bot

الطبقة 3: بصمات JavaScript

تقوم خدمات مكافحة الروبوتات بتشغيل JavaScript لتكوين ملف تعريف للمتصفح:

// What fingerprinting scripts check:
navigator.webdriver        // true in automated browsers
navigator.plugins.length   // 0 in headless
window.chrome              // undefined in non-Chrome
navigator.languages        // unusual in headless
WebGL renderer             // "SwiftShader" = headless
canvas fingerprint         // consistent across headless instances

يستخدم reCAPTCHA v3 هذه الإشارات لحساب درجة الثقة (0.0 = روبوت، 1.0 = إنسان). تؤدي الدرجات المنخفضة إلى ظهور اختبارات CAPTCHA مرئية.

الطبقة الرابعة: التحليل السلوكي

أنظمة متقدمة تتتبع سلوك المستخدم مع مرور الوقت:

السلوك البشري سلوك الروبوت
أنماط التنقل العشوائية الوصول التسلسلي للصفحة
وقت متغير على الصفحة الأحمال السريعة المستمرة
حركة الماوس والتمرير لا توجد أحداث mouse/scroll
انقر فوق الاختلافات نقرات الإحداثيات الدقيقة
ابحث ثم تصفح الوصول المباشر إلى URL

الطبقة 5: تتبع ملفات تعريف الارتباط والجلسة

تزرع المواقع ملفات تعريف الارتباط لتحديد الزوار العائدين:

# First visit — site sets tracking cookies
# Second visit — site checks:
# - Are the cookie values consistent?
# - Was the cookie modified?
# - Is this a fresh session?

تؤدي ملفات تعريف الارتباط المفقودة أو غير المتسقة إلى رفع درجة الشك.

كيف يعمل تسجيل reCAPTCHA v3

يعمل reCAPTCHA v3 بشكل غير مرئي ويعين النتيجة:

نطاق النتيجة التصنيف العمل
0.7 - 1.0 الإنسان على الأرجح السماح من خلال
0.3 - 0.7 غير مؤكد قد تظهر كلمة التحقق
0.0 - 0.3 بوت محتمل حظر أو اختبار CAPTCHA

المدخلات إلى النتيجة:

  • بيئة JavaScript للمتصفح
  • أنماط التفاعل Mouse/keyboard
  • بيانات ملفات تعريف الارتباط التاريخية من Google
  • سمعة عنوان IP
  • وقت التفاعل مع الصفحة

عندما يقوم reCAPTCHA v3 بتعيين درجة منخفضة، يمكن للموقع اختيار تقديم تحدي reCAPTCHA v2. CaptchaAI يحل كلا الإصدارين.

كيف يعمل الكشف عن Cloudflare

تتحقق إدارة الروبوتات في Cloudflare من:

  1. تحدي JavaScript - يقوم بتشغيل اختبارات المتصفح في صفحة بينية
  2. التحدي المُدار - يعرض أداة Turnstile لحركة المرور على الحدود
  3. الحظر - يرفض عناوين IP الضارة المعروفة
  4. سمعة IP — تشهد Cloudflare ما يقرب من 20% من حركة المرور على الإنترنت، مما يؤدي إلى إنشاء ملفات تعريف IP ضخمة

يعمل CaptchaAI على حل كل من أدوات Turnstile (method=turnstile) وصفحات التحدي الكاملة (method=cloudflare_challenge).

التعامل مع الكشف باستخدام CaptchaAI

عندما يواجه مكشطك اختبار CAPTCHA، فإن CaptchaAI يحل المشكلة بغض النظر عن السبب الذي أدى إلى ظهوره:

import requests
import time

API_KEY = "YOUR_API_KEY"

def handle_captcha(captcha_type, site_key, page_url, **kwargs):
    params = {
        "key": API_KEY,
        "pageurl": page_url
    }

    if captcha_type == "recaptcha_v2":
        params["method"] = "userrecaptcha"
        params["googlekey"] = site_key
    elif captcha_type == "recaptcha_v3":
        params["method"] = "userrecaptcha"
        params["googlekey"] = site_key
        params["version"] = "v3"
        params["action"] = kwargs.get("action", "verify")
    elif captcha_type == "turnstile":
        params["method"] = "turnstile"
        params["sitekey"] = site_key
    elif captcha_type == "cloudflare":
        params["method"] = "cloudflare_challenge"
        params["proxy"] = kwargs["proxy"]
        params["proxytype"] = "HTTP"

    resp = requests.get("https://ocr.captchaai.com/in.php", params=params)
    task_id = resp.text.split("|")[1]

    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
        })
        if result.text == "CAPCHA_NOT_READY": continue
        if result.text.startswith("OK|"): return result.text.split("|")[1]
        raise Exception(result.text)

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

هل يمكنني تجنب جميع اختبارات CAPTCHA باستخدام تقنيات التخفي؟

نعم، عند الكميات المنخفضة - تتجنب الترويسات الخفية والوكلاء وأنماط السلوك الواقعية معظم المحفزات. وعلى نطاق واسع، تصبح اختبارات CAPTCHA أمرًا لا مفر منه. ويتعامل معها CaptchaAI عند ظهورها.

لماذا أحصل على اختبار CAPTCHA من خلال الوكلاء السكنيين؟

عناوين IP السكنية ليست محصنة. لا يزال بإمكان معدلات الطلب المرتفعة أو ملفات تعريف الارتباط المفقودة أو الرؤوس الشبيهة بالروبوتات تشغيل اختبارات CAPTCHA. تعمل الوكلاء على تقليل التردد ولكن لا تلغي الكشف.

كيف يعرف reCAPTCHA أنني روبوت إذا كنت أستخدم متصفحًا حقيقيًا؟

يتحقق reCAPTCHA من العشرات من الإشارات بما في ذلك سجل ملفات تعريف الارتباط وأنماط حركة الماوس ونشاط حساب Google. تفتقر المتصفحات الآلية إلى أنماط التفاعل العضوية للمستخدمين الحقيقيين.

أدلة ذات صلة

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