يفشل reCAPTCHA v2 Enterprise للأسباب نفسها مثل الإصدار 2 القياسي - مفتاح موقع خاطئ، وعنوان URL للصفحة غير صالح، والرموز المميزة منتهية الصلاحية - بالإضافة إلى بعض المشكلات الخاصة بالمؤسسات. أكبر مشكلة تواجهها المؤسسة هي الخطأ في تحديد التنفيذ: استخدام معلمات الإصدار 2 القياسية مقابل أداة المؤسسة، أو العكس. إذا قمت بإرسال method=userrecaptcha بدون علامة enterprise=1 لعنصر واجهة مستخدم Enterprise، فسيتم رفض الرمز المميز الذي تم إرجاعه بواسطة الواجهة الخلفية للموقع المستهدف.
يغطي هذا الدليل كل الفشل الشائع عند حل reCAPTCHA v2 Enterprise من خلال CaptchaAI API. إذا لم تكن متأكدًا مما إذا كنت تتعامل مع Standard أو Enterprise، فاقرأكيفية التعرف على تنفيذ reCAPTCHA للمؤسساتأولاً.
كيف يختلف reCAPTCHA v2 Enterprise عن المعيار
| ميزة | قياسي v2 | المؤسسة v2 |
|---|---|---|
| عنوان URL للبرنامج النصي | google.com/recaptcha/api.js |
google.com/recaptcha/enterprise.js |
| كائن JS | grecaptcha |
grecaptcha.enterprise |
| نقطة نهاية التحقق | google.com/recaptcha/api/siteverify |
recaptchaenterprise.googleapis.com |
| المعلمة CaptchaAI | method=userrecaptcha |
method=userrecaptcha + enterprise=1 |
المعلمة data-s |
لم تستخدم قط | موجود في بعض الأحيان (رمز إضافي) |
أخطاء خاصة بالمؤسسة
إرسال المعلمات القياسية لعنصر واجهة المستخدم الخاص بالمؤسسة
العَرَض: تقوم واجهة برمجة التطبيقات (API) بإرجاع رمز مميز، لكن الموقع المستهدف يرفضه.
السبب: لقد أرسلت المهمة بدون enterprise=1. قام CaptchaAI بحل المشكلة باعتباره الإصدار الثاني القياسي، لكن الواجهة الخلفية تتحقق من واجهة Enterprise API - التي ترفض الرموز المميزة القياسية.
الإصلاح: إضافة enterprise=1 إلى طلبك:
import requests
response = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": "6LcR_RsTAAAAAFJR-JhNbC6CC42wKCbR9Hq_kVCd",
"pageurl": "https://example.com/login",
"enterprise": 1,
"json": 1
})
data = response.json()
task_id = data["request"]
const params = new URLSearchParams({
key: "YOUR_API_KEY",
method: "userrecaptcha",
googlekey: "6LcR_RsTAAAAAFJR-JhNbC6CC42wKCbR9Hq_kVCd",
pageurl: "https://example.com/login",
enterprise: 1,
json: 1,
});
const res = await fetch(`https://ocr.captchaai.com/in.php?${params}`);
const data = await res.json();
const taskId = data.request;
معلمة البيانات مفقودة
العَرَض: ERROR_BAD_PARAMETERS أو أن الموقع يرفض الرمز المميز.
السبب: تتضمن بعض تطبيقات المؤسسات سمة data-s في قسم reCAPTCHA. هذا رمز جلسة إضافي مطلوب للحل. إذا كان موجودا، يجب عليك تضمينه.
الإصلاح: تحقق من الصفحة بحثًا عن data-s وأدرجها إذا وجدت:
# Look for: <div class="g-recaptcha" data-sitekey="..." data-s="..."></div>
response = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": page_url,
"enterprise": 1,
"data-s": data_s_value, # Include if present on the page
"json": 1
})
تعريف البرنامج النصي الخاطئ
العَرَض: يعمل الرمز المميز بشكل غير متسق أو يتم رفضه دائمًا.
السبب: لقد حددت الأداة على أنها قياسية عندما تكون مؤسسة (أو العكس).
الإصلاح: التحقق من مصدر البرنامج النصي في صفحة HTML:
// Enterprise uses enterprise.js
// <script src="https://www.google.com/recaptcha/enterprise.js?render=SITEKEY"></script>
// Standard uses api.js
// <script src="https://www.google.com/recaptcha/api.js"></script>
// Also check the JS object:
// Enterprise: grecaptcha.enterprise.render(...)
// Standard: grecaptcha.render(...)
أخطاء عامة (مشتركة مع الإصدار الثاني القياسي)
| رمز الخطأ | السبب | إصلاح |
|---|---|---|
ERROR_WRONG_USER_KEY |
تنسيق مفتاح API غير صالح | التحقق فيcaptchaai.com/api.php |
ERROR_KEY_DOES_NOT_EXIST |
لم يتم العثور على مفتاح API | تحقق من وجود مسافات إضافية أو أحرف مفقودة |
ERROR_ZERO_BALANCE |
لا يوجد توازن | قم بتعبئة حسابك |
ERROR_PAGEURL |
pageurl مفقود |
أضف عنوان URL الكامل للصفحة |
ERROR_GOOGLEKEY |
مفتاح الموقع تالف | إعادة الاستخراج من data-sitekey |
ERROR_BAD_TOKEN_OR_PAGEURL |
عدم تطابق Sitekey/URL | تحقق من سياق iframe |
CAPCHA_NOT_READY |
لا يزال حل | انتظر 5 ثواني، قم بالاستطلاع مرة أخرى |
ERROR_CAPTCHA_UNSOLVABLE |
لا يمكن حلها | إرسال مهمة جديدة |
أكمل تدفق الحل مع معالجة الأخطاء
import requests
import time
def solve_recaptcha_v2_enterprise(api_key, sitekey, page_url, data_s=None):
params = {
"key": api_key,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": page_url,
"enterprise": 1,
"json": 1
}
if data_s:
params["data-s"] = data_s
response = requests.get("https://ocr.captchaai.com/in.php", params=params)
data = response.json()
if data.get("status") != 1:
raise RuntimeError(f"Submit failed: {data.get('request')}")
task_id = data["request"]
for _ in range(40):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key, "action": "get", "id": task_id, "json": 1
}).json()
if result.get("status") == 1:
return result["request"]
if result.get("request") == "CAPCHA_NOT_READY":
continue
raise RuntimeError(f"Solve failed: {result.get('request')}")
raise TimeoutError("Solve timed out after 200 seconds")
token = solve_recaptcha_v2_enterprise("YOUR_API_KEY", "SITEKEY", "https://example.com/login")
async function solveRecaptchaV2Enterprise(apiKey, sitekey, pageUrl, dataS) {
const params = new URLSearchParams({
key: apiKey, method: "userrecaptcha", googlekey: sitekey,
pageurl: pageUrl, enterprise: 1, json: 1,
});
if (dataS) params.set("data-s", dataS);
const submitRes = await fetch(`https://ocr.captchaai.com/in.php?${params}`);
const submitData = await submitRes.json();
if (submitData.status !== 1) throw new Error(`Submit failed: ${submitData.request}`);
const taskId = submitData.request;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 5000));
const res = await fetch(`https://ocr.captchaai.com/res.php?${new URLSearchParams({
key: apiKey, action: "get", id: taskId, json: 1,
})}`);
const data = await res.json();
if (data.status === 1) return data.request;
if (data.request === "CAPCHA_NOT_READY") continue;
throw new Error(`Solve failed: ${data.request}`);
}
throw new Error("Timed out after 200s");
}
الأسئلة الشائعة
كيف أعرف ما إذا كان الموقع يستخدم reCAPTCHA Enterprise أو Standard؟
تحقق من علامة البرنامج النصي في HTML. تقوم المؤسسة بتحميل recaptcha/enterprise.js بينما تقوم بالتحميل القياسي recaptcha/api.js. يختلف كائن JavaScript أيضًا: يستخدم Enterprise grecaptcha.enterprise بينما يستخدم المعيار grecaptcha.
هل أحتاج إلى تغيير استدعاء API الخاص بي للمؤسسات؟
نعم. أضف enterprise=1 إلى طلبك CaptchaAI. بدون هذه العلامة، يتم إنشاء الرمز المميز للإصدار 2 القياسي، وهو ما ترفضه واجهات Enterprise الخلفية.
ما هي المعلمة data-s؟
تتضمن بعض تطبيقات Enterprise سمة data-s في قسم reCAPTCHA. هذا رمز جلسة إضافية. إذا كان موجودًا على الصفحة، فقم بإدراجه في طلب واجهة برمجة التطبيقات (API) الخاص بك.
لماذا يتم رفض رمز Enterprise المميز الخاص بي حتى مع وجود Enterprise=1؟
تحقق من ثلاثة أشياء: (1) مفتاح الموقع صحيح، (2) المعلمة data-s موجودة على الصفحة ولكنها مفقودة من طلبك، أو (3) انتهت صلاحية الرمز المميز قبل إرسال النموذج.
هل يمكنني استخدام نفس الرمز للإصدار القياسي وEnterprise v2؟
نعم - أضف enterprise=1 للتبديل. كل شيء آخر (اسم الطريقة، المعلمات، الاقتراع) يبقى كما هو.
أصلح سير العمل في مؤسستك
- تحقق من نوع التنفيذ — تحقق من وجود
enterprise.jsفي علامة البرنامج النصي - أضف
enterprise=1إلى طلب CaptchaAI الخاص بك - تحقق من وجود
data-s— قم بتضمينه إذا كانت الصفحة تحتوي على هذه السمة - أرسل الرمز المميز على الفور — تنتهي صلاحية الرموز المميزة للمؤسسة أيضًا بعد دقيقتين تقريبًا
احصل على مفتاح API الخاص بك علىcaptchaai.com/api.php.