Sorun Giderme

Turnstile Jetonu Çözümden Sonra Geçersiz: Teşhis ve Düzeltmeler

CaptchaAI'ye Turnstile CAPTCHA'sı gönderdiniz, jetonu geri aldınız ancak hedef site bunu reddediyor. Token teknik olarak çözüldü; sorun onu nasıl ve ne zaman kullandığınızdır. Bu kılavuz, Turnstile jetonlarının çözüldükten sonra başarısız olmasının tüm nedenlerini kapsar.


Belirtiler

Ne görüyorsun Muhtemel sebep
Site, belirteci gönderdikten sonra 403 değerini döndürüyor Tokenın süresi gönderilmeden önce doldu
Form gönderimi sessizce başarısız oluyor Belirteç ekleme için yanlış alan adı
Jeton kabul edildi ancak işlem engellendi Site anahtarı uyuşmazlığı — yanlış widget çözüldü
Bir kez çalışır, sonra başarısız olur Jeton zaten kullanılmış (tek kullanımlık)
Tarayıcıda çalışıyor, komut dosyasında başarısız oluyor Eksik çerezler veya başlıklar

Neden 1: Belirtecin süresi doldu

Turnstile jetonlarının süresi hızlı bir şekilde dolar - genellikle 300 saniye (5 dakika) içinde. Kodunuzun jetonu alıp göndermesi arasında çok uzun zaman geçerse jeton ölmüş demektir.

Düzeltme: Jetonu aldıktan hemen sonra gönderin.

import requests
import time

API_KEY = "YOUR_API_KEY"

# Submit Turnstile task
submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "turnstile",
    "sitekey": "0x4AAAAAAADnPIDROz1234",
    "pageurl": "https://staging.example.com/qa-login",
    "json": 1
}).json()

task_id = submit["request"]
time.sleep(10)

# Poll for result
for _ in range(24):
    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"]
        # USE TOKEN IMMEDIATELY — do not delay
        response = requests.post("https://staging.example.com/qa-login", data={
            "username": "user",
            "password": "pass",
            "cf-turnstile-response": token
        })
        break
    time.sleep(5)

Neden 2: Yanlış site anahtarı

Her Turnstile widget'ının benzersiz bir site anahtarı vardır. Sayfada birden fazla widget varsa veya yanlış anahtarı kopyaladıysanız jeton geçerli olur ancak reddedilir.

Doğru site anahtarı nasıl bulunur:

// In browser console on the target page
document.querySelectorAll('[data-sitekey]').forEach(el => {
    console.log('Sitekey:', el.getAttribute('data-sitekey'));
    console.log('Element:', el);
});

Birden fazla site anahtarı varsa gönderdiğiniz forma eklenmiş olanı kullanın.


Neden 3: Yanlış alan adı

Turnstile, jetonun g-recaptcha-response değil cf-turnstile-response cinsinden olmasını bekliyor.

# WRONG — this is for reCAPTCHA
data = {"g-recaptcha-response": token}

# CORRECT — this is for Turnstile
data = {"cf-turnstile-response": token}

Bazı siteler özel bir alan adı kullanır. Gerçek alanı bulmak için formu inceleyin:

// Check what field the Turnstile widget populates
document.querySelector('[name*="turnstile"], [name*="cf-"]')

Neden 4: Belirteç zaten kullanılmış

Turnstile jetonları tek kullanımlıktır. Kodunuz aynı belirteçle bir isteği yeniden denerse ikinci deneme başarısız olur.

Düzeltme: Her gönderim denemesi için yeni bir CAPTCHA çözün.


Neden 5: Eksik çerezler veya oturum içeriği

Cloudflare, belirteci oturum çerezlerine göre doğrulayabilir. CAPTCHA'yı bir oturumda çözüp başka bir oturumda gönderirseniz reddedilme olasılığı yüksektir.

# Use the SAME session for page load and token submission
session = requests.Session()

# Load the page first to establish cookies
session.get("https://staging.example.com/qa-login")

# Then solve and submit using the same session
token = solve_turnstile(sitekey, pageurl)
session.post("https://staging.example.com/qa-login", data={
    "cf-turnstile-response": token
})

Neden 6: Eylem veya cData uyuşmazlığı

Bazı Turnstile uygulamaları, tokene bağlı action veya cData parametrelerini içerir. Eğer site bunları bekliyorsa çözerken bunları geçmelisiniz.

submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "turnstile",
    "sitekey": "0x4AAAAAAADnPIDROz1234",
    "pageurl": "https://staging.example.com/qa-login",
    "action": "login",           # If required by the site
    "data": "custom_cdata_value", # If required by the site
    "json": 1
}).json()

Karar ağacı

Token solved but rejected
    ↓
Used within 5 minutes? → No → Solve again, submit immediately
    ↓ Yes
Correct sitekey? → No → Find the correct sitekey from the page
    ↓ Yes
Using cf-turnstile-response field? → No → Change field name
    ↓ Yes  
Same session for page load + submit? → No → Use session persistence
    ↓ Yes
Token used only once? → No → Solve a new token per submission
    ↓ Yes
Site requires action/cData? → Check page source, add to API call

SSS

Turnstile jetonlarının geçerliliği ne kadardır?

Tipik olarak 300 saniye (5 dakika). Bazı uygulamalar daha kısa süre sonu belirler. Tokenı aldıktan sonra birkaç saniye içinde gönderin.

Turnstile Cloudflare doğrulama akışı ile aynı mıdır?

Hayır. Turnstile gömülü bir widget'tır (reCAPTCHA gibi). Cloudflare doğrulama akışı tam sayfa bir geçiş reklamıdır. Farklı CaptchaAI yöntemleri kullanırlar: turnstile ve cloudflare_challenge.

Simgem neden Postman'da çalışıyor ama senaryomda çalışmıyor?

Postacı farklı başlıklar veya tanımlama bilgileri gönderiyor olabilir. Komut dosyanızın başlıklarını ve oturum durumunu tarayıcının gönderdiği bilgilerle eşleştirin.


CaptchaAI'de Turnstile CAPTCHA'larını çözün

Güvenilir Turnstile çözümünü şu adreste edinin:captchaai.com.


İlgili kılavuzlar

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