GeeTest v4, v3'e kıyasla mimaride, zorluk türlerinde ve entegrasyon modellerinde önemli değişiklikler getiriyor. Bu kılavuzda nelerin değiştiği ve v4 zorluklarının nasıl çözüleceği açıklanmaktadır.
GeeTest v3 ve v4 — Temel Farklılıklar
| Özellik | GeeTest v3 | GeeTest v4 |
|---|---|---|
| Başlatma | Sunucudan gt + challenge |
Yalnızca captcha_id |
| Mücadele parametresi | API çağrısından gerekli | İstemci tarafı oluşturuldu |
| Mücadele türleri | Kaydırın, tıklayın | Kaydırma, tıklama, simge seçme, uzay muhakemesi |
| Doğrulama | Sunucu challenge değerini döndürüyor |
lot_number + pass_token'yi kullanır |
| API uç noktası | api.geetest.com |
gcaptcha4.geetest.com |
| Ölçeklendirme zorluğu | Sabit | Uyarlanabilir risk puanlaması |
GeeTest v4 Parametrelerinin Çıkarılması
# 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']}")
GeeTest v4'yi CaptchaAI ile çözme
# 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}")
GeeTest v4 Çözümünün Enjekte Edilmesi
# 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)
v4 Mücadele Türleri
Slayt Bulmaca
Klasik slaytla maç mücadelesi. Kullanıcı bir yapboz parçasını sürükler.
Seçimi tıklayın
Kullanıcı belirli nesneleri tıklar (ör. "tüm yüzleri tıklayın"). Simge tanımayı kullanır.
Uzay Muhakeme
V4'teki yenilik — kullanıcı şekilleri uzamsal bir düzende düzenler. V3'ten daha karmaşık.
Simge Eşleşmesi
Kullanıcı bir sırayla gösterilen simgeleri eşleştirir. Manuel olarak otomatikleştirmek daha zordur.
CaptchaAI tüm v4 meydan okuma türlerini yönetir — API, mücadeleye özgü mantığı ortadan kaldırır.
Sorun giderme
| Sorun | Sebep | Düzeltme |
|---|---|---|
ERROR_WRONG_CAPTCHA_ID |
v4 captcha_id yerine v3 gt değerini kullanma |
V4'ü onaylamak için gcaptcha4 betiği sayfasını kontrol edin |
| Çözüm reddedildi | version=4 parametresi eksik |
v4 için her zaman version: "4"'yi belirtin |
captcha_id bulunamadı |
JavaScript ile oluşturulmuş | İşlenen sayfadan ayıklamak için Selenyum kullanın |
| Belirteç biçimi hatası | JSON yerine dize ayrıştırılıyor | Bireysel belirteçleri almak için çözümü JSON olarak ayrıştırın |
SSS
Bir sitenin GeeTest v3 veya v4 kullanıp kullanmadığını nasıl anlarım?
V4 için sayfa kaynağında gcaptcha4.geetest.com veya gt4.js'yi arayın. api.geetest.com ve bir challenge parametresini görüyorsanız, bu v3'tür.
GeeTest v4'yi çözmek v3'ten daha mı zor?
Otomatik çözücüler için hayır. CaptchaAI her iki versiyonu da yönetir. V4'ün uyarlanabilir zorluğu, son kullanıcı anlaşmazlıklarını etkiler ancak API tabanlı çözümü etkilemez.
GeeTest v4'nin başarı oranı nedir?
CaptchaAI, v3 ve v4'te tutarlı olarak GeeTest zorlukları için %100 başarı oranı rapor ediyor.
İlgili Kılavuzlar
GeeTest v4 zorluklarını çözün —CaptchaAI ile başlayın.