Teknik Açıklamalar

GeeTest v4 CAPTCHA Değişiklikleri ve Çözüm Kılavuzu

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.

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