فهم كيفية اكتشاف المواقع للأدوات الآلية يساعد فرق ضمان الجودة والباحثين على بناء سيارات تجريف موثوقة داخل الصلاحيات الممنوحة لهم. يغطي هذا الدليل الآليات التقنية وراء مشغّلات 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 من:
- تحدي JavaScript - يقوم بتشغيل اختبارات المتصفح في صفحة بينية
- التحدي المُدار - يعرض أداة Turnstile لحركة المرور على الحدود
- الحظر - يرفض عناوين IP الضارة المعروفة
- سمعة 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. تفتقر المتصفحات الآلية إلى أنماط التفاعل العضوية للمستخدمين الحقيقيين.