API Eğitimleri

API ile Cloudflare Turnstile Nasıl Çözülür

Cloudflare Turnstile, gizliliğe odaklı, arka planda sessizce çalışan bir CAPTCHA alternatifidir. Geleneksel CAPTCHA'ların aksine nadiren görünür bir meydan okuma sunar; tarayıcı sinyallerini toplayıp bir token üretir ve bu token sitenin arka ucu tarafından doğrulanır.

Bu kılavuz, CaptchaAI API'si ile Turnstile'ı nasıl programatik olarak çözeceğinizi gösterir. Henüz okumadıysanız önce CaptchaAI Hızlı Başlangıç yazısını inceleyin; oradaki 4 adımlı genel akışı bilmek burayı kolaylaştırır.


Gereksinimler

Öğe Değer
CaptchaAI API anahtarı captchaai.com panelinden
Turnstile sitekey Hedef sayfadan çıkarılır (0x ile başlar)
Sayfa URL'si Turnstile'ın göründüğü tam URL
Dil Python 3.7+ veya Node.js 14+

Adım 1: Turnstile sitekey'i bulun

Sitekey genellikle sayfa HTML'inde, bir div veya script etiketinin içindedir:

<div class="cf-turnstile" data-sitekey="0x4AAAAAAAC3DHQFLr1GavNl"></div>

Veya JavaScript tarafından çizilir:

turnstile.render('#widget', {
  sitekey: '0x4AAAAAAAC3DHQFLr1GavNl',
  callback: function(token) { /* ... */ }
});

Üç çıkarım yöntemi:

  1. Tarayıcı DevTools — Elements sekmesinde data-sitekey veya cf-turnstile arayın.
  2. Kaynak kodCtrl+U ile sayfa kaynağını açıp 0x ile başlayan dizeleri arayın.
  3. Network sekmesichallenges.cloudflare.com filtresi koyun; sitekey istek parametrelerinde geçer.

Turnstile sitekey'i her zaman 0x ile başlar ve genellikle 22 karakter uzunluğundadır. Bu, 6L ile başlayan reCAPTCHA anahtarlarından temel farkıdır.


Adım 2: Görevi gönderin

https://ocr.captchaai.com/in.php adresine method=turnstile ile POST atın:

import requests

API_KEY = "YOUR_CAPTCHAAI_KEY"
SITEKEY = "0x4AAAAAAAC3DHQFLr1GavNl"
PAGEURL = "https://staging.example.com/qa-login"

r = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "turnstile",
    "sitekey": SITEKEY,
    "pageurl": PAGEURL,
    "json": 1,
})
data = r.json()
if data["status"] != 1:
    raise RuntimeError(f"submit failed: {data}")
task_id = data["request"]
print("task id:", task_id)

Node.js karşılığı:

const axios = require("axios");

const { data } = await axios.post("https://ocr.captchaai.com/in.php", null, {
  params: {
    key: process.env.CAPTCHAAI_KEY,
    method: "turnstile",
    sitekey: "0x4AAAAAAAC3DHQFLr1GavNl",
    pageurl: "https://staging.example.com/qa-login",
    json: 1,
  },
});
if (data.status !== 1) throw new Error(`submit failed: ${JSON.stringify(data)}`);
const taskId = data.request;

Başarılı yanıt: {"status": 1, "request": "<task_id>"}. Sorgulama için task_id'yi saklayın.


Adım 3: Sonucu sorgulayın

Turnstile genellikle 10–25 saniyede çözülür. 10 saniye bekleyin, ardından her 5 saniyede bir maksimum 40 kez sorgulayın:

import time

time.sleep(10)
for _ in range(40):
    r = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY,
        "action": "get",
        "id": task_id,
        "json": 1,
    })
    res = r.json()
    if res["status"] == 1:
        token = res["request"]
        break
    if res["request"] != "CAPCHA_NOT_READY":
        raise RuntimeError(f"solver error: {res}")
    time.sleep(5)
