TurnstileTask#


Méthode de résolution basée sur proxy pour contourner les pages de protection 403 de Cloudflare.
Renvoie un cookie cf_clearance et une chaîne user-agent correspondante qui peuvent être utilisés pour accéder aux pages protégées par Cloudflare qui renvoient des erreurs 403 Forbidden.
Prix: $1.0/K

TurnstileTask Structure de l'objet de tâche#

nomtaperRequisDescription
typeStringOuiTurnstileTask
websiteURLStringOuiL'URL complète de la page de protection 403 de Cloudflare
htmlPageBase64StringNonContenu HTML complet de la page 403 encodé en Base64. Optionnel - si non fourni, le système récupérera automatiquement la page via votre proxy (Mode de récupération automatique).
proxyTypeStringOuiType de proxy : `http`, `socks4`, `socks5`
proxyAddressStringOuiAdresse IP ou nom d'hôte du serveur proxy
proxyPortIntegerOuiport proxy
proxyLoginStringNonConnexion de l'agent
proxyPasswordStringNonMot de passe de l'agent

Mode 1 : Récupération automatique#

Lorsque htmlPageBase64 n'est pas fourni, le système récupère automatiquement la page 403 via votre proxy. Utilisez ce mode lorsque le site web cible renvoie toujours une page 403 quelle que soit l'adresse IP du visiteur.

Mode 2 : Soumission manuelle du HTML#

Lorsque htmlPageBase64 est fourni, vous capturez le contenu HTML de la page 403, l'encodez en base64 et l'envoyez dans la requête. Utilisez ce mode lorsque le site web cible n'affiche une page 403 que pour certaines adresses IP.

Exemple de demande#

Point de terminaison de l'API: https://api.nextcaptcha.com/createTask

méthode: POST

Type de contenu: application/json

Mode 1 : Récupération automatique#

{
    "clientKey":"api key",
    "task": {
        "type":"TurnstileTask",
        "websiteURL":"https://example.com",
        "proxyType":"http",
        "proxyAddress":"your_proxy_address",
        "proxyPort":1234,
        "proxyLogin":"your_proxy_login",
        "proxyPassword":"your_proxy_password"
    }
}

Mode 2 : Soumission manuelle du HTML#

{
    "clientKey":"api key",
    "task": {
        "type":"TurnstileTask",
        "websiteURL":"https://example.com",
        "htmlPageBase64":"PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+...",
        "proxyType":"http",
        "proxyAddress":"your_proxy_address",
        "proxyPort":1234,
        "proxyLogin":"your_proxy_login",
        "proxyPassword":"your_proxy_password"
    }
}

Exemple de réponse#

{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "cf_clearance": "abc123def456...",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36"
  },
  "createTime": 1701234567890,
  "endTime": 1701234567890
}

Important : Le cookie cf_clearance est lié à trois facteurs qui doivent TOUS correspondre lorsque vous utilisez le cookie pour accéder au site web cible :

  • Empreinte TLS : Vous devez utiliser une empreinte TLS de Windows Chrome version 136 ou ultérieure.
  • Adresse IP : Vous devez utiliser la même adresse IP du proxy qui a été utilisée lors de la résolution.
  • User-Agent : Vous devez utiliser exactement la chaîne user-agent renvoyée dans la réponse de la solution.
Si l'un de ces trois facteurs (empreinte TLS, adresse IP, User-Agent) ne correspond pas, le site web cible renverra toujours une erreur 403 Forbidden.

Exemple de code#

import requests
import time
 
CLIENT_KEY = "YOUR_CLIENT_KEY"
WEBSITE_URL = "https://example.com"
PROXY_TYPE = "http"
PROXY_ADDRESS = "your_proxy_address"
PROXY_PORT = 1234
PROXY_LOGIN = "your_proxy_login"
PROXY_PASSWORD = "your_proxy_password"
 
# Step 1: Create task
# Auto Fetch Mode (without htmlPageBase64)
# For sites that always return 403 regardless of IP
task_data = {
    "clientKey": CLIENT_KEY,
    "task": {
        "type": "TurnstileTask",
        "websiteURL": WEBSITE_URL,
        "proxyType": PROXY_TYPE,
        "proxyAddress": PROXY_ADDRESS,
        "proxyPort": PROXY_PORT,
        "proxyLogin": PROXY_LOGIN,
        "proxyPassword": PROXY_PASSWORD
    }
}
 
# Manual Mode: add htmlPageBase64 to the task
# For sites that only return 403 for certain IPs
# task_data["task"]["htmlPageBase64"] = "PCFET0NUWVBFIGh0bWw+..."
 
response = requests.post(
    "https://api.nextcaptcha.com/createTask",
    json=task_data
)
result = response.json()
task_id = result["taskId"]
 
# Step 2: Poll for result
while True:
    time.sleep(3)
    response = requests.post(
        "https://api.nextcaptcha.com/getTaskResult",
        json={
            "clientKey": CLIENT_KEY,
            "taskId": task_id
        }
    )
    result = response.json()
    if result["status"] == "ready":
        cf_clearance = result["solution"]["cf_clearance"]
        user_agent = result["solution"]["userAagent"]
        print(f"cf_clearance: {cf_clearance}")
        print(f"userAagent: {userAgent}")
        break
    elif result["status"] == "failed":
        print(f"Task failed: {result.get('errorDescription')}")
        break
 
# Step 3: Use the cookie with matching TLS, IP, and User-Agent
# IMPORTANT: TLS fingerprint must be Chrome 136+
# IMPORTANT: Must use the same proxy IP and returned user-agent
session = requests.Session()
session.cookies.set("cf_clearance", cf_clearance, domain=".example.com")
session.headers.update({"User-Agent": user_agent})
session.proxies = {
    "https": f"http://{PROXY_LOGIN}:{PROXY_PASSWORD}@{PROXY_ADDRESS}:{PROXY_PORT}"
}
response = session.get(WEBSITE_URL)
print(f"Status: {response.status_code}")

Liens connexes#