Тип задачи
Cloudflare Turnstile
TurnstileTaskваш прокси
Передайте параметры страницы — получите готовый токен в том же формате ответа, что и у остальных типов.
С вашим прокси: задача решается через переданный прокси, и токен совпадает с вашим IP. Данные прокси удаляются после решения.
Живые метрики, 24 ч
Живые метрики этого типа появятся на статус-странице после запуска.
Параметры задачи
| Параметр | Тип | обязательный | Параметры задачи |
|---|---|---|---|
type | string | обязательный | TurnstileTask |
websiteURL | string | обязательный | Полный URL страницы с капчей. |
websiteKey | string | обязательный | Ключ сайта (data-sitekey или параметр k запроса anchor). |
action | string | необязательный | action виджета Turnstile (data-action), если он задан. |
turnstileCData | string | необязательный | cData виджета Turnstile (data-cdata), если он задан. |
userAgent | string | необязательный | User-Agent для решения; отправляйте токен с ним же. |
cookies | string | необязательный | Cookies целевого сайта в формате key1=value1; key2=value2. |
proxyType | string | обязательный | http, socks4 или socks5. |
proxyAddress | string | обязательный | IP или хост прокси (только публичные адреса). |
proxyPort | integer | обязательный | Порт прокси. |
proxyLogin | string | необязательный | Логин прокси, если нужна авторизация. |
proxyPassword | string | необязательный | Пароль прокси. Удаляется после решения задачи. |
Пример
import time
import requests
API = "https://"
KEY = "YOUR_API_KEY"
# 1. create a task: the price is held, not charged
task = requests.post(f"{API}/createTask", json={
"clientKey": KEY,
"task": {
"type": "TurnstileTask",
"websiteURL": "https://example.com/login",
"websiteKey": "0x4AAAAAAA-SITE-KEY",
"proxyType": "http",
"proxyAddress": "203.0.113.10",
"proxyPort": 8080,
"proxyLogin": "user",
"proxyPassword": "pass",
},
}).json()
if task["errorId"]:
raise RuntimeError(task["errorCode"])
# 2. poll the result (or pass "callbackUrl" and get a signed webhook)
while True:
time.sleep(3)
res = requests.post(f"{API}/getTaskResult",
json={"clientKey": KEY, "taskId": task["taskId"]}).json()
if res["errorId"]:
raise RuntimeError(res["errorCode"])
if res["status"] == "ready":
print(res["solution"]["token"])
break
Другие типы задач
- reCAPTCHA v2
RecaptchaV2TaskProxyless0,60 $ - reCAPTCHA v2
RecaptchaV2Task0,60 $ - reCAPTCHA v2 Enterprise
RecaptchaV2EnterpriseTaskProxyless1,50 $ - reCAPTCHA v2 Enterprise
RecaptchaV2EnterpriseTask1,50 $ - reCAPTCHA v3
RecaptchaV3TaskProxyless0,90 $ - reCAPTCHA v3 Enterprise
RecaptchaV3EnterpriseTaskProxyless2,00 $ - reCAPTCHA v3 Enterprise
RecaptchaV3EnterpriseTask2,00 $ - Cloudflare Turnstile
TurnstileTaskProxyless0,80 $ - Cloudflare Challenge
CloudflareChallengeTaskProxyless1,20 $ - Cloudflare Challenge
CloudflareChallengeTask1,20 $ - GeeTest v3
GeeTestTaskProxyless0,90 $ - GeeTest v3
GeeTestTask0,90 $ - GeeTest v4
GeeTestTaskProxylessV40,90 $ - GeeTest v4
GeeTestTaskV40,90 $ - Lemin
LeminTaskProxyless1,20 $ - Lemin
LeminTask1,20 $ - ARCaptcha
ARCaptchaTaskProxyless1,20 $ - ARCaptcha
ARCaptchaTask1,20 $ - ArvanCloud
ArvanCloudTaskProxyless1,20 $ - ArvanCloud
ArvanCloudTask1,20 $