Comparisons

reCAPTCHA v3 Enterprise ile Standart v3 Karşılaştırması

Kısa yanıt: entegrasyonunuz açısından iki sürüm arasındaki tek fark enterprise=1 parametresidir. Görünmez çalışma, 0,0 (bot) ile 1,0 (insan) arasındaki risk puanı ve zorunlu action alanı ikisinde de aynıdır.

Asıl fark sitenin arka ucunda başlar: Enterprise, site sahibine neden kodları, eylem başına eşik ve Account Defender gibi katmanlar verir. Siz bu katmanları görmezsiniz, yalnızca sonuçlarını yaşarsınız — dün 0,7 puanla geçen bir akış bugün 0,9 istiyor olabilir.


Sayfada reCAPTCHA v3 Enterprise nasıl tespit edilir

İkisi de görünmezdir; ayrım yalnızca kaynak kodundadır:

  • Script etiketi enterprise.js?render=KEY ise Enterprise, api.js?render=KEY ise standart v3.
  • JavaScript'te grecaptcha.enterprise.execute() çağrısı varsa Enterprise.
  • Sitekey her iki sürümde de render= parametresinden gelir, data-sitekey özniteliğinden değil.

Bu ayrımı kod içinde yapın, sürümü sabit yazmayın: bir site Enterprise'a geçtiğinde HTML dışında hiçbir sinyal değişmez, entegrasyonunuz token üretmeye devam eder ama site tarafında reddedilir.

import requests
import re

def detect_v3_version(url):
    html = requests.get(url).text

    if "enterprise.js" in html:
        version = "enterprise"
    elif "recaptcha/api.js" in html and "render=" in html:
        version = "standard"
    else:
        return None

    # Extract sitekey
    key_match = re.search(r'render[=:]\s*["\']?([A-Za-z0-9_-]{40})', html)
    sitekey = key_match.group(1) if key_match else None

    # Extract action
    action_match = re.search(r'action["\']?\s*[:=]\s*["\'](\w+)', html)
    action = action_match.group(1) if action_match else None

    return {"version": version, "sitekey": sitekey, "action": action}

Node.js tarafında aynı kontrol:

const axios = require("axios");

async function detectV3Version(url) {
  const { data: html } = await axios.get(url);

  const version = html.includes("enterprise.js")
    ? "enterprise"
    : html.includes("recaptcha/api.js") && html.includes("render=")
      ? "standard"
      : null;

  const keyMatch = html.match(/render[=:]\s*['"]?([A-Za-z0-9_-]{40})/);
  const actionMatch = html.match(/action['"]?\s*[:=]\s*['"](\w+)/);

  return {
    version,
    sitekey: keyMatch?.[1],
    action: actionMatch?.[1],
  };
}

reCAPTCHA v3 Enterprise çözme kodu: tek satır fark

Standart v3

method=userrecaptcha ve version=v3 ile gönderin, action değerini sayfadan okuduğunuzla eşleştirin, sonra res.php üzerinden sorgulayın.

import requests
import time

resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "version": "v3",
    "googlekey": sitekey,
    "action": "login",
    "pageurl": page_url
})
task_id = resp.text.split("|")[1]

for _ in range(60):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY", "action": "get", "id": task_id
    })
    if result.text.startswith("OK|"):
        token = result.text.split("|")[1]
        break

Enterprise v3

Aynı istek, tek ek alan:

import requests
import time

# Only difference: enterprise=1
resp = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "version": "v3",
    "enterprise": 1,
    "googlekey": sitekey,
    "action": "login",
    "pageurl": page_url
})
task_id = resp.text.split("|")[1]

for _ in range(60):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": "YOUR_API_KEY", "action": "get", "id": task_id
    })
    if result.text.startswith("OK|"):
        token = result.text.split("|")[1]
        break

Sürümü kendi tanıyan çözücü

Üretimde işe yarayan yapı budur: her istekte HTML'i kontrol eder, gerekiyorsa enterprise bayrağını ekler.

