Cómo solucionar el error “Enable JavaScript and cookies to continue”
Este mensaje aparece cuando Cloudflare (u otro proxy de seguridad similar) bloquea la solicitud porque detecta que el cliente no cumple con los requisitos mínimos de seguridad: JavaScript deshabilitado o cookies deshabilitadas/expiradas.
🔍 Causa técnica
Cloudflare implementa mecanismos de protección como:
- JavaScript Challenge: El navegador debe ejecutar un script para demostrar que no es un bot.
-
Cookie de verificación: Tras superar el desafío, Cloudflare emite una cookie (
__cf_bmocf_clearance) que valida la sesión.
Si el cliente (navegador o cliente HTTP personalizado) no ejecuta JavaScript o no maneja cookies correctamente, la validación falla y se muestra este mensaje.
✅ Solución definitiva (por escenario)
🌐 Si eres un usuario final (navegador)
-
Habilita JavaScript:
- Chrome:
Configuración > Privacidad y seguridad > Sitios web no seguros > Habilitar JavaScript. - Firefox:
Preferencias > Privacidad y seguridad > Permisos > Habilitar JavaScript.
- Chrome:
-
Habilita cookies de terceros (si usas extensiones como uBlock Origin o Privacy Badger):
- Añade el dominio a la lista blanca.
- Desactiva temporalmente los bloqueadores para probar.
- Borra cookies y caché del dominio afectado.
- Reinicia el navegador y vuelve a cargar la página.
🧪 Si eres desarrollador (automatización / scraping / cliente HTTP)
❌ No uses requests o curl sin soporte JS/cookies → fallarán siempre.
✅ Opción recomendada: Usa un navegador headless con soporte JS y cookies
# Ejemplo con Playwright (recomendado)
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
context = browser.new_context()
page = context.new_page()
# Navega a la URL (Cloudflare se resolverá automáticamente)
page.goto("https://ejemplo.com", wait_until="networkidle")
# Si aún falla, fuerza espera tras el desafío
try:
page.wait_for_selector("#challenge-error-text", timeout=5000)
raise RuntimeError("Cloudflare bloqueó la solicitud. Verifica cookies/JS.")
except:
pass # No hay error → desafío superado
# Ahora puedes hacer scraping
content = page.content()
print(content)
browser.close()
⚠️ Alternativa (no recomendada): Simular el desafío manualmente
- Solo viable si el sitio no usa Cloudflare + Bot Management.
- Requiere analizar el script de desafío, resolverlo (ej. con
cloudscraper), y mantener cookies. - Ejemplo con
cloudscraper(Python):
import cloudscraper
scraper = cloudscraper.create_scraper(
browser={
'browser': 'firefox',
'platform': 'windows',
'mobile': False
}
)
response = scraper.get("https://ejemplo.com")
print(response.text)
⚠️ Advertencia: Cloudflare actualiza sus desafíos frecuentemente.
cloudscrapersuele quedar obsoleto en semanas.
🧠 Pro-tip
-
Nunca confíes en
status_code == 200para validar éxito. Revisa el contenido:
if "Enable JavaScript and cookies to continue" in response.text:
raise RuntimeError("Bloqueo por Cloudflare detectado.")
- Si controlas el servidor: configura Cloudflare para que use "I'm Under Attack" mode solo en endpoints sensibles, o usa Cloudflare Turnstile (reemplazo más moderno y accesible).
- Para pruebas locales: desactiva Cloudflare temporalmente (modo desarrollo) o añade tu IP a la lista blanca.
✅ Solución definitiva: Usa un entorno con JavaScript habilitado y gestión de cookies (Playwright, Selenium, o Puppeteer). No hay atajo fiable para evitar el desafío si el sitio lo requiere.
Top comments (0)