reCAPTCHA v2 Enterprise, standart v2 ile aynı nedenlerle (yanlış site anahtarı, hatalı sayfa URL'si, süresi dolmuş belirteçler) ve ayrıca Kuruluşa özgü birkaç sorun nedeniyle başarısız oluyor. Enterprise'ın en büyük sorunu uygulamayı yanlış tanımlamak: Enterprise widget'ına karşı standart v2 parametrelerini kullanmak veya tam tersi. Bir Enterprise widget'ı için method=userrecaptcha'yi enterprise=1 bayrağı olmadan gönderirseniz, döndürülen jeton, hedef sitenin arka ucu tarafından reddedilecektir.
Bu kılavuz, reCAPTCHA v2 Enterprise'yi CaptchaAI API aracılığıyla çözerken karşılaşılan tüm yaygın hataları kapsar. Standart mı yoksa Enterprise mı ile uğraştığınızdan emin değilseniz, okuyunreCAPTCHA Kurumsal Uygulaması Nasıl Belirlenir?Birinci.
reCAPTCHA v2 Enterprise'nin standarttan farkı nedir?
| Özellik | Standart v2 | Kurumsal v2 |
|---|---|---|
| Komut dosyası URL'si | google.com/recaptcha/api.js |
google.com/recaptcha/enterprise.js |
| JS nesnesi | grecaptcha |
grecaptcha.enterprise |
| Doğrulama uç noktası | google.com/recaptcha/api/siteverify |
recaptchaenterprise.googleapis.com |
| CaptchaAI parametresi | method=userrecaptcha |
method=userrecaptcha + enterprise=1 |
data-s parametresi |
Hiç kullanılmadı | Bazen mevcut (ek jeton) |
Kuruluşa özgü hatalar
Enterprise widget'ı için standart parametreler gönderme
Belirti: API bir belirteç döndürüyor ancak hedef site bunu reddediyor.
Neden: Görevi enterprise=1 olmadan gönderdiniz. CaptchaAI bunu standart v2 olarak çözdü, ancak arka uç, standart belirteçleri reddeden Enterprise API'ye göre doğrulama yapıyor.
Düzeltme: İsteğinize enterprise=1 ekleyin:
import requests
response = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": "6LcR_RsTAAAAAFJR-JhNbC6CC42wKCbR9Hq_kVCd",
"pageurl": "https://staging.example.com/qa-login",
"enterprise": 1,
"json": 1
})
data = response.json()
task_id = data["request"]
const params = new URLSearchParams({
key: "YOUR_API_KEY",
method: "userrecaptcha",
googlekey: "6LcR_RsTAAAAAFJR-JhNbC6CC42wKCbR9Hq_kVCd",
pageurl: "https://staging.example.com/qa-login",
enterprise: 1,
json: 1,
});
const res = await fetch(`https://ocr.captchaai.com/in.php?${params}`);
const data = await res.json();
const taskId = data.request;
Eksik data-s parametresi
Belirti: ERROR_BAD_PARAMETERS veya jeton site tarafından reddedildi.
Neden: Bazı Kurumsal uygulamalar, reCAPTCHA div'de bir data-s özelliği içerir. Bu, çözüm için gereken ek bir oturum belirtecidir. Varsa, onu eklemelisiniz.
Düzeltme: data-s sayfasını kontrol edin ve bulunursa ekleyin:
# Look for: <div class="g-recaptcha" data-sitekey="..." data-s="..."></div>
response = requests.get("https://ocr.captchaai.com/in.php", params={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": page_url,
"enterprise": 1,
"data-s": data_s_value, # Include if present on the page
"json": 1
})
Yanlış komut dosyası tanımlama
Belirti: Belirteç tutarsız çalışıyor veya her zaman reddediliyor.
Neden: Widget'ı Kurumsal olduğunda standart olarak tanımladınız (veya tam tersi).
Düzeltme: Sayfa HTML'sindeki komut dosyası kaynağını kontrol edin:
// Enterprise uses enterprise.js
// <script src="https://www.google.com/recaptcha/enterprise.js?render=SITEKEY"></script>
// Standard uses api.js
// <script src="https://www.google.com/recaptcha/api.js"></script>
// Also check the JS object:
// Enterprise: grecaptcha.enterprise.render(...)
// Standard: grecaptcha.render(...)
Genel hatalar (standart v2 ile paylaşılır)
| Hata Kodu | Sebep | Düzeltme |
|---|---|---|
ERROR_WRONG_USER_KEY |
Geçersiz API anahtarı biçimi | Doğrulama tarihi:captchaai.com/api.php |
ERROR_KEY_DOES_NOT_EXIST |
API anahtarı bulunamadı | Fazladan boşluk veya eksik karakter olup olmadığını kontrol edin |
ERROR_ZERO_BALANCE |
Bakiye yok | Hesabınızı doldurun |
ERROR_PAGEURL |
pageurl eksik |
Tam sayfa URL'sini ekleyin |
ERROR_GOOGLEKEY |
Hatalı biçimlendirilmiş site anahtarı | data-sitekey'den yeniden çıkartın |
ERROR_BAD_TOKEN_OR_PAGEURL |
Sitekey/URL uyumsuzluğu | iframe bağlamını kontrol edin |
CAPCHA_NOT_READY |
Hala çözülüyor | 5 saniye bekleyin, tekrar anket yapın |
ERROR_CAPTCHA_UNSOLVABLE |
Çözülemiyor | Yeni bir görev gönder |
Hata işlemeyle komple çözüm akışı
import requests
import time
def solve_recaptcha_v2_enterprise(api_key, sitekey, page_url, data_s=None):
params = {
"key": api_key,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": page_url,
"enterprise": 1,
"json": 1
}
if data_s:
params["data-s"] = data_s
response = requests.get("https://ocr.captchaai.com/in.php", params=params)
data = response.json()
if data.get("status") != 1:
raise RuntimeError(f"Submit failed: {data.get('request')}")
task_id = data["request"]
for _ in range(40):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key, "action": "get", "id": task_id, "json": 1
}).json()
if result.get("status") == 1:
return result["request"]
if result.get("request") == "CAPCHA_NOT_READY":
continue
raise RuntimeError(f"Solve failed: {result.get('request')}")
raise TimeoutError("Solve timed out after 200 seconds")
token = solve_recaptcha_v2_enterprise("YOUR_API_KEY", "SITEKEY", "https://staging.example.com/qa-login")
async function solveRecaptchaV2Enterprise(apiKey, sitekey, pageUrl, dataS) {
const params = new URLSearchParams({
key: apiKey, method: "userrecaptcha", googlekey: sitekey,
pageurl: pageUrl, enterprise: 1, json: 1,
});
if (dataS) params.set("data-s", dataS);
const submitRes = await fetch(`https://ocr.captchaai.com/in.php?${params}`);
const submitData = await submitRes.json();
if (submitData.status !== 1) throw new Error(`Submit failed: ${submitData.request}`);
const taskId = submitData.request;
for (let i = 0; i < 40; i++) {
await new Promise(r => setTimeout(r, 5000));
const res = await fetch(`https://ocr.captchaai.com/res.php?${new URLSearchParams({
key: apiKey, action: "get", id: taskId, json: 1,
})}`);
const data = await res.json();
if (data.status === 1) return data.request;
if (data.request === "CAPCHA_NOT_READY") continue;
throw new Error(`Solve failed: ${data.request}`);
}
throw new Error("Timed out after 200s");
}
SSS
Bir sitenin reCAPTCHA Enterprise mı yoksa standart mı kullandığını nasıl anlarım?
HTML'deki komut dosyası etiketini kontrol edin. Kurumsal recaptcha/enterprise.js'yi yüklerken standart recaptcha/api.js'yi yükler. JavaScript nesnesi de farklıdır: Kurumsal grecaptcha.enterprise'yi kullanırken standart grecaptcha'yi kullanır.
Enterprise için API çağrımı değiştirmem gerekiyor mu?
Evet. CaptchaAI isteğinize enterprise=1 ekleyin. Bu bayrak olmadan belirteç, Kurumsal arka uçların reddettiği standart v2 için oluşturulur.
data-s parametresi nedir?
Bazı Kurumsal uygulamalar, reCAPTCHA div'de bir data-s özelliği içerir. Bu ek bir oturum belirtecidir. Sayfada mevcutsa bunu API isteğinize ekleyin.
Enterprise jetonum, kurumsal=1 olmasına rağmen neden reddediliyor?
Üç şeyi kontrol edin: (1) site anahtarının doğru olduğunu, (2) data-s parametresinin sayfada mevcut olduğunu ancak isteğinizde eksik olduğunu veya (3) siz formu göndermeden önce jetonun süresinin dolduğunu.
Standart ve Enterprise v2 için aynı kodu kullanabilir miyim?
Evet — geçişe enterprise=1 ekleyin. Diğer her şey (yöntem adı, parametreler, yoklama) aynı kalır.
Kurumsal iş akışınızı düzeltin
- Uygulama türünü doğrulayın — komut dosyası etiketinde
enterprise.jsolup olmadığını kontrol edin - CaptchaAI isteğinize
enterprise=1ekleyin data-s'yi kontrol edin — sayfa bu özelliğe sahipse ekleyin- Belirteci hemen gönderin — Kurumsal belirteçlerin geçerliliği de yaklaşık 2 dakika sonra sona erer
API anahtarınızı şu adresten alın:captchaai.com/api.php.