class V3AutoSolver:
    def __init__(self, api_key):
        self.api_key = api_key

    def solve(self, page_url, action=None):
        import re
        html = requests.get(page_url).text

        is_enterprise = "enterprise.js" in html
        key_match = re.search(r'render[=:]\s*["\']?([A-Za-z0-9_-]{40})', html)
        if not key_match:
            raise Exception("No v3 sitekey found")

        if not action:
            act_match = re.search(r'action["\']?\s*[:=]\s*["\'](\w+)', html)
            action = act_match.group(1) if act_match else "verify"

        params = {
            "key": self.api_key,
            "method": "userrecaptcha",
            "version": "v3",
            "googlekey": key_match.group(1),
            "action": action,
            "pageurl": page_url
        }
        if is_enterprise:
            params["enterprise"] = 1

        resp = requests.get("https://ocr.captchaai.com/in.php", params=params)
        if not resp.text.startswith("OK|"):
            raise Exception(f"Submit failed: {resp.text}")

        task_id = resp.text.split("|")[1]
        for _ in range(60):
            time.sleep(5)
            result = requests.get("https://ocr.captchaai.com/res.php", params={
                "key": self.api_key, "action": "get", "id": task_id
            })
            if result.text.startswith("OK|"):
                return result.text.split("|")[1]
            if result.text != "CAPCHA_NOT_READY":
                raise Exception(f"Solve error: {result.text}")
        raise Exception("Timed out")

Özellik karşılaştırması

Özellik Standart v3 Enterprise v3
Görünmez çalışma Evet Evet
Puan (0,0–1,0) Evet Evet
action parametresi Zorunlu Zorunlu
Neden kodları Hayır Evet
Eylem başına özel eşik Hayır Evet (Cloud Console üzerinden)
Parola sızıntısı tespiti Hayır Evet
Account Defender Hayır Evet
Dolandırıcılık önleme etiketleri Hayır Evet
Çok faktörlü doğrulama entegrasyonu Hayır Evet
Doğrulama uç noktası siteverify (ücretsiz) recaptchaenterprise.googleapis.com
Aylık kota 1 milyon değerlendirme ücretsiz Değerlendirme başına ücretlendirme
JS dosyası api.js?render=KEY enterprise.js?render=KEY
CaptchaAI parametreleri version=v3 version=v3 + enterprise=1

Enterprise puanlaması neden farklı davranıyor

Standart v3 tek bir küresel modelle çalışır; Enterprise aynı modelin üstüne siteye özel katmanlar koyar:

Puanlama yönü Standart Enterprise
Temel model Google'ın küresel modeli Küresel model + siteye özel sinyaller
Eşikler Tüm eylemler için tek eşik Eylem başına ayrı eşik (giriş=0,7, ödeme adımı=0,9)
Uyarlanabilir öğrenme Temel Sitenin trafik desenlerinden öğrenir
Puan ayrıntısı 0,0–1,0 (iki ondalık) Aynı aralık, daha ayrıntılı sinyaller
Yanlış pozitif yönetimi Elle eşik ayarı Neden kodlarıyla otomatik

Pratik sonuç: Enterprise'da doğru action göndermek daha kritiktir. Giriş formu için login yerine verify gönderirseniz token geçerli olur ama yanlış eşikle değerlendirilir ve reddedilir.

Neden kodları ne anlatır

Bu kodları CaptchaAI yanıtında göremezsiniz; token doğrulaması sırasında sitenin arka ucuna dönerler. Yine de anlamlarını bilmek, token'ın neden reddedildiğini teşhis etmenizi sağlar.

Kod Anlamı Otomasyonda karşılığı
AUTOMATION Otomatik davranış algılandı Test oturumu gerçek kullanıcı akışını izlemiyor
UNEXPECTED_ENVIRONMENT Olağandışı tarayıcı ortamı headless yapılandırmanızı gözden geçirin
TOO_MUCH_TRAFFIC Kaynaktan yüksek istek hacmi İstek sınırlama uygulayın, eşzamanlılığı düşürün
UNEXPECTED_USAGE_PATTERNS Anormal etkileşim deseni Adımlar arasına gerçekçi gecikme koyun
LOW_CONFIDENCE_SCORE Güvenilir puan için veri yetersiz Sayfada daha uzun etkileşim bırakın
SUSPECTED_CARDING Kart dolandırıcılığı deseni Çoğu otomasyon senaryosuyla ilgisiz
SUSPECTED_CHARGEBACK Ters ibraz deseni Çoğu otomasyon senaryosuyla ilgisiz

