Sorun Giderme

Cloudflare Turnstile 403 Token Gönderiminden Sonra: Düzeltme Kılavuzu

Turnstile CAPTCHA'sını çözdünüz ve geçerli bir jeton aldınız ancak hedef site hala 403 Yasak sonucunu döndürüyor. Bu kılavuz her türlü nedeni kapsamaktadır.


Geçerli Tokendan Sonra Neden 403

Sebep olasılık
qa_session_cookie çerezi eksik Çok yaygın
Jetonun süresi doldu Ortak
Yanlış gönderim uç noktası Ortak
İstek başlıkları eksik Orta
Çözme ve gönderme arasındaki IP uyuşmazlığı Orta
Cloudflare doğrulama akışı (Turnstile değil) Bazen kafam karıştı

Turnstile, doğrulama sırasında çerezleri ayarlar. Bir sonraki isteğinize bu çerezleri eklemezseniz Cloudflare sizi engeller.

import requests

session = requests.Session()

# Step 1: Load the page to get initial cookies
session.get("https://example.com")

# Step 2: Solve Turnstile
token = solve_turnstile(
    api_key="YOUR_API_KEY",
    sitekey="TURNSTILE_SITEKEY",
    pageurl="https://example.com",
)

# Step 3: Submit token to the validation endpoint
# This sets qa_session_cookie cookie
resp = session.post("https://example.com/api/verify", data={
    "cf-turnstile-response": token,
}, headers={
    "Content-Type": "application/x-www-form-urlencoded",
    "Origin": "https://example.com",
    "Referer": "https://example.com/",
})

# Step 4: Now make your actual request WITH the session cookies
resp = session.get("https://example.com/protected-page")
print(resp.status_code)  # Should be 200 now

Neden 2: Belirtecin Süresi Doldu

Turnstile jetonlarının ömrü yaklaşık 300 saniyedir, ancak en iyi sonuçları almak için bunları hemen kullanın.

import time

# Solve
start = time.time()
token = solve_turnstile(...)
solve_time = time.time() - start

# Check if token is still fresh
if solve_time > 240:  # > 4 minutes is risky
    print("Token may be too old, solving again...")
    token = solve_turnstile(...)

# Submit immediately
submit_token(token)

Neden 3: Yanlış Gönderim Yöntemi

Sitenin Turnstile jetonunu nasıl gönderdiğini öğrenin:

# Some sites use a hidden form field
data = {
    "cf-turnstile-response": token,
    "username": "user",
    "password": "pass",
}

# Some sites use a custom header
headers = {
    "X-Turnstile-Token": token,
}

# Some sites use JSON body
json_data = {
    "turnstileToken": token,
    "email": "user@example.com",
}

Doğru alan adı nasıl bulunur:

  1. Tarayıcı DevTools → Ağ sekmesini açın
  2. Turnstile mücadelesini manuel olarak tamamlayın
  3. Form gönderme isteğini bulun
  4. Belirteç alanı adı için istek gövdesine bakın

Neden 4: Eksik Başlıklar

Cloudflare, istek başlıklarını tutarlılık açısından kontrol eder:

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.9",
    "Origin": "https://example.com",
    "Referer": "https://staging.example.com/qa-login",
    "Sec-Fetch-Dest": "document",
    "Sec-Fetch-Mode": "navigate",
    "Sec-Fetch-Site": "same-origin",
}

session.headers.update(headers)

Sebep 5: Cloudflare doğrulama akışı ve Turnstile

Turnstile ve Cloudflare doğrulama akışı farklı sistemlerdir:

Özellik Turnstile Cloudflare doğrulama akışı
Widget Sayfada görünür onay kutusu Tam sayfa meydan okuma ekranı
CaptchaAI yöntemi turnstile cloudflare_challenge
Jeton alanı cf-turnstile-response N/A (çerez tabanlı)

Tam sayfalık bir meydan okuma görürseniz bunun yerine method=cloudflare_challenge'yi kullanın.


Tam Çalışma Örneği

import requests
import time
import re


def solve_turnstile_and_access(target_url, api_key):
    """Complete flow: solve Turnstile and access protected page."""
    session = requests.Session()
    session.headers.update({
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
    })

    # Load page, get cookies and sitekey
    resp = session.get(target_url)
    match = re.search(r'data-sitekey="([^"]+)"', resp.text)
    if not match:
        raise RuntimeError("Turnstile sitekey not found")

    sitekey = match.group(1)

    # Solve via CaptchaAI
    submit_resp = requests.post("https://ocr.captchaai.com/in.php", data={
        "key": api_key,
        "method": "turnstile",
        "sitekey": sitekey,
        "pageurl": target_url,
        "json": 1,
    }, timeout=30)
    task_id = submit_resp.json()["request"]

    # Poll
    for _ in range(12):
        time.sleep(5)
        poll = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": api_key, "action": "get",
            "id": task_id, "json": 1,
        }, timeout=15)
        data = poll.json()
        if data.get("status") == 1:
            token = data["request"]
            break
    else:
        raise TimeoutError("Solve timeout")

    # Submit token using the same session
    form_resp = session.post(target_url, data={
        "cf-turnstile-response": token,
    }, headers={
        "Origin": f"https://{requests.utils.urlparse(target_url).netloc}",
        "Referer": target_url,
    })

    return session, form_resp


# Usage
session, resp = solve_turnstile_and_access(
    "https://staging.example.com/qa-login",
    "YOUR_API_KEY",
)
# session now has valid cookies for subsequent requests

Sorun giderme

Sorun Sebep Düzeltme
Geçerli jetona rağmen 403 Eksik oturum çerezleri Tüm istekler için aynı oturumu kullan
Sonraki sayfalarda 403 qa_session_cookie ayarlanmadı Belirteç doğrulaması çerez döndürmelidir
Bir kez çalışır, ardından 403 Çerezin süresi doldu Taze kurabiye için yeniden çözün
Her zaman 403 Turnstile değil, tam sayfa mücadelesi cloudflare_challenge yöntemini kullanın

SSS

Tipik olarak 30 dakika ile 24 saat arası. Sonraki istekler başarısız olmaya başlarsa Turnstileyi yeniden çözün.

Turnstile için proxy'ye ihtiyacım var mı?

Çoğunlukla hayır — CaptchaAI'nin Turnstiledeki %100 başarı oranı genellikle proxy'ler olmadan çalışır. Yalnızca site IP tutarlılığını kontrol ediyorsa proxy ekleyin.

CF_clearance'ı başka bir oturuma aktarabilir miyim?

Evet, ancak Kullanıcı Aracısına bağlıdır ve IP'ye bağlı olabilir. Her ikisini de tutarlı tutun.


İlgili Kılavuzlar


403 hatalarını düzeltin —Turnstileyi CaptchaAI ile çözün.

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