else:
    raise TimeoutError("turnstile solving timed out")

print("token (ilk 60 karakter):", token[:60])

Dönen token genellikle 0. ile başlayan, 400–600 karakter uzunluğunda bir Base64 dizesidir.


Adım 4: Token'ı sayfaya enjekte edin

Token elinize geçtikten sonra, Turnstile formundaki gizli cf-turnstile-response alanına yazın ve formu gönderin.

Selenium:

driver.execute_script(
    "document.querySelector('[name=cf-turnstile-response]').value = arguments[0];",
    token,
)
driver.find_element("css selector", "form").submit()

Playwright:

page.evaluate(
    "(t) => document.querySelector('[name=cf-turnstile-response]').value = t",
    token,
)
page.click("button[type=submit]")

Saf HTTP: cf-turnstile-response=<token> alanını application/x-www-form-urlencoded gövdesine ekleyin.

Turnstile token'ının ömrü yaklaşık 120–300 saniyedir. Aldıktan hemen sonra kullanın, aksi halde arka uç timeout-or-duplicate hatası döner.


Tam Python örneği

import os, time, requests

API = "https://ocr.captchaai.com"
KEY = os.environ["CAPTCHAAI_KEY"]

def solve_turnstile(sitekey: str, pageurl: str) -> str:
    r = requests.post(f"{API}/in.php", data={
        "key": KEY, "method": "turnstile",
        "sitekey": sitekey, "pageurl": pageurl, "json": 1,
    }, timeout=30)
    j = r.json()
    if j["status"] != 1:
        raise RuntimeError(f"submit: {j}")
    tid = j["request"]

    time.sleep(10)
    for _ in range(40):
        r = requests.get(f"{API}/res.php", params={
            "key": KEY, "action": "get", "id": tid, "json": 1,
        }, timeout=30)
        j = r.json()
        if j["status"] == 1:
            return j["request"]
        if j["request"] != "CAPCHA_NOT_READY":
            raise RuntimeError(f"poll: {j}")
        time.sleep(5)
    raise TimeoutError("timeout")

if __name__ == "__main__":
    print(solve_turnstile("0x4AAAAAAAC3DHQFLr1GavNl", "https://staging.example.com/qa-login"))

Sık karşılaşılan hatalar

Kod Anlamı Yapılacak
ERROR_WRONG_USER_KEY Geçersiz API anahtarı biçimi CAPTCHAAI_KEY'in tamamlandığından emin olun
ERROR_KEY_DOES_NOT_EXIST Anahtar bulunamadı Panelden anahtarı yeniden kopyalayın
ERROR_ZERO_BALANCE Sıfır bakiye Hesabınıza yükleme yapıp tekrar deneyin
ERROR_PAGEURL pageurl parametresi eksik https:// dahil tam URL'yi gönderin
ERROR_CAPTCHA_UNSOLVABLE Çözüm başarısız sitekey ve pageurl'in eşleştiğinden emin olun, bir kez daha deneyin

Tam hata tablosu için reCAPTCHA v2 kılavuzuna bakın.


Çalışmadığında

  1. Dinamik sitekey. Bazı Cloudflare sitelerinde sitekey her ziyarette değişir; her görev öncesinde sayfayı yeniden çekin.
  2. Tam pageurl. Turnstile arka ucu URL'yi sıkı kontrol eder; query string olmadan tam yolu gönderin.
  3. TLS test profil yapılandırması. Cloudflare istemciyi TLS imzasına göre reddedebilir. curl_cffi, Playwright veya gerçek bir tarayıcı kullanın.
  4. Süresi dolmuş token. 2 dakika içinde kullanın, yoksa tekrar çözmeniz gerekir.
  5. Proxy kalitesi. Ucuz datacenter IP'leri ek meydan okumaları tetikler. Konut veya kendi sunucu altyapınız tercih edin.

Sıradaki adımlar

CaptchaAI'a bugün kaydolun ve Turnstile çözmeye başlayın.

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