Dokümantasyon

SolverFlex API ile Cloudflare Turnstile token'larını tek bir HTTP isteğiyle alırsın.

Örneklerdeki API_KEY yerine kendi anahtarını yaz. Anahtarını hesap açarak alabilirsin.

Giriş

Tüm istekler tek bir adrese gider ve JSON döner. Taban adres:

https://api.solverflex.top

En kısa kullanım:

cURL
curl 'https://api.solverflex.top/solve?key=API_KEY&sitekey=0x4AAAAAAA...&origin=https://site.com'

Yanıt süresi genellikle bir saniyenin altındadır. Cevaptaki ms alanı sunucudaki gerçek çözüm süresidir.

Kimlik doğrulama

Her istekte key parametresiyle API anahtarını gönder. Anahtarları panelden oluşturur, etiketler ve iptal edersin. İptal edilen veya askıdaki hesaba ait anahtar 401 döner.

Anahtarını tarayıcıdaki istemci koduna gömme. İstekleri kendi sunucundan yap.

Çözüm isteği

GEThttps://api.solverflex.top/solve

Verilen sitekey ve origin için bir Turnstile token'ı üretir.

Parametreler

AdZorunluAçıklama
keyevetAPI anahtarın.
sitekeyevetTurnstile site anahtarı. 0x4 ile başlar; sayfa kaynağında data-sitekey olarak bulunur.
originevetWidget'ın yüklendiği sayfanın adresi (https://site.com). http:// veya https:// ile başlamalı.
actionhayırWidget'ta tanımlıysa data-action değeri.
cdatahayırWidget'ta tanımlıysa data-cdata değeri.

Yanıtlar

Başarılı

cURL
{
  "token": "1.0gozLxH7N6QQlTC2...",
  "ms": 1043
}

Hata

cURL
{
  "error": "no token",
  "ms": 1380
}

no token, Cloudflare'in bu denemede token vermediği anlamına gelir. HTTP durumu 200 olur; aynı isteği tekrar deneyebilirsin. Başarısız denemeler kotandan düşmez.

Hata kodları

HTTPerrorAnlamı
400sitekey required · origin requiredZorunlu parametre eksik.
400sitekey invalid · origin must start with http(s)://Parametre biçimi geçersiz.
401key required · bad keyAnahtar eksik veya tanınmıyor.
401key revoked · account suspendedAnahtar iptal edilmiş veya hesap askıda.
403no quota assignedHesabına henüz kota tanımlanmamış.
429quota exceeded (X/Y)Hesap kotası doldu.
502upstream unreachableÇözücüye ulaşılamadı; kısa süre sonra tekrar dene.
200no tokenBu denemede token alınamadı; tekrar dene.

Token'ı kullanma

Dönen token'ı, hedef sitenin Turnstile ile korunan isteğine ekle. Çoğu sitede bu bir form alanıdır: cf-turnstile-response. Doğru alan adı ve gönderim biçimini sitenin gerçek isteğine tarayıcı geliştirici araçlarının ağ sekmesinden bakarak bul.

cURL
# 1) çözücüden token al (yukarıdaki istek)
# 2) token'ı hedef sitenin formuna ekle
curl -X POST https://site.com/login \
  -d 'username=foo' -d 'password=bar' \
  -d 'cf-turnstile-response=TOKEN'
Python
res = requests.post('https://site.com/login', data={
    'username': 'foo',
    'password': 'bar',
    'cf-turnstile-response': token,
})
Node.js
await fetch('https://site.com/login', {
  method: 'POST',
  body: new URLSearchParams({
    username: 'foo', password: 'bar',
    'cf-turnstile-response': token,
  }),
});
Token tek kullanımlıktır ve kısa sürede geçersiz olur. İhtiyacın olduğu an al, hemen kullan.

Kod örnekleri

Seçtiğin dil tüm örneklerde hatırlanır.

cURL
# token'ı yalnızca ekrana yazdır
curl -s 'https://api.solverflex.top/solve?key=API_KEY&sitekey=0x4AAAAAAA...&origin=https://site.com'

# action ve cdata ile
curl -s -G 'https://api.solverflex.top/solve' \
  --data-urlencode 'key=API_KEY' \
  --data-urlencode 'sitekey=0x4AAAAAAA...' \
  --data-urlencode 'origin=https://site.com' \
  --data-urlencode 'action=login' \
  --data-urlencode 'cdata=user42'
Python
import requests

r = requests.get('https://api.solverflex.top/solve', params={
    'key': 'API_KEY',
    'sitekey': '0x4AAAAAAA...',
    'origin': 'https://site.com',
    # 'action': 'login',
    # 'cdata': 'user42',
}, timeout=90).json()

if 'token' in r:
    print(r['token'], r['ms'], 'ms')
else:
    print('hata:', r['error'])
Node.js
const url = new URL('https://api.solverflex.top/solve');
url.searchParams.set('key', 'API_KEY');
url.searchParams.set('sitekey', '0x4AAAAAAA...');
url.searchParams.set('origin', 'https://site.com');

const r = await fetch(url, { signal: AbortSignal.timeout(90000) }).then(r => r.json());
if (r.token) console.log(r.token, r.ms + ' ms');
else console.error('hata:', r.error);
PHP
<?php
$q = http_build_query([
    'key'     => 'API_KEY',
    'sitekey' => '0x4AAAAAAA...',
    'origin'  => 'https://site.com',
]);
$r = json_decode(file_get_contents('https://api.solverflex.top/solve?' . $q), true);

echo isset($r['token']) ? $r['token'] : 'hata: ' . $r['error'];
Go
u := "https://api.solverflex.top/solve?key=API_KEY&sitekey=0x4AAAAAAA...&origin=https://site.com"
resp, err := http.Get(u)
if err != nil { log.Fatal(err) }
defer resp.Body.Close()

var r struct {
    Token string `json:"token"`
    Error string `json:"error"`
    Ms    int    `json:"ms"`
}
json.NewDecoder(resp.Body).Decode(&r)
fmt.Println(r.Token, r.Error, r.Ms)

Kota ve limitler

Deneme alanı

İsteği buradan canlı dene. Başarılı her çözüm kotandan düşer.

Henüz istek yapılmadı.

Sık sorulanlar

Sitekey'i nereden bulurum?

Turnstile widget'ının HTML'inde data-sitekey özniteliği olarak yer alır. Sayfa kaynağında 0x4 ile başlayan değeri ara.

action ve cdata ne zaman gerekir?

Sitenin widget ayarında bu değerler tanımlıysa, aynı değerleri göndermelisin. Tanımlı değilse göndermene gerek yok.

no token alıyorum, ne yapmalıyım?

Aynı isteği tekrar dene; geçici bir durumdur ve kotandan düşmez. Sürekli alıyorsan sitekey ve origin değerlerinin sayfadakiyle aynı olduğunu kontrol et.

Kotamı nasıl artırırım?

Kota yönetici tarafından belirlenir. Artırım için yönetici ile iletişime geç.