Cloudflare ofrece dos productos distintos de protección contra bots que los desarrolladores suelen confundir: Bot Management (una defensa a nivel de red enterprise) y Turnstile (un widget de reemplazo de CAPTCHA gratuito). Bot Management es una plataforma integral que incluye reglas WAF, rate limiting y análisis de comportamiento. Turnstile es un widget CAPTCHA independiente que cualquier sitio web puede incorporar gratuitamente. Entender la diferencia es clave para elegir el enfoque de automatización adecuado.
Comparación rápida
| Característica | Gestión de robots | torniquete |
|---|---|---|
| Qué es | Plataforma de defensa contra bots empresariales | Widget CAPTCHA gratuito |
| Precio | Plan empresarial ($$$) | Gratis para todos los planes |
| Implementación | Nivel de red (proxy de Cloudflare) | Widget de JavaScript (insertar en la página) |
| Requiere DNS de Cloudflare | si | No (funciona en cualquier sitio) |
| Reto visible | A veces (desafío gestionado) | Rara vez (mayormente invisible) |
| Alcance de detección | Todas las solicitudes de dominio | Acciones de página específicas (envío de formulario, etc.) |
| Puntuación del robot | 1-99 (por solicitud) | Pass/fail (por desafío) |
| Integración WAF | Sí (reglas basadas en la puntuación del bot) | No |
| Desafío de JavaScript | Sí (página de espera de 5 segundos) | Sí (prueba de trabajo de antecedentes) |
| Limitación de tasa | si | No |
| Soporte CaptchaAI | A través de los métodos Turnstile/Challenge | Sí (tasa de éxito del 100%) |
Gestión de bots de Cloudflare (empresarial)
Bot Management es parte del plan Enterprise de Cloudflare. Opera a nivel de red: cada solicitud al dominio se evalúa antes de llegar al servidor de origen.
Cómo funciona la gestión de bots
Request arrives at Cloudflare edge
↓
Bot Management engine evaluates:
├─ Machine learning model (behavioral fingerprint)
├─ Heuristics (known bot patterns)
├─ JavaScript fingerprinting (if JS challenge triggered)
├─ JA3/JA4 TLS fingerprint
├─ HTTP header analysis
└─ IP reputation (Cloudflare sees ~20% of internet traffic)
↓
Bot score assigned: 1 (definitely bot) to 99 (definitely human)
↓
WAF rules act on the score:
- Score > 50 → Allow
- Score 30-50 → Managed challenge
- Score < 30 → Block or JavaScript challenge
Componentes de gestión de bots
| Componente | Propósito |
|---|---|
| Puntuación del robot | Puntuación basada en ML para cada solicitud |
| Desafío gestionado | Muestra adaptativamente el desafío JS o Turnstile |
| Modo de lucha de súper robots | Modo simplificado para planes Pro/Business |
| Análisis de robots | Panel que muestra el tráfico de bots y humanos |
| Reglas personalizadas WAF | Reglas que se activan en los umbrales de puntuación del bot |
| Limitación de tasa | Umbrales de tasa de solicitud por IP/session |
| Detección de JavaScript | Detección de herramientas de automatización y navegador sin cabeza |
Qué encuentra la automatización
Cuando un sitio utiliza Bot Management, las solicitudes automáticas pueden ver:
- Bloqueo directo (403) — Puntuación del bot muy baja, bloques de reglas WAF
- Página de desafío de JavaScript: página "Comprueba tu navegador" de 5 segundos
- Desafío administrado: widget de torniquete o desafío JS
- Pase invisible — Solicitud permitida (puntuación del bot lo suficientemente alta)
Cloudflare Turnstile (CAPTCHA gratuito)
Turnstile es un widget CAPTCHA independiente que reemplaza los CAPTCHA tradicionales. Funciona independientemente de Bot Management y se puede utilizar en cualquier sitio web (no solo en sitios con proxy de Cloudflare).
Cómo funciona el torniquete
Page loads Turnstile widget
↓
Widget runs background checks:
├─ Browser proof-of-work challenge (cryptographic puzzle)
├─ Private Access Token (Apple devices)
├─ Browser environment validation
└─ Cloudflare threat intelligence
↓
Result: cf-turnstile-response token generated
↓
Token submitted with form data
↓
Server validates token via Cloudflare API (siteverify)
Modos de widget de torniquete
| Mode | Comportamiento | Caso de uso |
|---|---|---|
| Administrado | Cloudflare decide entre invisible e interactivo | Predeterminado, recomendado |
| No interactivo | Siempre invisible (solo prueba de trabajo) | Formas de baja fricción |
| Invisible | No hay ningún widget visible, se ejecuta al cargar la página. | Verificación de antecedentes |
Integración de torniquete
<!-- Simple Turnstile integration -->
<div class="cf-turnstile" data-sitekey="0x4AAAAAAAC3DHQhMMQ_Rxrg"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
Resolviendo la gestión de bots frente a torniquete
Resolver torniquete (sencillo)
Turnstile se resuelve mediante el método Turnstile de CaptchaAI con una tasa de éxito del 100%:
import requests
import time
API_KEY = "YOUR_API_KEY"
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "turnstile",
"sitekey": "0x4AAAAAAAC3DHQhMMQ_Rxrg",
"pageurl": "https://example.com/signup",
"json": 1,
})
task_id = submit.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY,
"action": "get",
"id": task_id,
"json": 1,
}).json()
if result.get("status") == 1:
token = result["request"]
print(f"Turnstile token: {token[:50]}...")
break
Resolviendo desafíos de gestión de bots
Bot Management utiliza múltiples capas de defensa. El componente CAPTCHA (cuando está presente) suele ser un desafío administrado que se representa como Turnstile:
# Bot Management flow for automation:
# 1. Make initial request
response = requests.get("https://protected-site.com/api/data")
# 2. Check if challenged
if response.status_code == 403:
# Hard block — need to adjust headers, proxy, or approach
pass
elif "challenge" in response.text.lower() or response.status_code == 503:
# JavaScript challenge or managed challenge
# If it contains a Turnstile widget, solve it:
if "cf-turnstile" in response.text or "challenges.cloudflare.com" in response.text:
# Extract sitekey and solve via CaptchaAI
sitekey = extract_turnstile_sitekey(response.text)
token = solve_turnstile(sitekey, "https://protected-site.com/api/data")
Página Cloudflare Challenge (sin torniquete)
La página de desafío de JavaScript "Comprobación de su navegador" NO es un widget de Turnstile. CaptchaAI maneja esto mediante el método cloudflare_challenge:
submit = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "cloudflare_challenge",
"sitekey": "managed",
"pageurl": "https://protected-site.com/login",
"json": 1,
})
Cuando encuentras cada producto
| Escenario | Producto probable | como identificar |
|---|---|---|
| Página "Comprobación de su navegador" de 5 segundos | Gestión de bots (desafío JS) | cf-chl-omisión, jschl_vc en la fuente de la página |
| Widget de torniquete en un formulario | Torniquete (independiente) | Clase cf-turnstile, challenges.cloudflare.com/turnstile |
| 403 Prohibido con la página de error de Cloudflare | Gestión de bots (bloque duro) | Encabezado cf-ray, plantilla de error de Cloudflare |
| Casilla de verificación interactiva en la página de Cloudflare | Desafío gestionado (administración de bots) | Dominio challenges.cloudflare.com |
| No hay ningún desafío visible, pero se han establecido cookies cf. | Gestión de bots (aprobado) | galleta qa_validation_cookie |
Código de detección
import requests
def identify_cloudflare_protection(url):
"""Identify which Cloudflare protection a URL uses."""
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/120.0.0.0",
}
response = requests.get(url, headers=headers, timeout=15, allow_redirects=False)
html = response.text
result = {
"cloudflare_protected": "cf-ray" in response.headers.get("cf-ray", "")
or "cloudflare" in response.headers.get("server", "").lower(),
"bot_management_challenge": False,
"turnstile_widget": False,
"hard_block": False,
"passed": False,
}
if response.status_code == 403:
result["hard_block"] = True
elif response.status_code == 503 and "jschl" in html:
result["bot_management_challenge"] = True
elif "cf-turnstile" in html:
result["turnstile_widget"] = True
elif response.status_code == 200:
result["passed"] = True
return result
Preguntas frecuentes
¿Puede un sitio utilizar tanto Bot Management como Turnstile?
Sí. Bot Management opera a nivel de red para todas las solicitudes, mientras que Turnstile se puede agregar como un widget en páginas específicas. Un sitio puede usar Bot Management para bloquear bots obvios en el borde y Turnstile en los formularios de inicio de sesión/signup para una verificación adicional.
¿Turnstile es parte de la gestión de bots?
No directamente. El torniquete es un producto separado. Sin embargo, el modo "Desafío administrado" de Bot Management puede representar un widget similar a un torniquete. El enfoque de resolución es el mismo: utilice el solucionador Turnstile de CaptchaAI.
¿Cuál es más difícil de resolver?
La gestión de bots es más difícil porque evalúa cada solicitud a nivel de red con múltiples señales (señales del navegador TLS, reputación de IP, patrones de solicitud). Turnstile por sí solo solo protege envíos de formularios específicos. Para la gestión de bots, necesita encabezados adecuados, configuración TLS y rotación de IP, además de resolver el desafío CAPTCHA.
¿CaptchaAI resuelve ambos?
CaptchaAI resuelve widgets Turnstile (tasa de éxito del 100%) y páginas Cloudflare Challenge. El bloqueo a nivel de red de Bot Management (respuestas 403) requiere infraestructura adicional (encabezados adecuados, servidores proxy) que está fuera del alcance de CaptchaAI: CaptchaAI maneja el componente de desafío CAPTCHA.
Resumen
Cloudflare Bot Management es una defensa a nivel de red empresarial que evalúa cada solicitud con puntuación de ML, reglas WAF y análisis de comportamiento. Cloudflare Turnstile es un widget CAPTCHA gratuito que verifica a los usuarios a través de la prueba de trabajo del navegador. Para la automatización, Turnstile se resuelve directamente conCaptchaAI(tasa de éxito del 100%). Los desafíos de Bot Management requieren una simulación adecuada del navegador más CaptchaAI para el componente de desafío CAPTCHA.
Artículos relacionados
- Comprobación de integridad del navegador Cloudflare frente a Captcha
- Cloudflare Challenge Vs Detección de torniquete
- Comparación de Geetest y Cloudflare Turnstile