GeeTest v3'ü otomatikleştirmeye çalışan çoğu geliştirici tek bir token arar ve bulamaz. reCAPTCHA'da tek g-recaptcha-response her şeyi hallederken, GeeTest v3 size üç ayrı değer üretir ve bunları doğru sırada toplamanız gerekir:
geetest_challenge— değiştirilmiş challenge token'ıgeetest_validate— doğrulama karmasıgeetest_seccode— güvenlik kodu
Bunun için önce protokolü anlamak gerekir. Aşağıda akışı kayıt adımından doğrulamaya kadar ayırıyor ve CaptchaAI'nin nereye girdiğini gösteriyoruz.
Protokolün iki aşaması
GeeTest v3 iki aşamada çalışır: biri sunucuda sessizce olur, diğeri kullanıcının gördüğü kaydırıcıyı ve doğrulamayı kapsar.
Kayıt aşaması (sunucu tarafı)
Sitenin arka ucu, yeni bir doğrulama oturumu açmak için GeeTest ile konuşur:
Site Backend → GeeTest Server: "Give me a challenge for this user"
GeeTest Server → Site Backend: { gt, challenge, new_captcha }
Site Backend → Browser: Passes gt and challenge to the page
Doğrulama aşaması (istemci + sunucu tarafı)
Tarayıcı bileşeni oluşturur, kullanıcı çözer ve sonuç sunucuda yeniden doğrulanır:
Browser: Renders slider/puzzle using gt + challenge
User: Solves the challenge
Browser → Site Backend: { geetest_challenge, geetest_validate, geetest_seccode }
Site Backend → GeeTest Server: Verifies the three values
GeeTest Server → Site Backend: { result: "success" }
Adım 1: kayıt API çağrısı
Arka uç, GeeTest'in kayıt uç noktasını çağırır:
GET https://api.geetest.com/register.php?gt=GT_ID&json_format=1
- Dönen yanıt:
{
"success": 1,
"gt": "81dc9bdb52d04dc20036dbd8313ed055",
"challenge": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"new_captcha": true
}
| Parametre | Anlamı |
|---|---|
gt |
GeeTest kimliği — sitenin GeeTest hesabını tanımlar |
challenge |
Bu oturuma özel, tek kullanımlık challenge token'ı |
new_captcha |
Yeni CAPTCHA biçiminin kullanılıp kullanılmayacağı |
Kritik nokta: challenge değeri tek kullanımlıktır ve kısa ömürlüdür. Her sayfa yüklemesi yeni bir değer üretir; bayat bir değerle çözüm gönderemezsiniz.
Adım 2: widget'ın oluşturulması
Tarayıcı gt ve challenge'yi alır ve GeeTest bileşenini başlatır:
initGeetest({
gt: "81dc9bdb52d04dc20036dbd8313ed055",
challenge: "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
offline: false,
new_captcha: true,
product: "float"
}, function(captchaObj) {
captchaObj.appendTo('#captcha-container');
captchaObj.onSuccess(function() {
var result = captchaObj.getValidate();
// result contains: geetest_challenge, geetest_validate, geetest_seccode
});
});
Adım 3: challenge türleri
GeeTest v3 birden fazla doğrulama türü sunar ve hangisinin çıkacağına kendisi karar verir:
| Tür | Kullanıcı eylemi | Açıklama |
|---|---|---|
| Kaydırıcı | Yapboz parçasını sürükleyin | Resmi tamamlamak için parçayı yerine oturtun |
| Simge tıklama | Simgelere sırayla tıklayın | Gösterilen sırayla belirli simgeleri seçin |
| Kelime tıklama | Karakterlere tıklayın | Çince karakterleri doğru sırayla tıklayın |
| Uzamsal | Tıklayın/seçin | Uzamsal akıl yürütme doğrulaması |
Türü, sitenin yapılandırmasına ve kullanıcı risk profiline göre GeeTest belirler; kod tarafında hepsine hazır olun.
Adım 4: çözüm değerleri
Doğrulama tamamlanınca bileşen üç değer üretir:
{
"geetest_challenge": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6xy",
"geetest_validate": "abc123def456_validate",
"geetest_seccode": "abc123def456_validate|jordan"
}
| Değer | Açıklama |
|---|---|
geetest_challenge |
Değiştirilmiş challenge token'ı (orijinal + 2 ek karakter) |
geetest_validate |
Doğrulama karması |
geetest_seccode |
Güvenlik kodu (validate + \|jordan son eki) |
Adım 5: sunucu tarafı doğrulama
Arka uç, bu üç değeri son onay için GeeTest'e geri gönderir:
POST https://api.geetest.com/validate.php
seccode=abc123def456_validate|jordan
&challenge=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6xy
&sdk=geetest-python-3.0.0
- GeeTest yanıtı:
{
"seccode": "abc123def456_validate",
"validate": "abc123def456_validate"
}
CaptchaAI için gt ve challenge parametrelerini çıkarma
CaptchaAI'ye görev göndermeden önce sayfadan yalnızca gt ve challenge'yi toplarsınız. Aracınıza göre üç yol var:
- Yöntem 1 — kayıt yanıtını yakalama: ağ trafiğini dinleyip register çağrısını okuyun.
from playwright.sync_api import sync_playwright
import json
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
geetest_params = {}
def handle_response(response):
if "register" in response.url and "geetest" in response.url:
data = response.json()
geetest_params["gt"] = data.get("gt")
geetest_params["challenge"] = data.get("challenge")
page.on("response", handle_response)
page.goto("https://staging.example.com/qa-login")
# Wait for GeeTest to load
page.wait_for_selector(".geetest_holder")
print(f"gt: {geetest_params.get('gt')}")
print(f"challenge: {geetest_params.get('challenge')}")
- Yöntem 2 — sayfa DOM'undan okuma: değerler öznitelik olarak duruyorsa doğrudan okuyun.
gt = page.evaluate("() => document.querySelector('[data-gt]')?.dataset.gt")
challenge = page.evaluate("() => document.querySelector('[data-challenge]')?.dataset.challenge")
- Yöntem 3 — initGeetest çağrısını ayıklama: sayfa kaynağında çağrıyı düzenli ifadeyle arayın.
import re
source = page.content()
gt_match = re.search(r"gt['\"]?\s*[:=]\s*['\"]([a-f0-9]{32})['\"]", source)
challenge_match = re.search(r"challenge['\"]?\s*[:=]\s*['\"]([a-f0-9]{32})['\"]", source)
GeeTest v3'ü CaptchaAI ile çözme
Çıkardığınız parametreleri method=geetest ile gönderin:
POST https://ocr.captchaai.com/in.php
key=YOUR_API_KEY
&method=geetest
>=81dc9bdb52d04dc20036dbd8313ed055
&challenge=a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6
&pageurl=https://staging.example.com/qa-login
&json=1
- Sonucu sorgulama:
GET https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=TASK_ID&json=1
- CaptchaAI yanıtı:
{
"status": 1,
"request": {
"geetest_challenge": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6xy",
"geetest_validate": "abc123def456_validate",
"geetest_seccode": "abc123def456_validate|jordan"
}
}
Sitenin doğrulama adımı için gereken üç değeri tek yanıtta alırsınız. Pratikte:
- GeeTest v3, CaptchaAI'de genel kullanıma açık bir türdür; tipik çözüm süresi 12 saniyenin altındadır.
- Faturalama thread bazlıdır: BASIC ($15/ay, 5 thread) planı, düşük hacimli bir Istanbul e-ticaret ekibinin login veya checkout akışını doğrulamaya yeter.
- Kazınan veriler kişisel veri içeriyorsa KVKK kapsamındasınız; otomasyonu yalnızca yetkili QA akışlarında kullanın.
Yaygın sorunlar ve çözümleri
| Sorun | Sebep | Düzeltme |
|---|---|---|
challenge değeri boş geliyor |
Kayıt adımı başarısız oldu | Sitenin GeeTest'i doğru yükleyip yüklemediğini kontrol edin |
| Çözüm reddedildi | Challenge'ın süresi doldu | Taze challenge'yi çıkarıp hemen çözün |
Yanlış gt değeri |
Sayfada birden fazla GeeTest örneği var | gt'yi doğru bileşenden çıkarın |
| Üç değer döndü ama form gitmiyor | Eksik form alanları | Üç değeri de doğru girişlere yerleştirin |
Çevrimiçi ve çevrimdışı mod farkı
GeeTest v3, sunuculara erişilemediğinde devreye giren bir yedek moda sahiptir:
| Mod | success değeri |
Davranış |
|---|---|---|
| Çevrimiçi | 1 |
GeeTest sunucularıyla normal challenge-response |
| Çevrimdışı | 0 |
Basitleştirilmiş yerel doğrulama |
Çevrimdışı modda challenge yerel olarak üretilir ve doğrulama daha basittir. Üretimdeki sitelerin büyük çoğunluğu çevrimiçi modu kullanır.
Sık sorulan sorular
CaptchaAI GeeTest v3'ü destekliyor mu, hangi method ile?
Evet. GeeTest v3 genel kullanıma açık bir türdür ve method=geetest ile gönderilir. Yanıt olarak geetest_challenge, geetest_validate ve geetest_seccode değerlerini alırsınız.
GeeTest v4'ü de çözebilir miyim?
Henüz değil. GeeTest v4 desteği çok yakında planlanıyor; şu an yalnızca v3 üretimde kullanılabilir.
Bir GeeTest çözümü ne kadar sürer?
GeeTest v3 için tipik çözüm süresi 12 saniyenin altındadır ve desteklenen türlerde başarı oranı yüksektir. Süre ortama ve hacme göre değişebilir.
GeeTest v3 çözümü ayrıca ücretlendiriliyor mu?
Hayır. CaptchaAI thread bazlı faturalandırır; plan içinde CAPTCHA türüne göre ücret yoktur. BASIC ($15/ay, 5 thread) ile başlayabilirsiniz.
İlgili makaleler
- Node.js ile GeeTest v3 çözme rehberi
- CaptchaAI ile Node.js üzerinde GeeTest v3
- reCAPTCHA Enterprise değerlendirme API'sinin ayrıntılı incelemesi
Sonraki adımlar
GeeTest v3'ün üç değerli yanıtını iş akışınıza bağlayın — CaptchaAI API anahtarınızı alın ve method=geetest ile ilk çözümünüzü gönderin.