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.jshoặc/enterprise/anchor - Tham số
k=là 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.