Sorun Giderme

Yaygın reCAPTCHA v2 Kurumsal Hataları ve Düzeltmeleri

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

  1. Uygulama türünü doğrulayın — komut dosyası etiketinde enterprise.js olup olmadığını kontrol edin
  2. CaptchaAI isteğinize enterprise=1 ekleyin
  3. data-s'yi kontrol edin — sayfa bu özelliğe sahipse ekleyin
  4. 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.


İlgili kılavuzlar

Bu makale için yorumlar devre dışı bırakılmıştır.