Bir sayfada GeeTest v4 ile karşılaştınız ve mevcut otomasyon akışınızın kırılacağından mı endişeleniyorsunuz? Önce net konuşalım: CaptchaAI bugün GeeTest v3'ü yüksek başarı oranıyla çözüyor; GeeTest v4 desteği ise çok yakında geliyor, henüz genel kullanıma açık değil. Bu yazıda v4'ün v3'ten mimari olarak nerede ayrıldığını, bir sitenin hangi sürümü çalıştırdığını nasıl tespit edeceğinizi ve v4 yayına girdiğinde entegrasyon akışının nasıl görüneceğini adım adım göreceksiniz.
GeeTest, Türkiye'deki e-ticaret ve fintech ekosisteminde giriş ve ödeme akışlarını koruyan yaygın bir doğrulama katmanıdır. Bu yüzden QA ve veri kazıma ekipleri için "site hangi GeeTest sürümünü kullanıyor?" sorusu pratik bir öneme sahiptir — çünkü çözüm yaklaşımı sürüme göre tamamen değişir.
GeeTest v3 ile v4 arasındaki temel farklar
| Özellik | GeeTest v3 | GeeTest v4 |
|---|---|---|
| Başlatma | Sunucudan gelen gt + challenge |
Yalnızca captcha_id |
| Doğrulama parametresi | API çağrısıyla alınır | İstemci tarafında üretilir |
| Doğrulama türleri | Kaydırma, tıklama | Kaydırma, tıklama, simge seçme, uzamsal akıl yürütme |
| Doğrulama | Sunucu challenge değerini döndürür |
lot_number + pass_token kullanır |
| API uç noktası | api.geetest.com |
gcaptcha4.geetest.com |
| Zorluk ölçekleme | Sabit | Riske göre uyarlanır |
Özetle v4'ün getirdiği üç temel değişiklik:
- Başlatma tek bir
captcha_idile yapılır;gt+challengeikilisi kalkar. - Doğrulama verisi artık istemci tarafında üretilir, sunucudan hazır gelmez.
- Zorluk sabit değildir; oturumun risk skoruna göre uyarlanır.
GeeTest v4'ün eklediği yeni doğrulama türleri
v4, v3'teki iki türün üzerine iki yeni tür daha ekler; hepsi aynı captcha_id akışından geçer:
- Kaydırmalı bulmaca: klasik "parçayı yerine sürükle" doğrulaması. v3'ten tanıdık ve en yaygın türdür.
- Tıklayarak seçim: kullanıcı belirli nesneleri tıklar (ör. "tüm yüzleri seçin"). Simge tanımaya dayanır.
- Uzamsal akıl yürütme: v4 ile gelen yeni tür — şekiller uzamsal bir düzende yerleştirilir, v3'e göre belirgin biçimde daha karmaşıktır.
- Simge eşleştirme: belirli bir sırayla gösterilen simgelerin eşleştirilmesi. Elle otomatikleştirmesi en zor türlerden biridir.
Hangi tür çıkarsa çıksın entegrasyon akışı değişmez: v4 desteği yayına girdiğinde CaptchaAI API'si türe özgü mantığı sizin yerinize soyutlayacak. Bugün ise CaptchaAI GeeTest v3'ü çözüyor; v4 çok yakında.
Bir sayfanın GeeTest v4 kullanıp kullanmadığını tespit etme
GeeTest v4'ü v3'ten ayırmak sürüm tespitiyle başlar. Sayfa kaynağındaki şu sinyallere bakın:
gcaptcha4.geetest.comisteği veyagt4.jsbetiği görüyorsanız → site v4 çalıştırıyordur.- Klasik
api.geetest.comuç noktasını ve birchallengeparametresini görüyorsanız → elinizdeki v3'tür.
Betikler çoğunlukla JavaScript ile geç yüklendiğinden, tespiti ham HTML üzerinde değil işlenmiş sayfa üzerinde yapmak gerekir. Aşağıdaki Selenium örneği captcha_id değerini ayıklar ve sürümü doğrular.
# extract_geetest_v4.py
import re
from selenium import webdriver
def extract_geetest_v4_params(url):
"""Extract GeeTest v4 captcha_id from a page."""
driver = webdriver.Chrome()
driver.get(url)
page_source = driver.page_source
# GeeTest v4 uses captcha_id instead of gt
match = re.search(r'captcha_id["\']?\s*[:=]\s*["\']([a-f0-9]+)', page_source)
captcha_id = match.group(1) if match else None
# Check for v4-specific script
is_v4 = "gcaptcha4" in page_source or "gt4.js" in page_source
driver.quit()
return {
"captcha_id": captcha_id,
"is_v4": is_v4,
"pageurl": url,
}
# Usage
params = extract_geetest_v4_params("https://staging.example.com/qa-login")
print(f"Captcha ID: {params['captcha_id']}")
print(f"Is v4: {params['is_v4']}")
Örnekte bilinçli olarak bir staging QA adresi kullanıldı; bu tespit betiklerini yalnızca yetkiniz olan ortamlarda çalıştırın. Kişisel veri içeren akışlarda çalışıyorsanız, bu adımların KVKK kapsamındaki yetkili QA ve veri toplama süreçlerine dahil olduğundan emin olun.
GeeTest v4 çözümü neden "çok yakında"?
GeeTest v4, CaptchaAI yol haritasında yer alıyor ancak henüz genel kullanıma açık değil — bu tür yalnızca "çok yakında" olarak tanımlanabilir. Aşağıdaki entegrasyon, v4 yayına girdiğinde kullanacağınız planlanan akışı gösterir; kodunuzu şimdiden bu yapıya göre hazırlayabilirsiniz. Bugün için pratik yol haritası şu:
- Üretimde GeeTest v3'ü kullanın; CaptchaAI v3'ü genellikle 12 saniyenin altında ve yüksek başarı oranıyla çözüyor.
- v4 kodunuzu şimdiden yazın, ama
version: "4"çağrıları destek yayına girene kadar sonuç döndürmez. - Güncel durumu her zaman CaptchaAI'nin desteklediği türler sayfasından doğrulayın.
# solve_geetest_v4.py
import requests
import time
import os
def solve_geetest_v4(captcha_id, pageurl):
"""Submit GeeTest v4 to CaptchaAI and get solution."""
api_key = os.environ["CAPTCHAAI_API_KEY"]
# Submit task
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": api_key,
"method": "geetest",
"gt": captcha_id, # captcha_id maps to the gt parameter
"pageurl": pageurl,
"version": "4", # Specify v4 explicitly
"json": 1,
}, timeout=30)
result = resp.json()
if result.get("status") != 1:
raise RuntimeError(f"Submit failed: {result.get('request')}")
task_id = result["request"]
# Poll for result
time.sleep(10)
for _ in range(30):
resp = requests.get("https://ocr.captchaai.com/res.php", params={
"key": api_key,
"action": "get",
"id": task_id,
"json": 1,
}, timeout=15)
data = resp.json()
if data.get("status") == 1:
return data["request"] # Contains validation tokens
if data["request"] != "CAPCHA_NOT_READY":
raise RuntimeError(data["request"])
time.sleep(5)
raise TimeoutError("GeeTest v4 solve timeout")
# Usage
solution = solve_geetest_v4(
captcha_id="abc123def456",
pageurl="https://staging.example.com/qa-login",
)
print(f"Solution: {solution}")
CaptchaAI'nin thread tabanlı planları, GeeTest v3 dahil desteklenen tüm türleri kapsar; günlük kota, çözüm başına ücret veya CAPTCHA türüne göre ek ücret yoktur. BASIC ($15/ay, 5 thread) ile başlayıp hacminiz büyüdükçe üst planlara geçebilirsiniz. USD bazlı sabit aylık fiyatlandırma, TL dalgalanmasına karşı öngörülebilir bir maliyet planlaması sağladığı için Türkiye'deki ekipler açısından pratik bir avantajdır.
Çözüm token'larının sayfaya enjekte edilmesi
v4, v3'ten farklı token'lar döndürür: lot_number, pass_token, gen_time ve captcha_output. Çözüm geldiğinde bu alanları gizli form girdilerine yazmanız ve mevcutsa doğrulama callback'ini tetiklemeniz gerekir. Aşağıdaki yardımcı fonksiyon, dönen değeri JSON olarak ayrıştırır ve token'ları sayfaya enjekte eder.
# inject_geetest_v4.py
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
def inject_geetest_v4_solution(driver, solution):
"""Inject GeeTest v4 solution tokens into the page."""
# Parse solution — v4 returns different tokens than v3
if isinstance(solution, str):
try:
solution = json.loads(solution)
except json.JSONDecodeError:
pass
# GeeTest v4 validation uses lot_number, pass_token, gen_time, captcha_output
driver.execute_script("""
var solution = arguments[0];
// Set hidden form fields
var fields = {
'lot_number': solution.lot_number,
'pass_token': solution.pass_token,
'gen_time': solution.gen_time,
'captcha_output': solution.captcha_output,
};
for (var name in fields) {
var input = document.querySelector('input[name="' + name + '"]');
if (!input) {
input = document.createElement('input');
input.type = 'hidden';
input.name = name;
document.forms[0].appendChild(input);
}
input.value = fields[name];
}
// Trigger validation callback if available
if (window.captchaObj && typeof window.captchaObj.appendTo === 'function') {
window.captchaObj.appendTo('#captcha-container');
}
""", solution)
Aynı desen v3'te de geçerlidir; değişen tek şey döndürülen token alanlarının adlarıdır. Bu yüzden akışınızı bugün v3 için sürümden bağımsız kurarsanız, v4 desteği geldiğinde yalnızca alan eşlemesini güncellemeniz yeterli olur.
Sorun giderme
| Sorun | Sebep | Çözüm |
|---|---|---|
ERROR_WRONG_CAPTCHA_ID |
v4 captcha_id yerine v3 gt değerinin kullanılması |
v4'ü doğrulamak için sayfadaki gcaptcha4 betiğini kontrol edin |
| Çözüm reddedildi | version=4 parametresinin eksik olması |
v4 için her zaman version: "4" değerini belirtin |
captcha_id bulunamıyor |
Değer JavaScript ile geç oluşturuluyor | İşlenen sayfadan ayıklamak için Selenium kullanın |
| Token biçimi hatası | JSON yerine düz dize ayrıştırılıyor | Token'ları tek tek almak için çözümü JSON olarak ayrıştırın |
Sık sorulan sorular
GeeTest v4 desteği ne zaman gelecek?
GeeTest v4 desteği CaptchaAI yol haritasında ve "çok yakında" olarak duyuruluyor; henüz genel kullanıma açık değil. Bugün için üretimde GeeTest v3'ü kullanın ve güncel durumu desteklenen türler sayfasından takip edin.
v4 için kod örneğini şimdiden kullanabilir miyim?
Kodu hazırlayabilirsiniz, ancak version: "4" ile yapılan çağrılar destek yayına girene kadar sonuç döndürmez. Bugün canlı akışınızı GeeTest v3 üzerinden çalıştırın; v4 hazır olduğunda aynı entegrasyonda yalnızca sürüm yolunu devreye alırsınız.
CaptchaAI GeeTest v3'ü ne kadar hızlı çözüyor?
GeeTest v3 genellikle 12 saniyenin altında, yüksek başarı oranıyla çözülür. Bu bir SLA tavanıdır; gerçek süre hacme, ağ koşullarına ve thread tahsisinize göre değişebilir.
Site v4'e geçerse v3 entegrasyonumu baştan mı yazmam gerekir?
Hayır. Gönderim ve sorgulama mantığı aynı kalır; değişen tek şey tespit edilen sürüm ve enjekte edilen token alanlarıdır. Kodunuzu sürümden bağımsız kurarsanız geçiş küçük bir güncellemeye iner.
İlgili kılavuzlar
Bugün GeeTest v3'ü çözün — CaptchaAI ile başlayın. GeeTest v4 desteği çok yakında.