Bir senaryo: gece koşan ödeme adımı testleri

İstanbul'daki bir e-ticaret ekibi kendi mağazasının ödeme akışını her gece test ediyor. Paket aylardır sorunsuz çalışıyor, sonra bir sabah bütün koşular sepet adımında takılmış bulunuyor. Kodda değişen bir şey yok.

Değişen şey site: güvenlik ekibi reCAPTCHA v3'ü Enterprise'a taşımış ve checkout eşiğini yükseltmiş. Paket hâlâ yalnızca version=v3 gönderiyor. enterprise.js kontrolü eklenip action değeri grecaptcha.enterprise.execute() çağrısından okunduğunda koşular normale dönüyor. Kural basit: sürüm tespitini her koşuda yapın, action değerini sayfadan okuyun. Kendi mülkünüz dışındaki bir hedefte test ediyorsanız, topladığınız verinin KVKK kapsamına girip girmediğini önceden netleştirin.

Maliyet tarafında thread bazlı planlar bu senaryoya iyi oturur: fatura çözüm başına değil eşzamanlı thread başına hesaplanır, koşu sayısı arttığında aylık tutar sabit kalır. Küçük bir paket için BASIC ($15/ay, 5 thread) yeterlidir; paralel senaryolar büyüdüğünde ADVANCE ($90/ay, 50 thread) tipik sıçrama noktasıdır. Fiyatlar USD üzerindendir — kurdan bağımsız, öngörülebilir bir gider kalemi olması Türkiye'deki ekipler için ayrı bir avantaj.


Sorun giderme

Sorun Muhtemel sebep Düzeltme
Token Enterprise sitesinde reddedildi enterprise=1 eksik HTML'de enterprise.js arayıp bayrağı ekleyin
Enterprise'da düşük puan Yanlış action parametresi Eylem adını grecaptcha.enterprise.execute() çağrısından okuyun
Token testte çalışıyor, üretimde reddediliyor O eylem için eşik daha yüksek Üretimdeki gerçek action değerini doğrulayın
ERROR_WRONG_GOOGLEKEY Sitekey data-sitekey'den değil render parametresinden gelir Script URL'sinde render=KEY arayın
Token bir süre sonra reddediliyor Token'ın süresi doldu Token'ı çözümden sonra iki dakika içinde gönderin

Sık sorulan sorular

Enterprise v3 çözümü standarttan daha mı yavaş?

Hayır. CaptchaAI her iki sürümü de aynı userrecaptcha yöntemiyle işler; tek fark enterprise alanıdır. Çözüm süresi ve dönen token'ın yapısı aynıdır.

enterprise=1 göndermeyi unutursam ne olur?

İstek hata vermez; geçerli görünen bir token alırsınız ama site Enterprise doğrulama uç noktasında bunu reddeder. Hata API tarafında değil "form kabul edilmedi" biçiminde görünür, teşhisi de bu yüzden zorlaşır.

Standart bir siteye enterprise=1 gönderirsem sorun olur mu?

Evet, ters yönde aynı sorun. Bayrağı koşula bağlayın: sayfada enterprise.js yoksa parametreyi eklemeyin.

action değerini bulamıyorsam ne yapmalıyım?

Sayfa kaynağında grecaptcha.execute veya grecaptcha.enterprise.execute çağrılarını arayın; eylem adı çağrıdaki action alanındadır. Bulamazsanız verify yaygın bir varsayılandır, ama eylem başına eşiği olan Enterprise sitelerinde doğru değeri bulmak zorunlu sayılır.

CaptchaAI hCaptcha'yı da çözüyor mu?

Hayır. CaptchaAI hCaptcha ve FunCaptcha (Arkose Labs) desteklemiyor. Desteklenenler: reCAPTCHA v2/v3 (Enterprise varyantları dahil), Cloudflare Turnstile ve Cloudflare doğrulama akışı, GeeTest v3, görüntü/OCR, grid, BLS; ayrıca CaptchaFox (beta), Friendly Captcha (beta) ve Lemin (beta).


İlgili kılavuzlar

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