كيف يعمل تسجيل reCAPTCHA v3: نظرة تقنية من الداخل
إذا كنت مهندس أتمتة أو باحث في مجال مكافحة البوتات، فمن المرجح أنك واجهت reCAPTCHA v3 — نظام التسجيل غير المرئي الذي تبنته أكثر من 4.5 مليون موقع إلكتروني حول العالم. على عكس الإصدارات السابقة التي كانت تعرض صوراً لاختيار إشارات المرور أو معابر المشاة، يعمل reCAPTCHA v3 في الخلفية تماماً ويعيد نتيجة رقمية واحدة: رقم بين 0.0 و1.0 يمثل احتمالية أن المستخدم بشري. السؤال الذي يطرحه كثير من المهندسين هو: كيف يعمل نظام تسجيل reCAPTCHA v3 بالضبط، ولماذا تنهار النتائج فجأة عند استخدام بروكسي معين؟
الإجابة تكمن في أن Google لا يعتمد على إشارة واحدة. بل يدمج عشرات الإشارات السلوكية والشبكية في نموذج تعلم آلي واحد. وعندما تكون إشارة واحدة مفقودة أو مشبوهة — مثل عنوان IP من نطاق مراكز البيانات — يمكن أن تنهار النتيجة بأكملها بصرف النظر عن مدى "إنسانية" سلوك المتصفح. هذا هو السبب الذي يجعل فهم البنية الداخلية لنظام التسجيل أمراً حاسماً لأي شخص يبني أتمتة شرعية أو يجري اختبارات اختراق مصرّح بها.
نموذج التسجيل: الأرقام والإشارات
النطاق الرقمي والحواصل الإحدى عشر
عندما تستدعي grecaptcha.execute(siteKey, {action: 'login'})، يعيد النظام رمزاً (token) صالحاً لمدة دقيقتين. لكن القيمة الحقيقية تكمن في ما يحدث جانب الخادم: عند إرسال الرمز إلى siteverify، يعيد Google نتيجة (score) بين 0.0 و1.0. هذه النتيجة مقسّمة فعلياً إلى أحد عشر حاصلاً (bucket) منفصلاً: 0.0، 0.1، 0.2، ... حتى 1.0. لا توجد قيم عشرية وسطية — النموذج يقرّب إلى أقرب عُشر.
المواقع تختار عتباتها الخاصة، لكن الأنماط الشائعة في 2026 هي:
| النتيجة (recaptcha v3 score) | التصنيف النموذجي | الإجراء المعتاد |
|---|---|---|
| 0.0 – 0.2 | بوت شبه مؤكد | حظر فوري |
| 0.3 | مشبوه بشدة | تحدي أو حظر |
| 0.4 – 0.6 | منطقة رمادية | تحدي ثانوي (email verification, 2FA) |
| 0.7 – 0.9 | بشري على الأرجح | سماح |
| 1.0 | بشري موثوق جداً | سماح بدون قيود |
معظم المواقع تضع عتبة الحظر عند recaptcha score 0.3 أو أقل، وعتبة التحدي بين 0.3 و0.6، وعتبة السماح فوق 0.6. بعض المواقع المالية حساسة أكثر وقد تطلب نتيجة 0.7 أو أعلى للسماح بالمعاملات الحساسة.
الإشارات التي يدمجها Google
Google لا يفصح عن الوزن الدقيق لكل إشارة، لكن من خلال الهندسة العكسية والملاحظات الميدانية، يمكن تصنيف الإشارات إلى خمس فئات رئيسية:
- تتبع التفاعل: توقيت حركة الماوس، أنماط التمرير (scroll)، سرعة الكتابة على لوحة المفاتيح، والمدة بين النقرات. البوتات النموذجية تتحرك بسرعة ثابتة وخطية، بينما البشر لديهم تقلبات عشوائية.
- قياسات الصفحة (telemetry): مدة بقاء المستخدم على الصفحة قبل الإجراء، عدد الصفحات التي زارها في الجلسة، وما إذا كان قد تفاعل مع عناصر الصفحة (نقرات، تحديد نص، نسخ).
- رسم ملفات تعريف الارتباط لـ Google: إذا كان لديك حساب Google مسجل الدخول أو ملف تعريف ارتباط _ga قديم، فإن Google يربط نشاطك عبر المواقع. هذا يعني أن المستخدم الذي تصفح Gmail أو YouTube قبل دقائق يحصل على نتيجة أعلى من جلسة جديدة تماماً.
- خصائص المتصفح: بصمة JA3/JA4 لـ TLS (ترتيب التشفيرات والإضافات)، سلسلة user-agent، بصمة Canvas، بصمة WebGL، وخصائص JavaScript القابلة للكشف مثل
navigator.webdriverوnavigator.plugins. المتصفحات التي تعمل بـ Selenium أو Puppeteer بدون تعديل تكشف نفسها فوراً عبرnavigator.webdriver = true. - سمعة عنوان IP: هذا هو العامل الذي يهمنا أكثر من غيره. Google يحافظ على قاعدة بيانات لسمعة عناوين IP تشمل: نوع ASN (مزود سكني مقابل مركز بيانات)، سجل النشاط السابق على هذا IP، وعدد الطلبات الصادرة منه. عناوين IP من مراكز البيانات المعروفة (مثل AWS، DigitalOcean، OVH) تحصل تلقائياً على نتيجة منخفضة — غالباً 0.1 أو أقل — بصرف النظر عن السلوك.
لماذا تنهار النتيجة مع عناوين IP الخاصة بمراكز البيانات
هذه هي النقطة الأكثر إثارة للإحباط للمطورين: يمكنك بناء متصفح رائع يحاكي السلوك البشري بدقة، لكن إذا كان طلبك يأتي من عنوان IP ينتمي إلى مركز بيانات، فإن النتيجة ستنهار. السبب بسيط: Google يعرف أن المستخدمين الحقيقيين لا يتصفحون من خوادم AWS.
عندما يفحص Google عنوان IP الوارد، ينظر إلى ASN (Autonomous System Number). إذا كان ASN مسجلاً لشركة استضافة مثل Amazon (AS14618) أو Hetzner (AS24940)، فإن النموذج يضخّم وزن هذا الإشارة السلبية. في التجارب الميدانية، نفس المتصفح ونفس السلوك يحصلان على:
- 0.1 – 0.2 من عنوان IP في مركز بيانات (حتى مع سلوك بشري مثالي)
- 0.7 – 0.9 من عنوان IP سكني حقيقي (مع نفس السلوك)
هذا الفجوة الكبيرة هي السبب الجوهري الذي يجعل البروكسي السكني (residential proxy) ضرورياً لأي أتمتة شرعية تحتاج إلى اجتياز reCAPTCHA v3. البروكسي السكني يوجّه طلبك عبر عنوان IP مسجّل لمزود خدمة إنترنت منزلي فعلي (ISP)، مما يجعل سمعة IP تبدو طبيعية.
وفقاً لـ وثائق Google الرسمية لـ reCAPTCHA v3، يعتمد النظام على "مجموعة متنوعة من الإشارات" لتقييم الطلبات، ولا يكشف Google عن القائمة الكاملة عمداً لمنع التلاعب. لكن من الواضح أن سمعة IP هي إشارة ذات وزن عالٍ.
التحقق من الرمز جانب الخادم: siteverify
بعد أن يحصل المتصفح على الرمز من grecaptcha.execute()، يرسله الموقع إلى خادمه، ثم يستدعي خادم الموقع نقطة siteverify الخاصة بـ Google. هذه الخطوة حرجة لأنها حيث تتم كل القرارات الفعلية.
طلب التحقق يبدو كالتالي:
POST https://www.google.com/recaptcha/api/siteverify
secret=YOUR_SECRET_KEY
response=TOKEN_FROM_CLIENT
remoteip=USER_IP (optional)
الاستجابة JSON تحتوي على:
success: true/falsescore: 0.0 إلى 1.0 (بخطوات 0.1)action: اسم الإجراء الذي مررته فيgrecaptcha.execute()error-codes: قائمة بأخطاء محتملة
هناك نقطتان حرجتان يجب التحقق منهما جانب الخادم:
- مطابقة الإجراء (action): يجب أن يتطابق
actionفي الاستجابة مع ما تتوقعه. إذا طلبتaction: 'login'ولكن الاستجابة تعيدaction: 'register'، فهذا يعني أن الرمز تم اعتراضه أو إعادة استخدامه من سياق مختلف. - مطابقة اسم المضيف (hostname): الاستجابة تتضمن
hostnameالذي ولّد الرمز. يجب التحقق من أنه يطابق نطاقك. وإلا، يمكن للمهاجم استخدام مفتاح موقع آخر لتمرير التحقق.
عدم التحقق من هاتين النقطتين هو ثغرة أمنية شائعة. وفقاً لـ مبادئ OWASP، يجب دائماً التحقق من سياق الرمز وليس فقط وجوده.
البروكسي السكني مقابل براكسي مراكز البيانات: مقارنة عملية
| المعيار | بروكسي سكني (Residential) | بروكسي مركز بيانات (Datacenter) | بروكسي جوال (Mobile) |
|---|---|---|---|
| نتيجة reCAPTCHA v3 نموذجية | 0.7 – 0.9 | 0.1 – 0.3 | 0.8 – 1.0 |
| سمعة IP | عالية (ISP حقيقي) | منخفضة (ASN معروف) | عالية جداً (شركة اتصالات) |
| السرعة | متوسطة (200-500ms) | سريعة (50-100ms) | متغيرة (300-800ms) |
| التكلفة | متوسطة | منخفضة | مرتفعة |
| الملاءمة لـ reCAPTCHA v3 | ممتازة | ضعيفة | ممتازة لكن مكلفة |
البروكسي الجوال يقدم أعلى نتيجة لأن عناوين IP الجوالية تنتمي إلى شركات اتصالات كبرى، لكن تكلفته أعلى بشكل ملحوظ. البروكسي السكني هو الحل الوسط الأمثل: سمعة IP عالية بما يكفي لاجتياز فحص reCAPTCHA v3، بسعر معقول.
تطبيق عملي: استخدام ProxyHat لاجتياز reCAPTCHA v3
الآن نصل إلى الجزء العملي. إذا كنت تجري اختبار QA مصرّح به أو أتمتة وصول شرعية، فإليك كيفية إعداد ProxyHat مع متصفح حقيقي للحصول على نتيجة reCAPTCHA v3 فوق العتبة.
الخطوة 1: تكوين البروكسي السكني من ProxyHat
ProxyHat يوفر بوابة بروكسي سكني على gate.proxyhat.com. المنفذ الافتراضي لـ HTTP هو 8080، ولـ SOCKS5 هو 1080. يمكنك توجيه البروكسي إلى دولة محددة عبر اسم المستخدم:
# بروكسي سكني أمريكي
http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080
# بروكسي سكني ألماني (برلين)
http://user-country-DE-city-berlin:YOUR_PASSWORD@gate.proxyhat.com:8080
# جلسة ثابتة (sticky session)
http://user-session-abc123:YOUR_PASSWORD@gate.proxyhat.com:8080
يمكنك استكشاف المواقع المتاحة على صفحة المواقع والاطلاع على خطط الأسعار.
الخطوة 2: إعداد متصفح حقيقي مع البروكسي
المفتاح هو استخدام متصفح حقيقي (Chrome أو Firefox) مع تعديلات لتقليل بصمة الأتمتة، وليس مكتبة HTTP بسيطة. إليك مثال Python كامل:
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains
import time
import random
# تكوين ProxyHat السكني
proxy_user = "user-country-US"
proxy_pass = "YOUR_PASSWORD"
proxy_host = "gate.proxyhat.com"
proxy_port = "8080"
proxy_url = f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"
# إعداد Chrome
chrome_options = Options()
chrome_options.add_argument(f"--proxy-server=http://{proxy_host}:{proxy_port}")
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option("useAutomationExtension", False)
driver = webdriver.Chrome(options=chrome_options)
# المصادقة على البروكسي عبر CDP
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {
"Proxy-Authorization": f"Basic {proxy_user}:{proxy_pass}"
})
# الانتقال إلى الصفحة المستهدفة
driver.get("https://example.com/login")
# محاكاة سلوك بشري واقعي
time.sleep(random.uniform(1.5, 3.0)) # انتظار طبيعي
# تمرير تدريجي
driver.execute_script("window.scrollTo({top: 200, behavior: 'smooth'});")
time.sleep(random.uniform(0.5, 1.2))
# حركة الماوس العشوائية
actions = ActionChains(driver)
for _ in range(3):
x = random.randint(50, 400)
y = random.randint(50, 300)
actions.move_by_offset(x, y)
time.sleep(random.uniform(0.2, 0.6))
actions.perform()
# تنفيذ reCAPTCHA v3
token = driver.execute_script("""
return new Promise((resolve, reject) => {
grecaptcha.execute('YOUR_SITE_KEY', {action: 'login'})
.then(token => resolve(token))
.catch(err => reject(err));
});
""")
# التحقق من الرمز جانب الخادم
verify_response = requests.post(
"https://www.google.com/recaptcha/api/siteverify",
data={
"secret": "YOUR_SECRET_KEY",
"response": token
}
)
result = verify_response.json()
print(f"النتيجة: {result.get('score')}")
print(f"الإجراء: {result.get('action')}")
print(f"النجاح: {result.get('success')}")
# التحقق من تطابق الإجراء واسم المضيف
assert result.get("action") == "login", "عدم تطابق الإجراء!"
assert result.get("hostname") == "example.com", "عدم تطابق اسم المضيف!"
driver.quit()
الخطوة 3: لماذا هذا النهج يعمل
هذا النهج يعمل لأنه يعالج جميع الإشارات الخمس التي يدمجها Google:
- سمعة IP: البروكسي السكني من ProxyHat يوفر عنوان IP من مزود خدمة إنترنت منزلي أمريكي، مما يجتاز فحص ASN.
- السلوك: التأخيرات العشوائية وحركة الماوس تحاكي التقلبات البشرية الطبيعية.
- خصائص المتصفح: إزالة
AutomationControlledوenable-automationتمنع كشف Selenium الفوري. - التفاعل: التمرير وحركة الماوس قبل تنفيذ reCAPTCHA يولّد قياسات صفحة كافية.
- الملفات: المتصفح الحقيقي يحمل ملفات تعريف ارتباط Google الطبيعية إذا سُمح بذلك.
يمكنك استخدام الجلسات الثابتة (sticky sessions) للحفاظ على نفس عنوان IP طوال الجلسة، مما يبني سجل سمعة إيجابي عبر الطلبات المتعددة. للمزيد حول حالات استخدام الويب، راجع دليل كشط الويب وتتبع نتائج البحث.
الأخطاء الشائعة والحالات الحدية
الخطأ 1: استخدام مكتبة HTTP بدلاً من متصفح حقيقي
إذا أرسلت طلب HTTP مباشر عبر requests أو axios إلى صفحة بها reCAPTCHA v3، فلن تحصل على رمز صالح لأن JavaScript لا يعمل. يجب استخدام متصفح حقيقي (أو متصفح headless مع تعديلات مناسبة).
الخطأ 2: تجاهل مطابقة الإجراء واسم المضيف
كما ذكرنا سابقاً، يجب التحقق من action وhostname جانب الخادم. تجاهل هذا التحقق يجعل تطبيقك عرضة لإعادة استخدام الرمز (token replay attacks).
الخطأ 3: تدوير IP بشكل مفرط
تغيير عنوان IP في كل طلب قد يبدو جيداً لتجنب الحظر، لكنه في الواقع يضر بسمعة IP. Google يرى عشرات الطلبات من عشرات عناوين IP المختلفة في دقائق — هذا نمط بوت واضح. استخدم جلسات ثابتة لمدة 10-30 دقيقة على الأقل لكل عنوان IP.
الخطأ 4: عدم التعامل مع النتيجة المنخفضة
إذا حصلت على recaptcha score 0.3 أو أقل، فلا تقم بإعادة المحاولة فوراً من نفس IP. هذا سيؤدي إلى خفض النتيجة أكثر. بدلاً من ذلك، انتظر 5-10 دقائق، استخدم جلسة بروكسي جديدة، وتأكد من أن المتصفح نظيف (ملفات تعريف ارتباط جديدة، بصمة متصفح مختلفة).
الحالة الحدية: بصمة JA3/JA4
حتى مع متصفح حقيقي وبروكسي سكني، يمكن أن تكشف بصمة TLS (JA3/JA4) عن أنك تستخدم أداة أتمتة. ترتيب التشفيرات (cipher suites) والإضافات (extensions) في Chrome الحقيقي يختلف عن Chrome الذي يعمل بـ Selenium. لحل هذا، استخدم متصفحات معدّلة مثل undetected-chromedriver أو Browser-Base التي تحافظ على بصمة TLS طبيعية. وفقاً لـ مواصفات IETF لـ TLS، بصمة العميل (ClientHello) تكشف معلومات أكثر مما يعتقد كثير من المطورين.
المتى يكون هذا الاستخدام مناسباً — ومتى لا يكون
هنا يجب أن نكون واضحين جداً: تقنيات تجاوز reCAPTCHA v3 لها استخدامات شرعية تماماً، لكنها أيضاً يمكن أن تُستخدم بشكل ضار. الاستخدامات الشرعية تشمل:
- اختبار QA المصرّح به: اختبار موقعك الخاص للتأكد من أن reCAPTCHA v3 يعمل بشكل صحيح ويوازن بين الأمان وتجربة المستخدم.
- أتمتة الوصول الشرعي: الوصول إلى بيانات عامة أو APIs حيث تفرض reCAPTCHA v3 عبئاً غير متناسب على الأتمتة المشروعة.
- أبحاث الوصول (Accessibility): دراسة كيفية تأثير reCAPTCHA v3 على المستخدمين ذوي الإعاقة الذين يستخدمون أدوات مساعدة.
- أبحاث الأمان: فهم نقاط ضعف أنظمة مكافحة البوتات لتحسينها.
الاستخدامات غير المشروعة — والتي لا ندعمها — تشمل: الاحتيال على الحسابات، إنشاء حسابات وهمية بشكل جماعي، التلاعب بتصويتات أو تصنيفات، أو أي نشاط ينتهك شروط خدمة الموقع المستهدف. في الولايات المتحدة، قد يخضع الوصول غير المصرّح به لأنظمة الكمبيوتر لـ قانون الاحتيال وإساءة استخدام الكمبيوتر (CFAA). وفي الاتحاد الأوروبي، يجب مراعاة اللائحة العامة لحماية البيانات (GDPR) عند معالجة أي بيانات شخصية.
القاعدة الذهبية: إذا لم تكن متأكداً من أن استخدامك شرعي، فلا تقم به.
النقاط الرئيسية
الخلاصة العملية:
- reCAPTCHA v3 يعيد نتيجة بين 0.0 و1.0 في 11 حاصلاً (bucket) منفصلاً، وتعتمد العتبات على الموقع (حظر <0.3، تحدي 0.3-0.6، سماح >0.6).
- Google يدمج خمس فئات من الإشارات: السلوك، قياسات الصفحة، ملفات تعريف ارتباط Google، خصائص المتصفح، وسمعة IP.
- عناوين IP من مراكز البيانات تنهار النتيجة إلى 0.1-0.2 بصرف النظر عن السلوك — البروكسي السكني ضروري.
- التحقق جانب الخادم يجب أن يشمل مطابقة
actionوhostname، وليس فقط التحقق من وجود الرمز.- ProxyHat يوفر بروكسي سكني على
gate.proxyhat.com:8080مع استهداف جغرافي عبر اسم المستخدم.- الاستخدام الشرعي فقط: اختبار QA المصرّح به، أبحاث الوصول، وأتمتة الوصول المشروع — مع مراعاة CFAA وGDPR.
الأسئلة الشائعة
ما هو نظام تسجيل reCAPTCHA v3 وكيف يعمل؟
reCAPTCHA v3 هو نظام مكافحة بوتات غير مرئي من Google يعيد نتيجة رقمية بين 0.0 و1.0 لكل إجراء. يعمل عبر دمج إشارات سلوكية (حركة الماوس، التمرير، الكتابة)، إشارات شبكية (سمعة IP، نوع ASN)، وإشارات متصفح (بصمة TLS، خصائص JavaScript). النتيجة تمثل احتمالية أن المستخدم بشري. المواقع تختار عتباتها: عادة حظر أقل من 0.3، تحدي بين 0.3 و0.6، وسماح فوق 0.6.
لماذا يهتم مستخدمو البروكسي بنظام تسجيل reCAPTCHA v3؟
لأن سمعة عنوان IP هي أحد أقوى الإشارات في نموذج reCAPTCHA v3. البروكسي من مراكز البيانات (AWS، DigitalOcean) يحصل على نتيجة منخفضة جداً (0.1-0.2) بصرف النظر عن السلوك، لأن Google يعرف أن المستخدمين الحقيقيين لا يتصفحون من خوادم استضافة. البروكسي السكني يحل هذه المشكلة بتوجيه الطلب عبر عنوان IP من مزود خدمة إنترنت منزلي حقيقي، مما يرفع النتيجة إلى 0.7-0.9.
أي نوع من البروكسي يعمل بشكل أفضل مع reCAPTCHA v3؟
البروكسي السكني (residential) هو الحل الأمثل من حيث التوازن بين الأداء والتكلفة. يوفر سمعة IP عالية (نتيجة 0.7-0.9) بسعر معقول. البروكسي الجوال (mobile) يقدم أعلى نتيجة (0.8-1.0) لأن عناوينه تنتمي لشركات اتصالات، لكنه أكثر تكلفة. البروكسي من مراكز البيانات (datacenter) غير مناسب لاجتياز reCAPTCHA v3 لأن نتيجته تنهار إلى 0.1-0.3. ProxyHat يوفر بروكسي سكني على gate.proxyhat.com:8080 مع استهداف جغرافي عبر اسم المستخدم.
كيف تتجنب الحظر عند تنفيذ reCAPTCHA v3؟
استخدم متصفحاً حقيقياً (Chrome/Firefox) مع تعديلات لإزالة بصمة الأتمتة (navigator.webdriver، AutomationControlled)، أضف تأخيرات عشوائية وحركة ماوس طبيعية، استخدم بروكسي سكني من ProxyHat مع جلسات ثابتة (sticky sessions) لمدة 10-30 دقيقة، ولا تدير عنوان IP في كل طلب. تحقق دائماً من مطابقة action وhostname جانب الخادم. إذا حصلت على نتيجة 0.3 أو أقل، انتظر 5-10 دقائق قبل إعادة المحاولة من جلسة جديدة.
ما هي النتيجة المنخفضة في reCAPTCHA v3 ومتى تعالجها؟
النتيجة المنخفضة هي أي نتيجة أقل من 0.3 (recaptcha score 0.3 أو أقل)، مما يعني أن Google يصنف الطلب كـ "بوت شبه مؤكد". لمعالجتها: تأكد من أنك تستخدم بروكسي سكني وليس مركز بيانات، تحقق من أن المتصفح لا يكشف عن أتمتة (navigator.webdriver، بصمة JA3)، أضف سلوكاً بشرياً أكثر (تأخيرات، تمرير، حركة ماوس)، واستخدم ملفات تعريف ارتباط Google طبيعية إذا أمكن. إذا استمرت النتيجة منخفضة، جرب جلسة بروكسي جديدة من دولة مختلفة أو انتظر فترة أطول بين المحاولات.
للمزيد من التفاصيل التقنية حول إعداد البروكسي، راجع وثائق ProxyHat. ولمعرفة المزيد عن حالات استخدام البروكسي السكني في كشط الويب وتتبع نتائج البحث، تابع دليل كشط الويب ودليل تتبع SERP على مدونتنا.






