reCAPTCHA Enterprise, reCAPTCHA v3'yi ayrıntılı risk analizi, puan nedenleri, sahtekarlık tespit sinyalleri ve hesap savunma özellikleriyle genişleten, Google'ın premium CAPTCHA hizmetidir. Yalnızca puan ve eylem döndüren standart ücretsiz sürümün aksine Enterprise, belirli risk faktörleriyle açıklanabilir değerlendirmeler sağlar. Bu kılavuz, Kurumsal Değerlendirme API mimarisini, yanıt yapısını ve Kurumsal korumalı sitelerin otomasyonda nasıl ele alınacağını kapsar.
Kurumsal ve standart reCAPTCHA karşılaştırması
| Özellik | reCAPTCHA v3 (ücretsiz) | reCAPTCHA Kurumsal |
|---|---|---|
| Puanlama | 0,0-1,0 puan | 0,0-1,0 puan + puan nedenleri |
| Risk analizi | Temel | Ayrıntılı (dolandırıcılık sinyalleri, hesap bilgileri) |
| Puan nedenleri | Sağlanmadı | Puanı açıklayan özel nedenler |
| Hesap Savunucusu | Hayır | Evet (hesabın yaşam döngüsünü izler) |
| WAF entegrasyonu | Hayır | Evet (Cloudflare, Hızlı, F5) |
| Ekspres değerlendirme | Hayır | Evet (yalnızca sunucu tarafı, JS yok) |
| Şifre sızıntısı tespiti | Hayır | Evet |
| Fiyatlandırma | Ücretsiz (1 milyon değerlendirme/month) | 1000 değerlendirme başına 1 ABD doları (0-1 milyon ücretsiz) |
| API uç noktası | google.com/recaptcha/api/siteverify | recaptchaenterprise.googleapis.com |
Kurumsal Değerlendirme API akışı
Client-side:
1. Load reCAPTCHA Enterprise script
2. Call grecaptcha.enterprise.execute(SITE_KEY, {action: 'LOGIN'})
3. Receive token
4. Send token to your backend
Server-side:
1. Create assessment via Enterprise API
2. Receive detailed risk analysis
3. Make access decision based on score + reasons
4. Optionally annotate the assessment (report fraud/legitimate)
İstemci tarafı entegrasyonu
JavaScript SDK'sı
<script src="https://www.google.com/recaptcha/enterprise.js?render=SITE_KEY"></script>
<script>
grecaptcha.enterprise.ready(function() {
grecaptcha.enterprise.execute('SITE_KEY', { action: 'LOGIN' })
.then(function(token) {
// Send token to backend
fetch('/api/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token: token })
});
});
});
</script>
Standart reCAPTCHA v3'den temel farklar:
- Komut dosyası URL'si
.../recaptcha/api.jsyerine.../recaptcha/enterprise.jskullanıyor - API nesnesi
grecaptchayerinegrecaptcha.enterprise'dir execute()aynı belirteç biçimini döndürür
Sayfa kaynağında algılama
import requests
import re
def detect_recaptcha_enterprise(url):
"""Detect if a page uses reCAPTCHA Enterprise."""
html = requests.get(url, timeout=10).text
indicators = {
"is_enterprise": False,
"is_standard": False,
"site_key": None,
"actions": [],
}
# Enterprise detection
if "recaptcha/enterprise.js" in html:
indicators["is_enterprise"] = True
match = re.search(r"render=([A-Za-z0-9_-]+)", html)
if match:
indicators["site_key"] = match.group(1)
# Standard v3 detection
elif "recaptcha/api.js?render=" in html:
indicators["is_standard"] = True
match = re.search(r"render=([A-Za-z0-9_-]+)", html)
if match:
indicators["site_key"] = match.group(1)
# Extract action names
actions = re.findall(r"action:\s*['\"](\w+)['\"]", html)
indicators["actions"] = list(set(actions))
return indicators
print(detect_recaptcha_enterprise("https://staging.example.com/qa-login"))
Sunucu Tarafı Değerlendirme API'si
Değerlendirme oluşturma (Google Cloud API)
from google.cloud import recaptchaenterprise_v1
from google.cloud.recaptchaenterprise_v1 import Assessment
def create_assessment(project_id, site_key, token, action):
"""Create a reCAPTCHA Enterprise assessment."""
client = recaptchaenterprise_v1.RecaptchaEnterpriseServiceClient()
event = recaptchaenterprise_v1.Event()
event.site_key = site_key
event.token = token
event.expected_action = action
assessment = recaptchaenterprise_v1.Assessment()
assessment.event = event
request = recaptchaenterprise_v1.CreateAssessmentRequest()
request.assessment = assessment
request.parent = f"projects/{project_id}"
response = client.create_assessment(request)
return response
Değerlendirme yanıt yapısı
{
"name": "projects/123456/assessments/abcdef123",
"event": {
"token": "...",
"siteKey": "6Le...",
"expectedAction": "LOGIN",
"hashedAccountId": "abc123..."
},
"riskAnalysis": {
"score": 0.9,
"reasons": [
"AUTOMATION",
"TOO_MUCH_TRAFFIC"
],
"extendedVerdictReasons": [
"BROWSER_ERROR"
]
},
"tokenProperties": {
"valid": true,
"hostname": "example.com",
"action": "LOGIN",
"createTime": "2025-01-15T10:30:00Z",
"invalidReason": ""
},
"accountDefenderAssessment": {
"labels": ["PROFILE_MATCH"]
}
}
Kurumsal puan nedenleri
Enterprise, puanın neden düşük olduğunu açıklayan belirli nedenler sunar:
| Sebep | Açıklama | Puan etkisi |
|---|---|---|
AUTOMATION |
Otomatik kullanıcı aracısı veya headless tarayıcı algılandı | -0,3 ila -0,7 |
UNEXPECTED_ENVIRONMENT |
Tarayıcı veya cihaz ortamı tutarsızlıkları | -0,2 ila -0,4 |
TOO_MUCH_TRAFFIC |
Bu IP'den veya oturumdan gelen yüksek istek hacmi | -0,1 ila -0,3 |
UNEXPECTED_USAGE_PATTERNS |
Davranışsal sinyaller insan normlarından sapıyor | -0,2 ila -0,5 |
LOW_CONFIDENCE_SCORE |
Güvenilir bir değerlendirme yapmak için yeterli veri yok | Değişken |
SUSPECTED_CARDING |
İşlem modeli kredi kartı dolandırıcılığıyla eşleşiyor | -0,3 ila -0,6 |
SUSPECTED_CHARGEBACK |
İşlem sinyallerine bağlı ters ibraz riski | -0,2 ila -0,4 |
Genişletilmiş karar nedenleri (ek ayrıntı)
| Sebep | Açıklama |
|---|---|
BROWSER_ERROR |
CAPTCHA SDK'sındaki JavaScript yürütme hataları |
SITE_MISMATCH |
Doğrulanandan farklı site için oluşturulan jeton |
FAILED_TWO_FACTOR |
İki faktörlü kimlik doğrulama yakın zamanda başarısız oldu |
Hesap Savunucusu
Enterprise'ın Hesap Savunucusu, kullanıcı hesaplarını yaşam döngüleri boyunca izler:
{
"accountDefenderAssessment": {
"labels": [
"PROFILE_MATCH",
"SUSPICIOUS_LOGIN_ACTIVITY",
"SUSPICIOUS_ACCOUNT_CREATION",
"RELATED_ACCOUNTS_NUMBER_HIGH"
]
}
}
| Etiket | Anlamı |
|---|---|
PROFILE_MATCH |
Davranış, bu hesap için bilinen profille eşleşiyor |
SUSPICIOUS_LOGIN_ACTIVITY |
Oturum açma düzeni normalden farklı (yeni cihaz, konum) |
SUSPICIOUS_ACCOUNT_CREATION |
Hesap oluşturma otomatik görünüyor |
RELATED_ACCOUNTS_NUMBER_HIGH |
Aynı cihaza birden fazla hesap bağlı/session |
WAF entegrasyonu
reCAPTCHA Enterprise, ağ ucunda CAPTCHA zorlukları eklemek için WAF sağlayıcılarıyla entegre olur:
Cloudflare WAF entegrasyonu
Request arrives at Cloudflare edge
↓
Cloudflare WAF rule evaluates request
↓
Rule triggers reCAPTCHA Enterprise challenge
↓
Client solves CAPTCHA → token returned
↓
Cloudflare validates token via Enterprise API
↓
If valid + score above threshold → request forwarded to origin
F5 BÜYÜK-IP entegrasyonu
F5 iRule or policy evaluates request
↓
Triggers reCAPTCHA Enterprise challenge page
↓
Client solves → token validated server-side
↓
F5 forwards or blocks based on assessment score
Otomasyonda Enterprise reCAPTCHA'yı yönetme
CaptchaAI, Enterprise'ı standart reCAPTCHA ile aynı şekilde çözer
API çözücü perspektifinden bakıldığında, reCAPTCHA Enterprise belirteçleri standart reCAPTCHA belirteçleriyle aynı şekilde çalışır:
import requests
import time
API_KEY = "YOUR_API_KEY"
# Enterprise is solved with the same method
# The solver handles the Enterprise variant automatically
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": "6LcR_RsTAAAAAN_r0GEkGBfq3L7KmU5JbPHJtwNp",
"pageurl": "https://enterprise-site.com/login",
"enterprise": 1, # Flag for Enterprise variant
"json": 1,
})
task_id = submit.json()["request"]
for _ in range(60):
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:
token = result["request"]
print(f"Enterprise token: {token[:50]}...")
break
Node.js
const axios = require("axios");
async function solveEnterprise(sitekey, pageurl) {
const API_KEY = "YOUR_API_KEY";
const { data: submit } = await axios.post(
"https://ocr.captchaai.com/in.php",
new URLSearchParams({
key: API_KEY,
method: "userrecaptcha",
googlekey: sitekey,
pageurl: pageurl,
enterprise: 1,
json: 1,
})
);
const taskId = submit.request;
for (let i = 0; i < 60; i++) {
await new Promise(r => setTimeout(r, 5000));
const { data: result } = await axios.get(
"https://ocr.captchaai.com/res.php",
{ params: { key: API_KEY, action: "get", id: taskId, json: 1 } }
);
if (result.status === 1) return result.request;
}
throw new Error("Timeout");
}
Hedef sayfada Kurumsal ve standart nasıl tespit edilir
def identify_recaptcha_version(html):
"""Determine which reCAPTCHA version a page uses."""
if "recaptcha/enterprise.js" in html:
return "enterprise"
elif "recaptcha/api.js?render=" in html:
return "v3"
elif "g-recaptcha" in html and 'data-size="invisible"' in html:
return "v2_invisible"
elif "g-recaptcha" in html:
return "v2"
else:
return "none"
Kurumsal sorun giderme
| Sorun | Teşhis | Çözüm |
|---|---|---|
| Belirteç Enterprise API tarafından reddedildi | Kurumsal site için standart yöntemi kullanma | Çözücü isteğine enterprise=1 ekleyin |
| Geçerli jetona rağmen her zaman 0,1 puan alın | Eylem parametresi uyuşmazlığı | action'nin sayfanın gönderdiğiyle eşleştiğini doğrulayın |
| Nedenlerde "SITE_MISMATCH" | Yanlış alan adı için jeton oluşturuldu | pageurl'nin hedefle tam olarak eşleştiğinden emin olun |
| Puan nedenlerinde "OTOMASYON" | Çözücü ortamı algılandı | CaptchaAI bunu hallediyor; devam ederse desteğe başvurun |
| Jeton geçerli ancak site hâlâ engelliyor | Site CAPTCHA'nın ötesinde ek kontroller kullanıyor | Diğer bot algılama katmanlarını (WAF, test profil yapılandırması) kontrol edin |
Sık sorulan sorular
reCAPTCHA Enterprise'ı çözmek standart reCAPTCHA'ya göre daha mı zor?
Token oluşturma süreci aynıdır. Enterprise, sunucu tarafı analiz özellikleri ekler (puan nedenleri, Hesap Savunucusu) ancak istemci tarafındaki zorluk aynıdır. API çözücüler, kurumsal sürümler için belirteçleri standart sürümlerde yaptıklarıyla aynı şekilde oluşturur.
Kurumsal CAPTCHA'ları çözmek için bir Google Cloud hesabına ihtiyacım var mı?
Hayır. Hedef web sitelerinde Kurumsal CAPTCHA'ları çözen bir otomasyon geliştiricisi olarak, yalnızca sayfadaki sitekey'ye ve CaptchaAI gibi bir API çözücüye ihtiyacınız vardır. Değerlendirmeleri doğrulamak için CAPTCHA çözücünün değil, web sitesi operatörünün Google Cloud hesabına ihtiyacı vardır.
Bir sitenin Enterprise reCAPTCHA mı yoksa standart reCAPTCHA mı kullandığını nasıl anlarım?
Komut dosyası URL'sini kontrol edin. Kurumsal recaptcha/enterprise.js'yi kullanırken standart recaptcha/api.js'yi kullanır. JavaScript API nesne adı da farklıdır: grecaptcha.enterprise.execute() ve grecaptcha.execute().
Kurumsal puan nedenleri otomasyonumu iyileştirmek için kullanılabilir mi?
Hedef siteyi işletiyorsanız (kendi CAPTCHA uygulamanızı test ediyorsanız), evet — nedenler size hangi algılama sinyallerinin tetiklendiğini gösterir. CAPTCHA'ları üçüncü taraf sitelerde çözüyorsanız nedenleri siz göremezsiniz; bunları yalnızca site operatörü görür.
Özet
reCAPTCHA Enterprise, standart reCAPTCHA'yı ayrıntılı risk analizi, puan nedenleri, Account Defender ve WAF entegrasyonuyla genişletiyor. Otomasyon açısından bakıldığında, Kurumsal CAPTCHA'lar standart reCAPTCHA ile aynı şekilde çözülür; enterprise=1 parametresiniCaptchaAIAPI isteği. Sayfa kaynağında recaptcha/enterprise.js olup olmadığını kontrol ederek Enterprise'ı tespit edin. Temel operasyonel fark, doğru enterprise bayrağını geçirmenizi ve action parametresini eşleştirmenizi sağlamaktır.