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.jsatau/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
- Cara Mengatasi reCAPTCHA v2 Enterprise Menggunakan API
- Selesaikan reCAPTCHA v2 Enterprise dengan Python
- Kesalahan dan Perbaikan reCAPTCHA v2 Enterprise Umum
- Cara Mengidentifikasi Implementasi reCAPTCHA Enterprise