Python ile Cloudflare Turnstile nasıl atlatılır#

logoNextCaptcha
March 26,2026

Cloudflare Turnstile nedir?#

Cloudflare Turnstile, kullanıcıları rahatsız edici doğrulama adımları olmadan doğrulamak için tasarlanmış akıllı bir CAPTCHA alternatifidir. Görsel seçimi veya metin girişi gerektiren geleneksel CAPTCHA'ların aksine, Turnstile ziyaretçinin insan olup olmadığını belirlemek için görünmez tarayıcı testleri çalıştırır. Cloudflare hizmetlerini kullanan web sitelerinde yaygın olarak benimsenmiştir ve web kazıma ile otomasyon iş akışları için önemli bir engel olabilir.

Ön koşullar#

Başlamadan önce Python 3.7 veya üzerinin yüklü olduğundan emin olun. Ayrıca bir NextCaptcha API anahtarına ihtiyacınız var — ücretsiz deneme kredileri almak için NextCaptcha'ya kaydolun. Ardından NextCaptcha Python SDK'yı yükleyin:
pip install nextcaptcha-python

NextCaptcha SDK ile hızlı başlangıç#

Önce API anahtarınızla bir NextCaptchaAPI örneği oluşturun. İstemci anahtarınızı NextCaptcha kontrol panelinde bulabilirsiniz:
from nextcaptcha import NextCaptchaAPI
 
api = NextCaptchaAPI(client_key="YOUR_CLIENT_KEY")
Ardından hedef web sitesi URL'si ve Turnstile site anahtarıyla turnstile yöntemini çağırın. Site anahtarı, hedef sayfadaki Turnstile widget'ının data-sitekey özniteliğinde bulunabilir:
result = api.turnstile(
    website_url="https://example.com",
    website_key="0x4XXXXXXXXXXXXXXXXX"
)
 
if result["status"] == "ready":
    token = result["solution"]["token"]
    print(f"Turnstile token: {token}")

Hata işleme ile tam örnek#

İşte hata işleme ve ortam değişkeni desteği içeren üretime hazır bir örnek:
import os
import sys
from nextcaptcha import NextCaptchaAPI
 
CLIENT_KEY = os.getenv("NEXTCAPTCHA_KEY", "YOUR_CLIENT_KEY")
WEBSITE_URL = "https://example.com"
WEBSITE_KEY = "0x4XXXXXXXXXXXXXXXXX"
 
api = NextCaptchaAPI(client_key=CLIENT_KEY)
 
try:
    result = api.turnstile(
        website_url=WEBSITE_URL,
        website_key=WEBSITE_KEY
    )
 
    if result["status"] == "ready":
        token = result["solution"]["token"]
        print(f"Turnstile solved successfully!")
        print(f"Token: {token[:50]}...")
    else:
        print(f"Failed to solve: {result.get('errorDescription', 'Unknown error')}")
        sys.exit(1)
 
except Exception as e:
    print(f"Error: {e}")
    sys.exit(1)

Ham API kullanımı (SDK olmadan)#

SDK kullanmak istemiyorsanız, requests kütüphanesi ile NextCaptcha API'yi doğrudan çağırabilirsiniz. Bu yaklaşım HTTP istekleri üzerinde tam kontrol sağlar:
import requests
import time
 
API_KEY = "YOUR_API_KEY"
WEBSITE_URL = "https://example.com"
WEBSITE_KEY = "0x4XXXXXXXXXXXXXXXXX"
 
# Step 1: Create task
response = requests.post("https://api.nextcaptcha.com/createTask", json={
    "clientKey": API_KEY,
    "task": {
        "type": "TurnstileTaskProxyless",
        "websiteURL": WEBSITE_URL,
        "websiteKey": WEBSITE_KEY
    }
})
 
data = response.json()
if data.get("errorId", 0) != 0:
    print(f"Error creating task: {data.get('errorDescription')}")
    exit()
 
task_id = data["taskId"]
print(f"Task created: {task_id}")
 
# Step 2: Poll for result
while True:
    time.sleep(3)
    result = requests.post("https://api.nextcaptcha.com/getTaskResult", json={
        "clientKey": API_KEY,
        "taskId": task_id
    }).json()
 
    if result["status"] == "ready":
        token = result["solution"]["token"]
        print(f"Solved! Token: {token[:50]}...")
        break
    elif result["status"] == "failed":
        print(f"Failed: {result.get('errorDescription')}")
        break
    else:
        print("Waiting for solution...")
Bu yaklaşım iki API çağrısı gerektirir: Turnstile görevini göndermek için createTask ve sonucu sorgulamak için getTaskResult. Hız sınırlamasından kaçınmak için 3 saniye sorgulama aralığı önerilir.

Özet#

Bu kılavuzda Python ile Cloudflare Turnstile'ı atlatmanın iki yöntemini ele aldık: basit bir yaklaşım için NextCaptcha SDK ve tam kontrol için ham API. NextCaptcha, Turnstile görevini otomatik olarak çözer ve geçerli bir token döndürür. Daha fazla bilgi için aşağıdaki bağlantılara göz atın: