دروس API

حل reCAPTCHA v2 Enterprise مع Node.js وCaptchaAI

يضيف reCAPTCHA v2 Enterprise تسجيل المخاطر على مستوى المؤسسة إلى مربع الاختيار القياسي "أنا لست روبوتًا". تبدو الأداة مماثلة للإصدار 2 القياسي، ولكن يتم التحقق من الرموز المميزة من خلال الواجهة الخلفية لـ Google Enterprise مع التحقق الأكثر صرامة. لحلها باستخدام CaptchaAI، أضف enterprise=1 إلى طلب الإصدار الثاني الخاص بك.

يغطي هذا الدليل التنفيذ الكامل لـ Node.js - اكتشاف الإصدار 2 من Enterprise، والإرسال إلى CaptchaAI، واستقصاء النتيجة، وحقن الرمز المميز.


ما تحتاجه

المتطلبات التفاصيل
مفتاح CaptchaAI API captchaai.com
Node.js 14+ مع fetch أو node-fetch المدمج
مفتاح الموقع من عنوان URL الخاص بالمؤسسة (المعلمة k=)
عنوان URL للصفحة عنوان URL الكامل الذي يظهر فيه اختبار CAPTCHA
الإجراء (اختياري) من المعلمة sa= في عنوان URL للإرساء

الخطوة 1: تحديد reCAPTCHA v2 Enterprise

افتح DevTools وابحث عن طلب ربط Enterprise في علامة التبويب "الشبكة":

https://www.google.com/recaptcha/enterprise/anchor?ar=1&k=6LdxxXXxAAAAAAcX...&sa=LOGIN&...

المؤشرات الرئيسية:

  • يتضمن مصدر البرنامج النصي /recaptcha/enterprise.js أو /enterprise/anchor
  • المعلمة k= هي مفتاح الموقع
  • المعلمة sa= (إن وجدت) هي الإجراء

يستخدم الإصدار 2 القياسي /recaptcha/api2/anchor — لا تقم بإضافة enterprise=1 للإصدار 2 القياسي.


الخطوة 2: أرسل المهمة إلى CaptchaAI

const API_KEY = "YOUR_API_KEY";

async function submitTask(sitekey, pageurl, action) {
  const params = new URLSearchParams({
    key: API_KEY,
    method: "userrecaptcha",
    googlekey: sitekey,
    pageurl: pageurl,
    enterprise: "1",
    json: "1",
  });

  if (action) {
    params.set("action", action);
  }

  const response = await fetch(
    `https://ocr.captchaai.com/in.php?${params}`
  );
  const data = await response.json();

  if (data.status !== 1) {
    throw new Error(`Submit failed: ${data.request}`);
  }

  console.log(`Task submitted. ID: ${data.request}`);
  return data.request;
}

الخطوة 3: استطلاع النتيجة

انتظر 20 ثانية قبل الاستطلاع الأول، ثم تحقق كل 5 ثوانٍ:

