Teknik Açıklamalar

reCAPTCHA Kurumsal Değerlendirme API'sinin Ayrıntılı İncelemesi

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.js yerine .../recaptcha/enterprise.js kullanıyor
  • API nesnesi grecaptcha yerine grecaptcha.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.

İlgili Makaleler

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