UNLOCK API
Cloudflare Turnstile

Cloudflare Turnstile

Come inviare un task Cloudflare Turnstile a UNLOCK API con createTask o in.php: nomi dei tipi di task, tutti i parametri, l'oggetto solution, i campi proxy ed esempi di codice in 7 linguaggi.
Prezzo
$0.55 $0.00055 per task
Invii
URL della pagina e site key, più action e cData se il widget li usa
Ricevi
Token per cf-turnstile-response

Panoramica e prezzo

Nomi dei tipi di task

Usa il primo nome per risolvere senza proxy. Usa il secondo nome e aggiungi i campi proxy per risolvere tramite il tuo proxy. Il prezzo è lo stesso.
TurnstileTaskProxylessSenza proxy
TurnstileTaskTramite il tuo proxy

Accettati anche: AntiTurnstileTaskProxyless

Oggetto task

type
StringObbligatorio
Nome del tipo di task. Maiuscole e minuscole sono indifferenti. TurnstileTaskProxyless | TurnstileTask
websiteURL
StringObbligatorio
Indirizzo completo della pagina in cui compare il CAPTCHA, che inizia con http:// o https://.
websiteKey
StringObbligatorio
La site key del widget CAPTCHA, presente nel sorgente della pagina (ad esempio data-sitekey).
action
StringFacoltativo
Valore del parametro action del widget, se la pagina ne imposta uno.
data
StringFacoltativo
Valore del parametro cData del widget, se la pagina ne imposta uno.
pagedata
StringFacoltativo
Valore del parametro chlPageData, se la pagina ne imposta uno.
userAgent
StringFacoltativo
User-Agent del browser da usare durante la risoluzione. Invia lo stesso quando invii la risposta.

I campi non elencati qui vengono passati al risolutore così come sono stati inviati.

Campi proxy

Solo per il nome del tipo con proxy. Invia i campi separati oppure una sola stringa proxy.
proxyType
StringObbligatorio
http, https, socks4 o socks5.
proxyAddress
StringObbligatorio
Indirizzo IP o nome host del proxy.
proxyPort
IntegerObbligatorio
Porta del proxy.
proxyLogin
StringFacoltativo
Nome utente del proxy, se richiesto.
proxyPassword
StringFacoltativo
Password del proxy, se richiesta.
proxy
String
Tutti i campi proxy in una stringa, ad esempio http://user:pass@1.2.3.4:8080.

Usare un proxy

Richiesta

POST /createTask
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "TurnstileTaskProxyless",
    "websiteURL": "https://example.com/login",
    "websiteKey": "0x4AAAAAAAC3DHQFLr1GavRN"
  }
}

Oggetto solution

Restituito in solution quando status è ready.
token
String
Il token da inviare con il form della pagina.
userAgent
String
User-Agent usato durante la risoluzione. Usa lo stesso quando invii il token.
POST /getTaskResult
{
  "errorId": 0,
  "taskId": 1001,
  "status": "ready",
  "solution": {
    "token": "0.zrSnRHO7h0HwSjSCU8oyzbjEtD8p...",
    "userAgent": "Mozilla/5.0 ..."
  },
  "cost": "0.00055",
  "createTime": 1791640000,
  "endTime": 1791640014,
  "solveCount": 1
}

Esempi di codice

import time, requests

API = "https://unlock-api.com"
KEY = "YOUR_API_KEY"

task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
      "type": "TurnstileTaskProxyless",
      "websiteURL": "https://example.com/login",
      "websiteKey": "0x4AAAAAAAC3DHQFLr1GavRN"
    }
}).json()
if task["errorId"]:
    raise SystemExit(task["errorCode"])

for _ in range(60):   # 60 x 5 s = the 5 minute task limit
    time.sleep(5)
    r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task["taskId"]}).json()
    if r["errorId"]:
        raise SystemExit(f"{r['errorCode']}: {r.get('errorDescription', '')}")   # failed tasks are refunded
    if r["status"] == "ready":
        print(r["solution"]["token"])
        break
else:
    raise SystemExit("timed out")

Metodo form in.php

Lo stesso task con la classica richiesta form. res.php restituisce la risposta come testo.
in.php, res.php
curl -s "https://unlock-api.com/in.php" -d "key=YOUR_API_KEY&method=turnstile&sitekey=SITE_KEY&pageurl=https://example.com/login&json=1"
# {"status":1,"request":"1001"}

curl -s "https://unlock-api.com/res.php?key=YOUR_API_KEY&action=get&id=1001&json=1"
# {"status":0,"request":"CAPCHA_NOT_READY"}  then  {"status":1,"request":"ANSWER"}

API a form: in.php e res.php