function delay(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

async function pollResult(taskId) {
  await delay(20000);

  for (let attempt = 0; attempt < 30; attempt++) {
    const params = new URLSearchParams({
      key: API_KEY,
      action: "get",
      id: taskId,
      json: "1",
    });

    const response = await fetch(
      `https://ocr.captchaai.com/res.php?${params}`
    );
    const data = await response.json();

    if (data.status === 1) {
      console.log(`Solved. Token: ${data.request.substring(0, 60)}...`);
      return {
        token: data.request,
        userAgent: data.user_agent || "",
      };
    }

    if (data.request !== "CAPCHA_NOT_READY") {
      throw new Error(`Solve failed: ${data.request}`);
    }

    console.log(`Attempt ${attempt + 1}: not ready, waiting 5s...`);
    await delay(5000);
  }

  throw new Error("Solve timed out");
}

الخطوة 4: أدخل الرمز المميز

قم بإرسال الرمز المميز الذي تم حله كـ g-recaptcha-response. إذا أعادت واجهة برمجة التطبيقات (API) user_agent، فاستخدمها في رؤوس طلبك:

async function submitForm(token, userAgent) {
  const headers = { "Content-Type": "application/x-www-form-urlencoded" };

  if (userAgent) {
    headers["User-Agent"] = userAgent;
  }

  const response = await fetch("https://example.com/api/login", {
    method: "POST",
    headers,
    body: new URLSearchParams({
      username: "user",
      password: "pass",
      "g-recaptcha-response": token,
    }),
  });

  console.log(`Response status: ${response.status}`);
  return response;
}

استكمال السيناريو العمل

const API_KEY = "YOUR_API_KEY";
const SITE_KEY = "6LdxxXXxAAAAAAcXxxXxxX91xxxxxxxx8xxOx7A";
const PAGE_URL = "https://example.com/login";
const ACTION = "LOGIN"; // optional — omit if not in anchor URL

function delay(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

async function solveRecaptchaV2Enterprise() {
  // Submit task
  const submitParams = new URLSearchParams({
    key: API_KEY,
    method: "userrecaptcha",
    googlekey: SITE_KEY,
    pageurl: PAGE_URL,
    enterprise: "1",
    action: ACTION,
    json: "1",
  });

  const submitRes = await fetch(
    `https://ocr.captchaai.com/in.php?${submitParams}`
  );
  const submitData = await submitRes.json();

  if (submitData.status !== 1) {
    throw new Error(`Submit error: ${submitData.request}`);
  }

  const taskId = submitData.request;
  console.log(`Task ID: ${taskId}`);

  // Poll for result
  await delay(20000);

  for (let i = 0; i < 30; i++) {
    const pollParams = new URLSearchParams({
      key: API_KEY,
      action: "get",
      id: taskId,
      json: "1",
    });

    const pollRes = await fetch(
      `https://ocr.captchaai.com/res.php?${pollParams}`
    );
    const pollData = await pollRes.json();

    if (pollData.status === 1) {
      return {
        token: pollData.request,
        userAgent: pollData.user_agent || "",
      };
    }

    if (pollData.request !== "CAPCHA_NOT_READY") {
      throw new Error(`Solve error: ${pollData.request}`);
    }

    await delay(5000);
  }

  throw new Error("Solve timed out");
}

(async () => {
  const { token, userAgent } = await solveRecaptchaV2Enterprise();
  console.log(`Token: ${token.substring(0, 60)}...`);
  if (userAgent) console.log(`User-Agent: ${userAgent}`);
})();

الناتج المتوقع:

Task ID: 73849562810
Token: 03AGdBq24PBCqLmOx2V4pGHJjkR2xZ1r...
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)...

استكشاف الأخطاء وإصلاحها

خطأ السبب إصلاح
ERROR_WRONG_USER_KEY تنسيق مفتاح API غير صالح مفتاح التحقق هو 32 حرفًا من لوحة التحكم الخاصة بك
ERROR_KEY_DOES_NOT_EXIST لم يتم العثور على المفتاح التحقق من المفتاح فيcaptchaai.com
ERROR_ZERO_BALANCE رصيد غير كاف قم بتعبئة حسابك
ERROR_BAD_TOKEN_OR_PAGEURL مفتاح الموقع أو عنوان URL غير صحيح قم باستخراج قيمة k= الصحيحة من عنوان URL الخاص بالمؤسسة
ERROR_CAPTCHA_UNSOLVABLE لا يمكن حلها تحقق من أن مفتاح الموقع هو Enterprise v2، ثم أعد المحاولة
تم رفض الرمز المميز بواسطة الموقع عدم تطابق وكيل المستخدم استخدم user_agent من استجابة الحل

الأسئلة الشائعة

كيف يمكنني اكتشاف الإصدار Enterprise v2 مقابل الإصدار القياسي v2؟

يتم تحميل Enterprise v2 من /recaptcha/enterprise/ في البرنامج النصي أو عنوان URL المرساة. يستخدم الإصدار الثاني القياسي /recaptcha/api2/.

هل معلمة الإجراء مطلوبة؟

فقط إذا كان عنوان URL المثبت يتضمن sa=. إذا كانت غائبة، قم بحذفها من طلب CaptchaAI الخاص بك.

لماذا يرفض الموقع المستهدف الرمز المميز الخاص بي؟

الأكثر شيوعًا: عدم تطابق وكيل المستخدم. ترتبط رموز Enterprise v2 المميزة بوكيل المستخدم الخاص بالحل. استخدم دائمًا قيمة user_agent التي تم إرجاعها في استجابة الاستقصاء.

هل يمكنني استخدام هذا مع Puppeteer أو Playwright؟

نعم. قم باستخراج مفتاح الموقع من الصفحة، وحل المشكلة عبر واجهة برمجة التطبيقات (API)، ثم أدخل الرمز المميز في document.getElementById('g-recaptcha-response').innerHTML.

ما هو وقت الحل النموذجي؟

15-30 ثانية حسب تحميل الخادم.


ابدأ في حل reCAPTCHA v2 Enterprise

احصل على مفتاح API الخاص بك علىcaptchaai.comوأضف enterprise=1 إلى طلبات الإصدار الثاني الخاصة بك.


أدلة ذات صلة

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