Comment contourner Cloudflare Turnstile avec Python#

logoNextCaptcha
March 26,2026

Qu'est-ce que Cloudflare Turnstile ?#

Cloudflare Turnstile est une alternative CAPTCHA intelligente conçue pour vérifier les utilisateurs sans défis intrusifs. Contrairement aux CAPTCHA traditionnels nécessitant une sélection d'images ou une saisie de texte, Turnstile exécute des défis de navigateur invisibles pour déterminer si le visiteur est humain. Il est largement adopté par les sites utilisant les services de Cloudflare et peut constituer un obstacle majeur pour le web scraping et les flux de travail automatisés.

Prérequis#

Avant de commencer, assurez-vous d'avoir Python 3.7 ou supérieur installé. Vous aurez également besoin d'une clé API NextCaptcha — inscrivez-vous sur NextCaptcha pour obtenir des crédits d'essai gratuits. Ensuite, installez le SDK Python NextCaptcha :
pip install nextcaptcha-python

Démarrage rapide avec le SDK NextCaptcha#

Créez d'abord une instance NextCaptchaAPI avec votre clé API. Vous trouverez votre clé client dans le tableau de bord NextCaptcha :
from nextcaptcha import NextCaptchaAPI
 
api = NextCaptchaAPI(client_key="YOUR_CLIENT_KEY")
Appelez ensuite la méthode turnstile avec l'URL du site cible et la clé du site Turnstile. La clé se trouve dans l'attribut data-sitekey du widget Turnstile sur la page cible :
result = api.turnstile(
    website_url="https://example.com",
    website_key="0x4XXXXXXXXXXXXXXXXX"
)
 
if result["status"] == "ready":
    token = result["solution"]["token"]
    print(f"Turnstile token: {token}")

Exemple complet avec gestion des erreurs#

Voici un exemple prêt pour la production avec gestion des erreurs et support des variables d'environnement :
import os
import sys
from nextcaptcha import NextCaptchaAPI
 
CLIENT_KEY = os.getenv("NEXTCAPTCHA_KEY", "YOUR_CLIENT_KEY")
WEBSITE_URL = "https://example.com"
WEBSITE_KEY = "0x4XXXXXXXXXXXXXXXXX"
 
api = NextCaptchaAPI(client_key=CLIENT_KEY)
 
try:
    result = api.turnstile(
        website_url=WEBSITE_URL,
        website_key=WEBSITE_KEY
    )
 
    if result["status"] == "ready":
        token = result["solution"]["token"]
        print(f"Turnstile solved successfully!")
        print(f"Token: {token[:50]}...")
    else:
        print(f"Failed to solve: {result.get('errorDescription', 'Unknown error')}")
        sys.exit(1)
 
except Exception as e:
    print(f"Error: {e}")
    sys.exit(1)

Utilisation de l'API brute (sans SDK)#

Si vous préférez ne pas utiliser le SDK, vous pouvez appeler directement l'API NextCaptcha avec la bibliothèque requests. Cette approche vous donne un contrôle total sur les requêtes HTTP :
import requests
import time
 
API_KEY = "YOUR_API_KEY"
WEBSITE_URL = "https://example.com"
WEBSITE_KEY = "0x4XXXXXXXXXXXXXXXXX"
 
# Step 1: Create task
response = requests.post("https://api.nextcaptcha.com/createTask", json={
    "clientKey": API_KEY,
    "task": {
        "type": "TurnstileTaskProxyless",
        "websiteURL": WEBSITE_URL,
        "websiteKey": WEBSITE_KEY
    }
})
 
data = response.json()
if data.get("errorId", 0) != 0:
    print(f"Error creating task: {data.get('errorDescription')}")
    exit()
 
task_id = data["taskId"]
print(f"Task created: {task_id}")
 
# Step 2: Poll for result
while True:
    time.sleep(3)
    result = requests.post("https://api.nextcaptcha.com/getTaskResult", json={
        "clientKey": API_KEY,
        "taskId": task_id
    }).json()
 
    if result["status"] == "ready":
        token = result["solution"]["token"]
        print(f"Solved! Token: {token[:50]}...")
        break
    elif result["status"] == "failed":
        print(f"Failed: {result.get('errorDescription')}")
        break
    else:
        print("Waiting for solution...")
Cette approche nécessite deux appels API : createTask pour soumettre le défi Turnstile, et getTaskResult pour interroger la solution. Un intervalle de 3 secondes est recommandé pour éviter les limitations de débit.

Résumé#

Dans ce guide, nous avons couvert deux méthodes pour contourner Cloudflare Turnstile avec Python : le SDK NextCaptcha pour une approche simple, et l'API brute pour un contrôle total. NextCaptcha gère automatiquement la résolution du défi Turnstile et renvoie un jeton valide. Pour plus de détails, consultez les liens ci-dessous :