Cómo solucionar el error “Enable JavaScript and cookies to continue”
Este mensaje aparece cuando Cloudflare (u otro proxy inverso de seguridad) bloquea la solicitud del cliente porque detecta que el navegador no cumple con los requisitos mínimos de seguridad: JavaScript deshabilitado o cookies rechazadas. Es un mecanismo anti-bot y anti-abuso, no un error de tu código front-end.
🔍 Raíz técnica
Cloudflare (o similar, como AWS WAF, Akamai, etc.) inyecta un challenge (desafío) en la respuesta HTTP para verificar si el cliente es un navegador real. Si el navegador no ejecuta JavaScript ni acepta cookies, no puede superar el desafío y se muestra este mensaje.
Causas comunes:
- Pruebas automatizadas con herramientas como
curl,requests(Python), o navegadores headless sin configuración adecuada. - Extensiones del navegador que bloquean JavaScript o cookies (uBlock Origin, Privacy Badger, etc.).
- Configuración de privacidad estricta del navegador (modo incógnito con bloqueo de cookies de terceros).
- Solicitudes desde scripts backend que no simulan un navegador real (sin
User-Agent, sin cookies, sin JS).
✅ Solución definitiva (por escenario)
🛠️ 1. Si estás haciendo pruebas con herramientas de automatización (Python/Node.js/etc.)
No uses solicitudes HTTP simples (requests, axios, curl). Debes simular un navegador real.
✅ Solución recomendada: Usa Playwright o Puppeteer
# Ejemplo con Playwright (Python)
pip install playwright
playwright install chromium
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto("https://tu-sitio.com")
# El desafío se resuelve automáticamente (si Cloudflare no usa reCAPTCHA avanzado)
content = page.content()
print(content)
browser.close()
💡 Nota crítica: Cloudflare ahora usa Browser Integrity Check y Interactive Challenges. Si el sitio usa Cloudflare Under Attack Mode o Managed Challenges, incluso Playwright puede fallar. En ese caso, usa
headful(navegador visible) y espera a que el desafío se resuelva.
🌐 2. Si eres usuario final (navegador)
- Desactiva temporalmente bloqueadores de anuncios/privacidad (uBlock, AdGuard, Privacy Badger).
-
Habilita JavaScript y cookies:
- Chrome:
Configuración → Privacidad y seguridad → Seguridad → Habilitar JavaScript. - Cookies:
Configuración → Privacidad y seguridad → Cookies y otros datos de sitio → Permitir cookies.
- Chrome:
- Prueba en modo incógnito limpio (sin extensiones).
- Limpia cookies y caché del dominio afectado.
🧰 3. Si eres desarrollador del sitio (configuración Cloudflare)
Si tú controlas el dominio y quieres evitar el desafío innecesario:
-
En Cloudflare Dashboard → Security → WAF → Rules:
- Busca reglas como "Browser Integrity Check" o "JavaScript Challenge".
- Desactívalas solo si tu tráfico es confiable (no recomendado en producción).
- Opción más segura: Usa Managed Challenges y configura reglas para excluir IPs internas o bots legítimos (ej. Googlebot).
⚠️ Nunca desactives todos los desafíos en producción. Esto expone tu sitio a ataques DDoS y scraping masivo.
🧪 Verificación rápida
- Abre la consola del navegador (
F12). - Ve a la pestaña Network.
- Recarga la página.
- Busca la solicitud principal (status
200o403). - Si la respuesta contiene
<span id="challenge-error-text">, el desafío no se resolvió.
📌 Pro-tip
-
Cloudflare no permite bypass programático ético. Cualquier librería que prometa "saltar Cloudflare" (ej.
cloudscraper) es frágil, insegura y suele romperse con actualizaciones de Cloudflare. - Si necesitas scraping, usa la API oficial del sitio o pide acceso a un partner program.
- Para pruebas internas, usa IPs whitelisted en Cloudflare o despliega en un entorno sin WAF.
✅ Solución inmediata para desarrollo local:
Ejecuta tu app en localhost y configura Cloudflare para excluir localhost del WAF (o usa cf-no-challenge en el header de solicitud si estás en modo dev — solo en entornos controlados).
Top comments (0)