المفتاح الذي ترسله إلى CaptchaAI هو مفتاح الموقع: السلسلة التي تبدأ بـ 6L وتظهر مكشوفة في مصدر الصفحة. أما التي تبدأ بـ AIzaSy فهي مفتاح Google Cloud الخاص بالموقع المستهدف، ولا دخل لها بالحل.
هذا الخلط هو أكثر ما يتكرر في تذاكر الدعم حول reCAPTCHA Enterprise: يُنسخ أول مفتاح تقع عليه العين داخل Google Cloud Console، فتعود المهمة مرفوضة. والقاعدة المختصرة: ما يظهر في المتصفح هو ما يلزم للحل.
الفرق بين المفتاحين في جدول واحد
| الخاصية | مفتاح الموقع — sitekey | مفتاح الـ API |
|---|---|---|
| الشكل | 6L... — 40 حرفاً |
AIzaSy... — 39 حرفاً |
| الظهور | علني في HTML | خاص بالخادم |
| الوظيفة | عرض أداة CAPTCHA | التحقق من الرمز لدى Google |
| يطلبه CaptchaAI؟ | نعم | لا |
مفتاح موقع reCAPTCHA Enterprise: الجزء العلني
مفتاح الموقع مكتوب داخل الصفحة نفسها، ووظيفته تحديد تكوين reCAPTCHA المطلوب تحميله:
<script src="https://www.google.com/recaptcha/enterprise.js?render=6LcR_RsTAAAAADge..."></script>
أو داخل نداء grecaptcha.enterprise.execute:
grecaptcha.enterprise.execute('6LcR_RsTAAAAADge...', { action: 'login' });
| العلامة | ماذا تعني |
|---|---|
يبدأ بـ 6L |
البادئة نفسها في reCAPTCHA القياسي |
| ظاهر في المصدر | علني بالتصميم، لا سرّ مسرَّب |
| مقيَّد بنطاق | يُضبط في Google Cloud Console |
| كافٍ للحل | لا يطلب CaptchaAI غيره |
مفتاح الـ API: الجزء الذي لا يغادر الخادم
مفتاح الـ API يصادق الاتصال بين خادم الموقع وGoogle عند التحقق من الرمز:
POST https://recaptchaenterprise.googleapis.com/v1/projects/PROJECT_ID/assessments?key=AIzaSy...
يبدأ هذا المفتاح بالتنسيق AIzaSy، ولا يظهر إطلاقاً في كود جانب العميل، وتستعمله الواجهة الخلفية وحدها. لهذا لا يطلبه CaptchaAI؛ فهو ملك لمشروع Google Cloud الخاص بصاحب الموقع.
إذا طالبك أي دليل بإرسال مفتاح
AIzaSyلتشغيل الحل، فالتعليمات خاطئة: الحل لا يمر بحساب Google Cloud.
أين يقع كل مفتاح داخل دورة التحقق
- المتصفح يحمّل
enterprise.jsبـ مفتاح الموقع - المتصفح ينفّذ التحدي ويحصل على
g-recaptcha-response - خادم الموقع يرسل الرمز مع مفتاح الـ API إلى
assessments - Google تُرجع درجة المخاطر وأسباب التقييم
- خادم الموقع يقبل الطلب أو يرفضه بناءً على الدرجة
دور CaptchaAI محصور في الخطوتين الأولى والثانية؛ أما الباقي فيجري داخل بنية الموقع بمفتاحه الخاص.
ما الذي يتغير عند الانتقال من الإصدار القياسي إلى Enterprise
| العنصر | الإصدار القياسي | Enterprise |
|---|---|---|
| مصدر المفتاح | لوحة تحكم مشرف reCAPTCHA | Google Cloud Console |
| نقطة التحقق | siteverify |
assessments |
| المصادقة | المفتاح السري المشترك | مفتاح API أو حساب خدمة |
| شكل النتيجة | حقل score |
riskAnalysis.score مع الأسباب |
| اسم المهمة | RecaptchaV2Task / RecaptchaV3Task |
RecaptchaV2EnterpriseTask / RecaptchaV3EnterpriseTask |
ثلاث طرق لاستخراج مفتاح موقع reCAPTCHA Enterprise
1. البحث في مصدر الصفحة
ابحث في مصدر الصفحة عن enterprise.js؛ المفتاح مخبوء داخل المعلمة render:
View Source → Ctrl+F → "enterprise.js"
<script src="https://www.google.com/recaptcha/enterprise.js?render=6LcR_RsTAAAAADge..."></script>
2. من وحدة تحكم JavaScript
إن كانت الأداة تُحمَّل ديناميكياً، شغّل هذا المقطع في وحدة تحكم المتصفح:
// Check for Enterprise grecaptcha
if (window.grecaptcha && window.grecaptcha.enterprise) {
console.log('reCAPTCHA Enterprise detected');
}
// Find site key from rendered widgets
document.querySelectorAll('[data-sitekey]').forEach(el => {
console.log('Site key:', el.getAttribute('data-sitekey'));
});
3. من تبويب الشبكة
رشّح طلبات الشبكة على enterprise.js، وسيظهر المفتاح في عنوان URL للطلب. وهي الأنسب مع المواقع التي تبني صفحاتها من JavaScript.
إرسال المهمة إلى نقطة النهاية in.php
POST https://ocr.captchaai.com/in.php
| المعلمة | القيمة | إلزامية؟ |
|---|---|---|
key |
مفتاح حسابك — YOUR_API_KEY |
نعم |
method |
userrecaptcha |
نعم |
googlekey |
مفتاح الموقع — 6LcR_Rs... |
نعم |
pageurl |
عنوان URL الكامل للصفحة | نعم |
enterprise |
1 لتمييز التحدي كـ Enterprise |
نعم |
enterprise_type |
v2 أو v3 بحسب التكامل |
اختيارية |
action |
اسم الإجراء في v3 — مثل login |
اختيارية |
سيناريو عملي: اختبار صفحة تسجيل دخول في الرياض
فريق ضمان الجودة في منصة حجوزات سعودية يشغّل اختباراً ليلياً على صفحة تسجيل الدخول لديه، وهي محمية بـ reCAPTCHA Enterprise v3. في أول تشغيل نسخ المهندس المفتاح من شاشة Credentials — أي الذي يبدأ بـ AIzaSy — فعاد الطلب مرفوضاً. المسار الصحيح ثلاث خطوات:
- استخراج مفتاح الموقع من
enterprise.js، مع مفتاح منفصل للإنتاج - إرسال المهمة بـ
enterprise=1وenterprise_type=v3وaction=login - وضع الرمز العائد في
g-recaptcha-responseقبل إرسال النموذج
خطط CaptchaAI تُحتسب بعدد الـ threads المتزامنة لا بعدد عمليات الحل: خطة BASIC بسعر $15 شهرياً — 5 threads بحلول غير محدودة داخل كل thread — تكفي دورة اختبار كهذه، بينما تحتاج فرق جمع البيانات إلى ADVANCE بسعر $90 شهرياً مع 50 thread.
أخطاء التكوين الشائعة وعلاجها
| العَرَض | السبب المرجّح | العلاج |
|---|---|---|
| رفض المهمة فور إرسالها | إرسال مفتاح AIzaSy... |
استخرج المفتاح الذي يبدأ بـ 6L |
| الرمز يُنتَج والموقع يرفضه | الخلط بين v2 وv3 | اضبط القيمة الصحيحة في enterprise_type |
| مفتاح الموقع غير صالح | المفتاح من بيئة الاختبار لا الإنتاج | انسخه من عنوان URL المستهدف حرفياً |
| التحدي يُعالَج كأنه قياسي | نسيان راية Enterprise | أضف enterprise=1 إلى الطلب |
الأسئلة الشائعة
مفتاح الموقع ظاهر لأي زائر — أليست هذه ثغرة أمنية؟
الظهور مقصود بالتصميم. المفتاح مقيَّد بالنطاقات المصرّح بها، والحماية الفعلية تقع في تقييم الطلب على الخادم لا في إخفاء سلسلة نصية.
متى أضبط enterprise_type ومتى أحتاج action؟
اضبط enterprise_type كلما اختلف إصدار التحدي عمّا يفترضه تكاملك، وaction مطلوبة عملياً في v3 لأن الموقع يقارن اسم الإجراء بما ينتظره في الصفحة.
هل يختلف شكل الرمز عن رمز reCAPTCHA القياسي؟
لا. الرمز يصل في الحقل نفسه g-recaptcha-response وتضعه في النموذج كالمعتاد؛ الاختلاف كله في مسار التحقق على الخادم.
كيف أميّز موقعاً يعمل بـ Enterprise عن آخر قياسي؟
انظر إلى عنوان السكربت: Enterprise يُحمَّل من /recaptcha/enterprise.js والقياسي من /recaptcha/api.js، وفي الكود ستجد grecaptcha.enterprise.execute() بدلاً من grecaptcha.execute().
ماذا تقرأ بعد هذا الدليل
- أول مهمة حل في خمس دقائق
- حل reCAPTCHA v2 عبر الـ API
- التعامل مع Cloudflare Turnstile
- حل GeeTest v3 برمجياً