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=KEYise Enterprise,api.js?render=KEYise 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
- standart ve Enterprise v3'ün pratik karşılaştırması — çözüm odaklı bakış
- v2 ve v3'ü birlikte ele alan Enterprise kılavuzu — geniş anlatım
- standart v3'ü API ile çözme adımları — temel akış
- Enterprise v3'ü API ile çözme adımları —
enterprise=1akışı -
Enterprise risk puanlamasının işleyişi — puanlama ayrıntıları
-
Enterprise ve standart reCAPTCHA'yı karşılaştıran tam kılavuz
- risk puanlaması nasıl hesaplanır
- Enterprise v3 için API entegrasyonu
- standart ve Enterprise v3 karşılaştırması