Hướng Dẫn API

Cách giải quyết reCAPTCHA v2 Enterprise bằng Node.js

reCAPTCHA v2 Enterprise bổ sung tính năng chấm điểm rủi ro cấp doanh nghiệp vào hộp kiểm tiêu chuẩn "Tôi không phải là robot". Tiện ích này trông giống như phiên bản tiêu chuẩn v2 nhưng mã thông báo được xác minh thông qua chương trình phụ trợ Enterprise của Google với xác thực chặt chẽ hơn. Để giải quyết vấn đề này bằng CaptchaAI, hãy thêm enterprise=1 vào yêu cầu v2 của bạn.

Hướng dẫn này bao gồm quá trình triển khai Node.js hoàn chỉnh — phát hiện Enterprise v2, gửi tới CaptchaAI, thăm dò kết quả và đưa mã thông báo.


Những gì bạn cần

Yêu cầu Chi tiết
Khóa API CaptchaAI captchaai.com
Node.js 14+ Với fetch hoặc node-fetch tích hợp
Mã khóa trang web Từ URL neo doanh nghiệp (tham số k=)
URL trang URL đầy đủ nơi CAPTCHA xuất hiện
Hành động (tùy chọn) Từ tham số sa= trong URL neo

Bước 1: Xác định reCAPTCHA v2 Enterprise

Mở DevTools và tìm yêu cầu neo Doanh nghiệp trong tab Mạng:

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

Các chỉ số chính:

  • Nguồn tập lệnh bao gồm /recaptcha/enterprise.js hoặc /enterprise/anchor
  • Tham số k=sitekey
  • Tham số sa= (nếu có) là action

Phiên bản 2 tiêu chuẩn sử dụng /recaptcha/api2/anchor - không thêm enterprise=1 cho phiên bản 2 tiêu chuẩn.


Bước 2: Gửi nhiệm vụ tới 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;
}

Bước 3: Thăm dò kết quả

Đợi 20 giây trước cuộc thăm dò đầu tiên, sau đó kiểm tra 5 giây một lần:

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");
}

Bước 4: Tiêm mã thông báo

Gửi mã thông báo đã giải quyết dưới dạng g-recaptcha-response. Nếu API trả về user_agent, hãy sử dụng nó trong tiêu đề yêu cầu của bạn:

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;
}

Hoàn thiện kịch bản làm việc

const API_KEY = "YOUR_API_KEY";
const SITE_KEY = "6LdxxXXxAAAAAAcXxxXxxX91xxxxxxxx8xxOx7A";
const PAGE_URL = "https://staging.example.com/qa-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}`);
})();

Sản lượng dự kiến:

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

Khắc phục sự cố

Lỗi nguyên nhân sửa chữa
ERROR_WRONG_USER_KEY Định dạng khóa API không hợp lệ Khóa kiểm tra có 32 ký tự từ trang tổng quan của bạn
ERROR_KEY_DOES_NOT_EXIST Không tìm thấy chìa khóa Xác minh khóa tạicaptchaai.com
ERROR_ZERO_BALANCE Số dư không đủ Nạp tiền vào tài khoản của bạn
ERROR_BAD_TOKEN_OR_PAGEURL Khóa trang web hoặc URL sai Trích xuất giá trị k= chính xác từ URL neo doanh nghiệp
ERROR_CAPTCHA_UNSOLVABLE Không thể giải quyết Xác minh khóa trang web là Enterprise v2, thử lại
Mã thông báo bị trang web từ chối Tác nhân người dùng không khớp Sử dụng user_agent từ phản hồi giải quyết

Câu hỏi thường gặp

Làm cách nào để phát hiện Enterprise v2 so với v2 tiêu chuẩn?

Enterprise v2 tải từ /recaptcha/enterprise/ trong tập lệnh hoặc URL liên kết. Tiêu chuẩn v2 sử dụng /recaptcha/api2/.

Tham số hành động có cần thiết không?

Chỉ khi URL neo bao gồm sa=. Nếu vắng mặt, hãy bỏ qua nó khỏi yêu cầu CaptchaAI của bạn.

Tại sao trang đích từ chối mã thông báo của tôi?

Phổ biến nhất: Tác nhân người dùng không khớp. Mã thông báo Enterprise v2 được liên kết với Tác nhân người dùng của người giải quyết. Luôn sử dụng giá trị user_agent được trả về trong phản hồi thăm dò ý kiến.

Tôi có thể sử dụng cái này với Puppeteer hoặc Playwright không?

Vâng. Trích xuất khóa trang web từ trang, giải quyết thông qua API, sau đó đưa mã thông báo vào document.getElementById('g-recaptcha-response').innerHTML.

Thời gian giải quyết điển hình là gì?

15–30 giây tùy thuộc vào tải của máy chủ.


Bắt đầu giải reCAPTCHA v2 Enterprise

Nhận khóa API của bạn tạicaptchaai.comvà thêm enterprise=1 vào yêu cầu v2 của bạn.


Hướng dẫn liên quan

Os comentários estão desativados para este artigo.