عندما تظهر تحديات reCAPTCHA بصورتها الأصعب داخل سكربتات الأتمتة رغم أن كل شيء آخر يبدو سليماً، يكون المتهم الأول غالباً ملفات تعريف الارتباط لا عنوان IP. يقرأ reCAPTCHA ملفات تعريف الارتباط ويكتبها ليقدّر مدى «طبيعية» الجلسة: فالمتصفح الذي يحمل تاريخاً من ملفات تعريف الارتباط الخاصة بـ Google يمرّ غالباً بنقرة واحدة، بينما تُغرَق الجلسة النظيفة تماماً بجولات متتالية من تحديات الصور. تشرح هذه المقالة أي ملفات تعريف ارتباط يعتمد عليها reCAPTCHA، وكيف تُترجَم حالتها إلى صعوبة التحدي، وما الذي يجدر بك الحفاظ عليه لتحصل على نتائج حل أفضل.
كيف تحدّد ملفات تعريف الارتباط صعوبة التحدي
ملفات تعريف الارتباط ليست سوى إشارة واحدة ضمن إشارات كثيرة يجمعها محرك المخاطر في Google، لكنها إشارة ثقيلة الوزن: كلما بدا المتصفح أقرب إلى مستخدم بشري له تاريخ تصفّح، خفّت التحديات.
| حالة ملفات تعريف الارتباط | صعوبة التحدي | السبب |
|---|---|---|
| تسجيل الدخول إلى حساب Google | الأدنى | إشارة هوية قوية |
| ملفات تعريف ارتباط Google موجودة دون تسجيل دخول | منخفضة – متوسطة | يظهر سجل تصفّح طبيعي |
| متصفح جديد بلا ملفات تعريف ارتباط لـ Google | متوسطة – عالية | لا يوجد تاريخ يُقيَّم به الخطر |
| ملفات تعريف الارتباط محظورة أو مُجرَّدة | عالية | مريب — المتصفحات العادية تحمل ملفات تعريف ارتباط |
| وضع التصفّح المتخفّي / الخاص | عالية | لا هوية ثابتة |
أثر «درجة» ملفات تعريف الارتباط
يمنح محرك المخاطر في reCAPTCHA وزناً كبيراً لحالة ملفات تعريف الارتباط، ويمكن تلخيص السلوك في ثلاث حالات:
- أفضل حالة: يحمل المتصفح ملفات
SIDوHSIDوNIDمن جلسة Google مسجَّل الدخول إليها → يمرّ غالباً بنقر مربع الاختيار فقط - حالة جيدة: يحمل المتصفح
NIDو1P_JARمن تصفّح طبيعي → تحديات صور أسهل أو تمرير مربع الاختيار - أسوأ حالة: لا ملفات تعريف ارتباط لـ Google وجلسة جديدة → تحديات صور متعددة الجولات
ملفات تعريف الارتباط التي يعتمد عليها reCAPTCHA
ملفات تعريف الارتباط الخاصة بنطاق Google
تُضبط على .google.com ويقرأها إطار reCAPTCHA:
| ملف تعريف الارتباط | النطاق | الغرض | مدة الصلاحية |
|---|---|---|---|
NID |
.google.com |
تفضيلات Google ومعرّف فريد | 6 أشهر |
SID / HSID / SSID |
.google.com |
جلسة حساب Google عند تسجيل الدخول | سنتان |
APISID / SAPISID |
.google.com |
مصادقة واجهات Google | سنتان |
1P_JAR |
.google.com |
تخصيص إعلانات Google | شهر واحد |
CONSENT |
.google.com |
تفضيل الموافقة على ملفات تعريف الارتباط | 17 سنة |
ملفات تعريف الارتباط الخاصة بـ reCAPTCHA
| ملف تعريف الارتباط | النطاق | الغرض | مدة الصلاحية |
|---|---|---|---|
_GRECAPTCHA |
.google.com / .recaptcha.net |
تتبّع جلسة reCAPTCHA | جلسة |
rc::a |
localStorage | بيانات تحليل المخاطر | مستمر |
rc::b |
localStorage | بيانات الطابع الزمني | جلسة |
rc::c |
localStorage | بيانات خاصة بالتحدي | جلسة |
rc::d-<id> |
localStorage | بيانات لكل عنصر واجهة | جلسة |
ملفات تعريف الارتباط الخاصة بالموقع المستهدف
الموقع الذي يستضيف اختبار reCAPTCHA قد يعتمد بدوره على ملفات تعريف ارتباط للجلسة وحماية CSRF:
| النوع | مثال | الصلة |
|---|---|---|
| معرّف الجلسة | PHPSESSID، session_id |
يربط حلّ CAPTCHA بجلسة المستخدم |
| رمز CSRF | csrf_token، _token |
مطلوب لإرسال النموذج |
| تتبّع مخصص | خاص بالموقع | قد يؤثر في تشغيل اختبار CAPTCHA |
قيود ملفات تعريف الارتباط عبر المجالات
يُحمَّل reCAPTCHA داخل إطار من google.com، وتفرض المتصفحات الحديثة سياسات صارمة على ملفات تعريف الارتباط عبر المجالات:
| سياسة المتصفح | الأثر على reCAPTCHA |
|---|---|
| SameSite=Lax — الافتراضي | لا تُرسَل ملفات تعريف ارتباط Google داخل إطار reCAPTCHA افتراضياً |
| حظر ملفات تعريف الارتباط للطرف الثالث | يتراجع reCAPTCHA إلى recaptcha.net أو وضع الطرف الأول |
| ITP في Safari | تنتهي صلاحية ملفات تعريف ارتباط Google أسرع، فتتكرّر التحديات الأصعب |
سيناريو Safari وITP في أسواق الخليج ومصر
يستحق بند Safari انتباهاً خاصاً في أسواق الخليج ومصر حيث حصة iPhone مرتفعة: تجريدُ ITP لملفات تعريف الارتباط بعد أيام قليلة يعني أن المستخدمين — وأجهزة الاختبار التي تحاكيهم — يصطدمون بتحديات أصعب أكثر مما يحدث على Chrome.
نصيحة: عند اختبار تدفّق تسجيل دخول من Safari، لا تبدأ من ملف تعريف نظيف في كل تشغيل؛ فتجريد ITP للحالة سيُظهر لك تحديات أثقل مما يراه مستخدموك الفعليون. حافظ على ملف تعريف ثابت واحد بدل ذلك.
كيف تعالج Google هذه القيود
- استخدام
recaptcha.netنطاقاً بديلاً عندما يُحظرgoogle.com - الاعتماد على
localStorageعبر إدخالاتrc::*للحالة من جانب العميل - إتاحة تحميل السكربت من الطرف الأول لعملاء المؤسسات
التعامل مع ملفات تعريف الارتباط في الأتمتة
مع أتمتة المتصفح — Playwright / Puppeteer
تدير أتمتة المتصفح ملفات تعريف الارتباط تلقائياً. وللحفاظ عليها بين الجلسات، احفظها واسترجعها:
# Save cookies after session
cookies = page.context.cookies()
import json
with open("cookies.json", "w") as f:
json.dump(cookies, f)
# Restore cookies in next session
with open("cookies.json") as f:
cookies = json.load(f)
page.context.add_cookies(cookies)
مع CaptchaAI — الحل عبر الـ API فقط
عند استخدام CaptchaAI دون متصفح، لا تؤثر ملفات تعريف الارتباط مباشرة في الحل، لأن CaptchaAI يدير بيئة الحل الخاصة به. لكن قد ترغب في تمرير ملفات تعريف الارتباط إذا كان الموقع المستهدف يحتاجها لاستمرارية الجلسة:
POST https://ocr.captchaai.com/in.php
key=YOUR_API_KEY
&method=userrecaptcha
&googlekey=SITE_KEY
&pageurl=https://example.com/login
&cookies=NID=12345;1P_JAR=2026-04-04-12
المعلمة cookies اختيارية، وتُمرّر سياق ملف تعريف الارتباط إلى CaptchaAI أثناء الحل.
إدخالات التخزين المحلي (localStorage)
يخزّن reCAPTCHA بيانات تقييم المخاطر في localStorage ضمن مفاتيح تبدأ بالبادئة rc:::
| نمط المفتاح | البيانات |
|---|---|
rc::a |
حمولة تحليل المخاطر المشفّرة |
rc::b |
الطابع الزمني لآخر تحدٍّ |
rc::c |
بيانات جلسة التحدي الحالية |
rc::d-<hash> |
بيانات مثيل لكل عنصر واجهة |
تساعد هذه الإدخالات reCAPTCHA على حفظ حالته عبر عمليات تحميل الصفحة دون الاعتماد على ملفات تعريف ارتباط الطرف الثالث. في الأتمتة، يقلّل الحفاظ على localStorage صعوبة التحدي:
# Save localStorage
storage = page.evaluate("() => JSON.stringify(localStorage)")
with open("localstorage.json", "w") as f:
f.write(storage)
# Restore localStorage
with open("localstorage.json") as f:
storage = f.read()
page.evaluate(f"Object.entries(JSON.parse('{storage}')).forEach(([k,v]) => localStorage.setItem(k,v))")
أفضل الممارسات
- أبقِ ملفات تعريف المتصفح بين عمليات التشغيل — يبني سجل تصفّح يخفّف التحديات
- لا تمسح ملفات تعريف الارتباط بين المهام — يحافظ على استمرارية تقييم المخاطر لدى Google
- استخدم
recaptcha.netعند حظرgoogle.com— الخدمة نفسها بنطاق مختلف - حافظ على إدخالات
rc::في localStorage — يبقي حالة جلسة reCAPTCHA - زُر خدمات Google من حين لآخر — يجدّد صلاحية ملفات تعريف الارتباط
استكشاف الأخطاء وإصلاحها
| المشكلة | السبب | الإجراء |
|---|---|---|
| تحديات صور صعبة في كل مرة | لا ملفات تعريف ارتباط / ملف تعريف جديد | ابنِ ملف تعريف متصفح يحمل ملفات تعريف ارتباط Google |
| ظهور خطأ «ملفات تعريف الارتباط مطلوبة» | حظر ملفات تعريف ارتباط الطرف الثالث | فعّل ملفات تعريف الارتباط لـ google.com أو استخدم recaptcha.net |
| رمز صالح لكن الجلسة غير متطابقة | ملف تعريف الموقع مثل PHPSESSID غير محفوظ |
احفظ كل ملفات تعريف الارتباط واسترجعها لا ملفات Google وحدها |
| حلقة تحديات لا تنتهي من طلب الصور | مسح localStorage بين المحاولات | حافظ على إدخالات rc::* في localStorage |
الأسئلة الشائعة
لماذا أحصل على تحديات صور صعبة في كل تشغيل رغم أن الحل ينجح؟
الغالب أن جلستك «نظيفة» بلا ملفات تعريف ارتباط لـ Google، فيقرأها محرك المخاطر على أنها مشبوهة ويرفع الصعوبة. بدل بدء جلسة جديدة كل مرة، حافظ على ملف تعريف متصفح ثابت يتراكم فيه:
- ملفات تعريف ارتباط Google مثل
NIDو1P_JAR - إدخالات
rc::في localStorage
هل يؤثر حظر ملفات تعريف ارتباط الطرف الثالث في متصفحي على reCAPTCHA؟
نعم. مع سياسة SameSite=Lax وحظر الطرف الثالث لا تصل ملفات تعريف ارتباط Google إلى الإطار افتراضياً، فيتراجع reCAPTCHA إلى recaptcha.net أو إلى وضع الطرف الأول ويعتمد أكثر على localStorage.
هل يحتاج CaptchaAI إلى ملفات تعريف الارتباط في متصفحي لحل reCAPTCHA؟
لا. يحل CaptchaAI reCAPTCHA v2 عبر بنيته الخاصة، وتمرير المعلمة cookies اختياري يُستخدم فقط لسياق إضافي عندما يطلبه الموقع المستهدف.
متى أستخدم recaptcha.net بدلاً من google.com؟
استخدم recaptcha.net عندما يكون google.com محظوراً على مستوى الشبكة، أو عند حظر ملفات تعريف الارتباط للطرف الثالث. النطاقان يقدّمان الخدمة نفسها، والتبديل بينهما لا يغيّر آلية الحل.
الخطوات التالية
- البدء السريع مع CaptchaAI: حلّ أول كابتشا في 5 دقائق
- حلّ reCAPTCHA v2 عبر الـ API خطوة بخطوة
- حلّ Cloudflare Turnstile عبر الـ API
- حلّ GeeTest v3 عبر الـ API