Cómo eludir Cloudflare Turnstile con Python#

logoNextCaptcha
March 26,2026

¿Qué es Cloudflare Turnstile?#

Cloudflare Turnstile es una alternativa inteligente al CAPTCHA diseñada para verificar usuarios sin desafíos intrusivos. A diferencia de los CAPTCHA tradicionales que requieren seleccionar imágenes o introducir texto, Turnstile ejecuta desafíos invisibles en el navegador para determinar si el visitante es humano. Es ampliamente adoptado por sitios web que utilizan los servicios de Cloudflare y puede ser un obstáculo significativo para el web scraping y los flujos de trabajo automatizados.

Requisitos previos#

Antes de empezar, asegúrate de tener Python 3.7 o superior instalado. También necesitas una clave API de NextCaptcha — regístrate en NextCaptcha para obtener créditos de prueba gratuitos. Luego instala el SDK de Python de NextCaptcha:
pip install nextcaptcha-python

Inicio rápido con el SDK de NextCaptcha#

Primero, crea una instancia de NextCaptchaAPI con tu clave API. Puedes encontrar tu clave de cliente en el panel de NextCaptcha:
from nextcaptcha import NextCaptchaAPI
 
api = NextCaptchaAPI(client_key="YOUR_CLIENT_KEY")
Luego llama al método turnstile con la URL del sitio objetivo y la clave del sitio Turnstile. La clave se encuentra en el atributo data-sitekey del widget Turnstile en la página objetivo:
result = api.turnstile(
    website_url="https://example.com",
    website_key="0x4XXXXXXXXXXXXXXXXX"
)
 
if result["status"] == "ready":
    token = result["solution"]["token"]
    print(f"Turnstile token: {token}")

Ejemplo completo con manejo de errores#

Aquí tienes un ejemplo listo para producción con manejo de errores y soporte de variables de entorno:
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)

Uso de la API directa (sin SDK)#

Si prefieres no usar el SDK, puedes llamar a la API de NextCaptcha directamente con la biblioteca requests. Este enfoque te da control total sobre las solicitudes 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...")
Este enfoque requiere dos llamadas a la API: createTask para enviar el desafío Turnstile, y getTaskResult para consultar la solución. Se recomienda un intervalo de consulta de 3 segundos para evitar límites de velocidad.

Resumen#

En esta guía, cubrimos dos métodos para eludir Cloudflare Turnstile con Python: el SDK de NextCaptcha para un enfoque sencillo, y la API directa para control total. NextCaptcha resuelve automáticamente el desafío Turnstile y devuelve un token válido. Para más detalles, consulta los enlaces a continuación: