Tutorial API

Cara Solve reCAPTCHA v2 Enterprise dengan Node.js dan CaptchaAI

reCAPTCHA v2 Enterprise menambahkan penilaian risiko tingkat enterprise ke kotak centang standard "Saya bukan robot". Widgetnya terlihat sama dengan v2 standard, tetapi token diverifikasi melalui backend Google Enterprise dengan validasi yang lebih ketat. Untuk mengatasinya dengan CaptchaAI, tambahkan enterprise=1 ke request v2 Anda.

Panduan ini mencakup implementasi Node.js secara lengkap — mendeteksi Enterprise v2, mengirimkan ke CaptchaAI, melakukan polling untuk hasilnya, dan memasukkan token.


Apa yang Anda butuhkan

Persyaratan Detail
Kunci API CaptchaAI captchaai.com
Node.js 14+ Dengan fetch atau node-fetch bawaan
Sitekey Dari URL jangkar Enterprise (parameter k=)
URL Halaman URL lengkap tempat CAPTCHA muncul
Tindakan (opsional) Dari parameter sa= di URL jangkar

Langkah 1: Identifikasi reCAPTCHA v2 Enterprise

Buka DevTools dan cari request jangkar Enterprise di tab Jaringan:

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

Indikator utama:

  • Sumber skrip termasuk /recaptcha/enterprise.js atau /enterprise/anchor
  • Parameter k= adalah sitekey
  • Parameter sa= (jika ada) adalah aksi

Standar v2 menggunakan /recaptcha/api2/anchor — jangan tambahkan enterprise=1 untuk v2 standard.


Langkah 2: Kirimkan tugas ke 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;
}

Langkah 3: Jajak pendapat untuk hasilnya

Tunggu 20 detik sebelum polling pertama, lalu periksa setiap 5 detik:

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

Langkah 4: Suntikkan token

Kirimkan token yang diselesaikan sebagai g-recaptcha-response. Jika API mengembalikan user_agent, gunakan itu di header request Anda:

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

Selesaikan skrip kerja

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}`);
})();

Hasil yang diharapkan:

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

Pemecahan Masalah

Kesalahan Penyebab Solusi
ERROR_WRONG_USER_KEY Format kunci API tidak valid Kunci centang adalah 32 karakter dari dashboard Anda
ERROR_KEY_DOES_NOT_EXIST Kunci tidak ditemukan Verifikasi kunci dicaptchaai.com
ERROR_ZERO_BALANCE Saldo tidak mencukupi Isi ulang akun Anda
ERROR_BAD_TOKEN_OR_PAGEURL Kunci situs atau URL salah Ekstrak nilai k= yang benar dari URL jangkar Enterprise
ERROR_CAPTCHA_UNSOLVABLE Tidak dapat menyelesaikannya Verifikasikan sitekey adalah Enterprise v2, retry
Token ditolak oleh situs Ketidakcocokan Agen Pengguna Gunakan user_agent dari respons solve

Pertanyaan Umum

Bagaimana cara mendeteksi Enterprise v2 vs v2 standard?

Enterprise v2 dimuat dari /recaptcha/enterprise/ di skrip atau URL jangkar. Standar v2 menggunakan /recaptcha/api2/.

Apakah parameter tindakan diperlukan?

Hanya jika URL jangkar menyertakan sa=. Jika tidak ada, hilangkan dari request CaptchaAI Anda.

Mengapa situs target menolak token saya?

Paling umum: ketidakcocokan Agen-Pengguna. Token enterprise v2 terikat pada Agen Pengguna pemecah. Selalu gunakan nilai user_agent yang dikembalikan dalam respons polling.

Bisakah saya menggunakan ini dengan Dalang atau Penulis Drama?

Ya. Ekstrak sitekey dari halaman, selesaikan melalui API, lalu masukkan token ke document.getElementById('g-recaptcha-response').innerHTML.

Berapa waktu solve biasanya?

15–30 detik tergantung pada beban server.


Mulai selesaikan reCAPTCHA v2 Enterprise

Dapatkan kunci API Anda dicaptchaai.comdan tambahkan enterprise=1 ke request v2 Anda.


Panduan terkait

Komentar dinonaktifkan untuk artikel ini.