Görev türleri
Cloudflare Turnstile
Bu sayfa Çince sürümden makine çevirisiyle hazırlanmıştır ve hatalar içerebilir. Geçerli olan Çince sürüm sürümüdür.
Cloudflare Turnstile görevi bir token (token) döndürür; bu token hedef siteye gönderildiğinde doğrulama geçilir. TurnstileTaskProxyless için görev başına ücret: 25 puan (≈ $3.75 / 1k). Görev asenkron çalışır: önce createTask, ardından her 5 saniyede bir getTaskResult çağrılır. Başarısız olan ve zaman aşımına uğrayan görevlerin puanı otomatik iade edilir.
https://api.yescaptcha.com/createTaskGlobal uç noktahttps://cn.yescaptcha.com/createTaskÇin uç noktasıİstek gövdesi JSON’dur ve kimlik doğrulaması clientKey ile yapılır. Sonucu, görevi oluşturduğunuz uç noktadan sorgulayın.
Kullanım alanları
Bölüm başlığı “Kullanım alanları”Sayfadaki bir formun içinde Cloudflare doğrulama kutusu (“İnsan olduğunuzu doğrulayın”) bulunur ve sayfa challenges.cloudflare.com/turnstile adresindeki betiği yükler.
Sayfanın tamamı Cloudflare tarafından durdurulup “Lütfen bekleyin…” veya “Tarayıcınız kontrol ediliyor” ekranı gösteriliyorsa bu Turnstile değil, Cloudflare doğrulama sayfasıdır; bunun için Cloudflare doğrulama sayfası görev türünü kullanın. Aradaki fark için CAPTCHA türünü belirleme sayfasına bakın.
Görev türleri ve fiyatlar
Bölüm başlığı “Görev türleri ve fiyatlar”| Görev türü | Fiyat | Mod | Notlar |
|---|---|---|---|
TurnstileTaskProxyless | $3.75 / 1k; 25 puan/görev · ¥25 / 1k | Asenkron | |
TurnstileTaskProxylessM1 | $4.50 / 1k; 30 puan/görev · ¥30 / 1k | Asenkron | |
TurnstileTask | $3.75 / 1k; 25 puan/görev · ¥25 / 1k | Asenkron | Kendi proxy'niz |
ABD doları fiyatları, 1 ABD doları ≈ ¥6.67 kuruyla hesaplanan tahminlerdir; görevler puan üzerinden ücretlendirilir.
TurnstileTaskProxylessveTurnstileTaskProxylessM1aynı parametreleri kullanır, hatları farklıdır; birbirinin yedeği olarak kullanılabilir.TurnstileTask, CAPTCHA’yı kendi proxy’nizle yükler; proxy alanlarının gönderilmesi gerekir.
İstek parametreleri
Bölüm başlığı “İstek parametreleri”| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
type | string | Evet | Görev türü; bu sayfadaki "Görev türleri ve fiyatlar" bölümüne bakın |
websiteURL | string | Evet | CAPTCHA'nın göründüğü sayfanın tam URL'si. CAPTCHA'yı gördüğünüz siteyi yazın, CAPTCHA sağlayıcısının alan adını değil |
websiteKey | string | Evet | Turnstile site anahtarı (sitekey), genellikle 0x ile başlar |
pageAction | string | Hayır | Sayfanın Turnstile'a verdiği action değeri (turnstile.render seçeneği veya doğrulama kutusu öğesindeki data-action), örneğin login. Çoğu durumda gerekmez; yalnızca görevler başarısız olmaya devam ederse ekleyin |
data | string | Hayır | Sayfanın Turnstile'a verdiği cData değeri (turnstile.render seçeneği veya doğrulama kutusu öğesindeki data-cdata), örneğin c0bd4b36-7419-4e18-83c6-378699f2a9a2. Çoğu durumda gerekmez; yalnızca görevler başarısız olmaya devam ederse ekleyin |
proxyType | string | Bazı türler | Proxy protokolü: http, https, socks4 veya socks5 (TurnstileTask için zorunlu) |
proxyAddress | string | Bazı türler | Proxy IP adresi veya ana bilgisayar adı. 127.0.0.1 veya 192.168.x.x gibi yerel ya da özel adresler çalışmaz, çünkü sunucularımız bunlara erişemez (TurnstileTask için zorunlu) |
proxyPort | integer | Bazı türler | Proxy portu (TurnstileTask için zorunlu) |
proxyLogin | string | Hayır | Proxy kullanıcı adı, proxy kimlik doğrulaması gerektiriyorsa (yalnızca TurnstileTask) |
proxyPassword | string | Hayır | Proxy şifresi, proxy kimlik doğrulaması gerektiriyorsa (yalnızca TurnstileTask) |
userAgent | string | Hayır | Tarayıcı User-Agent bilgisi. Sonuçta userAgent varsa, token'ı gönderirken bu değeri kullanın (yalnızca TurnstileTask) |
websiteKey genellikle 0x ile başlar. Nasıl bulunacağı için Turnstile parametrelerini bulma sayfasına bakın.
Sorun devam ederse: pageAction ve data
Bölüm başlığı “Sorun devam ederse: pageAction ve data”Çoğu durumda yalnızca websiteURL ve websiteKey yeterlidir; bu iki parametreye gerek yoktur. websiteURL ve websiteKey değerlerinin doğru olduğundan eminseniz ve görev yine de geçmiyorsa, sayfanın Turnstile’ı çağırırken action ve cData gönderip göndermediğine bakın (turnstile.render parametreleri veya doğrulama kutusu öğesindeki data-action, data-cdata). Gönderiyorsa aynen ekleyin:
pageAction: sayfadakiactiondeğeri, örneğinlogindata: sayfadakicDatadeğeri, örneğinc0bd4b36-7419-4e18-83c6-378699f2a9a2
{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY", "pageAction": "login", "data": "c0bd4b36-7419-4e18-83c6-378699f2a9a2" }}İstek örneği
Bölüm başlığı “İstek örneği”{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY" }}curl -s https://api.yescaptcha.com/createTask \ -H 'Content-Type: application/json' \ -d '{ "clientKey": "YOUR_CLIENT_KEY", "task": { "type": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY" }}'
# Returns {"errorId":0,"taskId":"..."}; then poll every 5 seconds:curl -s https://api.yescaptcha.com/getTaskResult \ -H 'Content-Type: application/json' \ -d '{"clientKey": "YOUR_CLIENT_KEY", "taskId": "TASK_ID"}'import osimport time
import requests
API = "https://api.yescaptcha.com"CLIENT_KEY = os.environ["YESCAPTCHA_CLIENT_KEY"] # Read the clientKey from an environment variable
def call(method, payload): r = requests.post(f"{API}/{method}", json={"clientKey": CLIENT_KEY, **payload}, timeout=30) data = r.json() if data.get("errorId"): raise RuntimeError(f"{data.get('errorCode')}: {data.get('errorDescription')}") return data
def solve(task): task_id = call("createTask", {"task": task})["taskId"] for _ in range(36): # Poll every 5 seconds, for up to about 3 minutes time.sleep(5) result = call("getTaskResult", {"taskId": task_id}) if result.get("status") == "ready": return result["solution"] raise TimeoutError(task_id)
solution = solve({ "type": "TurnstileTaskProxyless", "websiteURL": "https://example.com/login", "websiteKey": "0x4AAAAAAA_SITE_KEY",})print(solution["token"])const API = 'https://api.yescaptcha.com';const CLIENT_KEY = process.env.YESCAPTCHA_CLIENT_KEY; // Read the clientKey from an environment variable
async function call(method, payload) { const res = await fetch(`${API}/${method}`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ clientKey: CLIENT_KEY, ...payload }), }); const data = await res.json(); if (data.errorId) throw new Error(`${data.errorCode}: ${data.errorDescription}`); return data;}
async function solve(task) { const { taskId } = await call('createTask', { task }); for (let i = 0; i < 36; i++) { // Poll every 5 seconds, for up to about 3 minutes await new Promise((r) => setTimeout(r, 5000)); const result = await call('getTaskResult', { taskId }); if (result.status === 'ready') return result.solution; } throw new Error(`timeout: ${taskId}`);}
const solution = await solve({ type: "TurnstileTaskProxyless", websiteURL: "https://example.com/login", websiteKey: "0x4AAAAAAA_SITE_KEY",});console.log(solution.token);websiteURL ve websiteKey değerlerini hedef sitenin değerleriyle değiştirin.
Dönen sonuç
Bölüm başlığı “Dönen sonuç”{ "errorId": 0, "status": "ready", "solution": { "token": "0.ufq5RgSVZd11DPSX1brdrxnEs28KcVlKj2ORchqxSy2q9yAW6ciq3hriXDF4x...", "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36" }}| Alan | Tür | Açıklama |
|---|---|---|
token | string | Hedef siteye gönderilecek token. Tek kullanımlıktır; mümkün olan en kısa sürede gönderin |
userAgent | string | Token'ı almak için kullanılan User-Agent. Token'ı gönderirken bu değeri kullanın; sizin gönderdiğinizden farklı olsa bile bu değer geçerlidir |
token değerini sayfadaki cf-turnstile-response alanına (veya hedef sitenin API’sinin istediği alana) yazıp gönderin; gönderim isteğinde User-Agent olarak dönen userAgent değerini kullanın.
İşlem sürerken {"errorId": 0, "status": "processing"} döner; 5 saniye sonra tekrar sorgulayın. Hata durumunda errorCode değerine göre işlem yapın; ayrıntılar için Hata kodları sayfasına bakın.
Sık sorulan sorular
Bölüm başlığı “Sık sorulan sorular”Token ne kadar süre geçerlidir?
Bölüm başlığı “Token ne kadar süre geçerlidir?”Tek kullanımlıktır; alır almaz göndermeniz önerilir (Turnstile token’ları genellikle birkaç dakika içinde sona erer, süreyi Cloudflare belirler).
Gönderimden sonra site hâlâ kabul etmiyor
Bölüm başlığı “Gönderimden sonra site hâlâ kabul etmiyor”websiteURL değerinin doğrulama kutusunun göründüğü sayfa olduğundan ve websiteKey değerinin doğru olduğundan emin olun; gönderirken dönen userAgent değerini kullanın. Sayfa action ve cData gönderiyorsa bunları pageAction ve data olarak ekleyin; bkz. Sorun devam ederse. Site IP adresini de kontrol ediyorsa TurnstileTask kullanın ve gönderimi aynı proxy üzerinden yapın.