NeuroCaptcha

TurnstileTask

Параметры, запрос и ответ для Cloudflare Turnstile через ваш прокси: тип задачи TurnstileTask.

На этой странице

Cloudflare Turnstile: виджет из challenges.cloudflare.com/turnstile/v0/api.js, обычно плашка «Подтвердите, что вы человек», иногда невидимый. Задача решается через ваш прокси, поэтому ответ выдаётся для вашего IP-адреса.

Цена0,80 $ за 1000 задач (0,0008 $ за задачу), только за решённые — цены
Проксиобязателен — ваш
Очередь в getQueueStats—
Также принимается как—

Параметры#

Поля объекта task в createTask:

type
stringобязательный
TurnstileTask
websiteURL
stringобязательный
Полный адрес страницы с капчей: http(s), до 2048 символов, публичный сайт.
websiteKey
stringобязательный
Ключ сайта Turnstile: атрибут data-sitekey виджета cf-turnstile или sitekey, переданный в turnstile.render, обычно 0x4AAAAAAA….
action
string
action виджета (data-action), если страница его задаёт. Буквы, цифры, _ / . -, до 128 символов. Принимается и pageAction.
turnstileCData
string
cData виджета (data-cdata), если страница его задаёт. До 1024 символов: буквы, цифры и _ - . : = + /.
userAgent
string
User-Agent браузера, который отправит токен, до 512 символов. Возвращается в solution.userAgent.
cookies
string
Cookies целевого сайта для решающего браузера: name=value; name2=value2, до 8192 символов. Хранятся зашифрованными.
proxyType
string
http (по умолчанию), https, socks4 или socks5.
proxyAddress
stringобязательный
IP-адрес или имя хоста прокси. Частные и локальные адреса отклоняются.
proxyPort
integerобязательный
Порт прокси, 1–65535.
proxyLogin
string
Логин прокси, до 256 символов. Хранится зашифрованным.
proxyPassword
string
Пароль прокси, до 256 символов. Хранится зашифрованным.

Запрос#

POST /createTask
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "TurnstileTask",
    "websiteURL": "https://example.com/login",
    "websiteKey": "0x4AAAAAAA-SITE-KEY",
    "proxyType": "http",
    "proxyAddress": "proxy.example.com",
    "proxyPort": 8080,
    "proxyLogin": "user",
    "proxyPassword": "pass"
  }
}

Полный пример#

Создать задачу, опрашивать каждые 2 секунды, вывести токен:

import os
import time

import requests

API = "https://neurocaptcha.com"
KEY = os.environ["API_KEY"]


def call(method, payload):
    data = requests.post(f"{API}/{method}", json={"clientKey": KEY, **payload}, timeout=30).json()
    if data.get("errorId"):
        raise RuntimeError(f'{data["errorCode"]}: {data.get("errorDescription", "")}')
    return data


task = {
    "type": "TurnstileTask",
    "websiteURL": "https://example.com/login",
    "websiteKey": "0x4AAAAAAA-SITE-KEY",
    "proxyType": "http",
    "proxyAddress": "proxy.example.com",
    "proxyPort": 8080,
    "proxyLogin": "user",
    "proxyPassword": "pass",
}

# 1. create the task: its price is held, not charged
task_id = call("createTask", {"task": task})["taskId"]

# 2. poll every 2 s; a failed task raises with its error code and costs nothing
deadline = time.time() + 300
while time.time() < deadline:
    time.sleep(2)
    result = call("getTaskResult", {"taskId": task_id})
    if result["status"] == "ready":
        print(result["solution"]["token"])
        break
else:
    raise TimeoutError("the task was not solved in time")

Ответ#

getTaskResult после решения:

getTaskResult
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "token": "0.Q2Vo3vPq7TnZxw…",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36"
  },
  "cost": "0.000800",
  "ip": "198.51.100.7",
  "createTime": 1793370000,
  "endTime": 1793370007,
  "solveCount": 1
}

Советы#

  • websiteKey — в атрибуте data-sitekey элемента cf-turnstile или в вызове turnstile.render.
  • Если виджет задаёт action и cData, передавайте их точно: сайт может сверить их с токеном.
  • Вставьте токен в поле cf-turnstile-response (или передайте в колбэк виджета) и отправьте форму.
  • Отправляйте токен через тот же прокси и с тем же userAgent, что и в задаче. Подробнее — Прокси.