استكشاف الأخطاء

أخطاء وإصلاحات reCAPTCHA v2 Enterprise الشائعة

يفشل 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 للتبديل. كل شيء آخر (اسم الطريقة، المعلمات، الاقتراع) يبقى كما هو.


أصلح سير العمل في مؤسستك

  1. تحقق من نوع التنفيذ — تحقق من وجود enterprise.js في علامة البرنامج النصي
  2. أضف enterprise=1 إلى طلب CaptchaAI الخاص بك
  3. تحقق من وجود data-s — قم بتضمينه إذا كانت الصفحة تحتوي على هذه السمة
  4. أرسل الرمز المميز على الفور — تنتهي صلاحية الرموز المميزة للمؤسسة أيضًا بعد دقيقتين تقريبًا

احصل على مفتاح API الخاص بك علىcaptchaai.com/api.php.


أدلة ذات صلة

التعليقات غير مفعّلة لهذا المقال.