reCAPTCHA v2 Enterprise, standart "Ben robot değilim" onay kutusuna kurumsal düzeyde risk puanlaması ekler. Widget standart v2 ile aynı görünür ancak jetonlar Google'ın Kurumsal arka ucu aracılığıyla daha sıkı doğrulamayla doğrulanır. CaptchaAI ile çözmek için v2 isteğinize enterprise=1'yi ekleyin.
Bu kılavuz, Node.js uygulamasının tamamını kapsar; Enterprise v2'yi algılama, CaptchaAI'ye gönderme, sonucu yoklama ve belirteci ekleme.
İhtiyacınız olan şey
| Gereksinim | Ayrıntılar |
|---|---|
| CaptchaAI API anahtarı | captchaai.com |
| Node.js 14+ | Yerleşik fetch veya node-fetch ile |
| Site anahtarı | Kurumsal bağlantı URL'sinden (k= parametresi) |
| Sayfa URL'si | CAPTCHA'nın göründüğü tam URL |
| İşlem (isteğe bağlı) | Bağlantı URL'sindeki sa= parametresinden |
Adım 1: reCAPTCHA v2 Enterprise'yi tanımlayın
DevTools'u açın ve Ağ sekmesinde Kurumsal bağlantı isteğini arayın:
https://www.google.com/recaptcha/enterprise/anchor?ar=1&k=6LdxxXXxAAAAAAcX...&sa=LOGIN&...
Temel göstergeler:
- Komut dosyası kaynağı
/recaptcha/enterprise.jsveya/enterprise/anchor'yi içerir k=parametresi sitekey'dirsa=parametresi (varsa) eylemdir
Standart v2, /recaptcha/api2/anchor'yi kullanır — standart v2 için enterprise=1'yi eklemeyin.
Adım 2: Görevi CaptchaAI'ye gönderin
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. Adım: Sonuç için anket yapın
İlk anketten önce 20 saniye bekleyin ve ardından her 5 saniyede bir kontrol edin:
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. Adım: Belirteci enjekte edin
Çözülmüş jetonu g-recaptcha-response olarak gönderin. API bir user_agent döndürdüyse bunu istek başlıklarınızda kullanı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;
}
Çalışma komut dosyasını tamamla
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}`);
})();
Beklenen çıktı:
Task ID: 73849562810
Token: 03AGdBq24PBCqLmOx2V4pGHJjkR2xZ1r...
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)...
Sorun giderme
| Hata | Sebep | Düzeltme |
|---|---|---|
ERROR_WRONG_USER_KEY |
Geçersiz API anahtarı biçimi | Kontrol anahtarının kontrol panelinizden 32 karakter olduğunu kontrol edin |
ERROR_KEY_DOES_NOT_EXIST |
Anahtar bulunamadı | Anahtarı şu tarihte doğrulayın:captchaai.com |
ERROR_ZERO_BALANCE |
Yetersiz bakiye | Hesabınızı doldurun |
ERROR_BAD_TOKEN_OR_PAGEURL |
Yanlış site anahtarı veya URL | Kurumsal bağlantı URL'sinden doğru k= değerini çıkarın |
ERROR_CAPTCHA_UNSOLVABLE |
Çözemedim | Site anahtarının Enterprise v2 olduğunu doğrulayın, tekrar deneyin |
| Jeton site tarafından reddedildi | Kullanıcı-Aracı uyumsuzluğu | Çözüm yanıtındaki user_agent'yi kullanın |
SSS
Enterprise v2 ile standart v2'yi nasıl tespit edebilirim?
Kurumsal v2, komut dosyasında veya bağlantı URL'sinde /recaptcha/enterprise/'den yüklenir. Standart v2, /recaptcha/api2/'yi kullanır.
Eylem parametresi gerekli mi?
Yalnızca bağlantı URL'si sa= içeriyorsa. Eğer yoksa, bunu CaptchaAI isteğinizden çıkarın.
Hedef site jetonumu neden reddediyor?
En yaygın olanı: Kullanıcı-Aracı uyumsuzluğu. Kurumsal v2 belirteçleri, çözümleyicinin Kullanıcı Aracısına bağlıdır. Her zaman anket yanıtında döndürülen user_agent değerini kullanın.
Bunu Puppeteer veya Oyun Yazarı ile kullanabilir miyim?
Evet. Site anahtarını sayfadan çıkarın, API aracılığıyla çözün ve ardından jetonu document.getElementById('g-recaptcha-response').innerHTML'ye enjekte edin.
Tipik çözüm süresi nedir?
Sunucu yüküne bağlı olarak 15–30 saniye.
reCAPTCHA v2 Enterprise'yi çözmeye başlayın
API anahtarınızı şu adresten alın:captchaai.comve v2 isteklerinize enterprise=1 ekleyin.