DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

Cómo solucionar el error “Enable JavaScript and cookies to continue”

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_bm o cf_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)

  1. Habilita JavaScript:
    • Chrome: Configuración > Privacidad y seguridad > Sitios web no seguros > Habilitar JavaScript.
    • Firefox: Preferencias > Privacidad y seguridad > Permisos > Habilitar JavaScript.
  2. 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.
  3. Borra cookies y caché del dominio afectado.
  4. 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()
Enter fullscreen mode Exit fullscreen mode

⚠️ 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)
Enter fullscreen mode Exit fullscreen mode

⚠️ Advertencia: Cloudflare actualiza sus desafíos frecuentemente. cloudscraper suele quedar obsoleto en semanas.


🧠 Pro-tip

  • Nunca confíes en status_code == 200 para validar éxito. Revisa el contenido:
  if "Enable JavaScript and cookies to continue" in response.text:
      raise RuntimeError("Bloqueo por Cloudflare detectado.")
Enter fullscreen mode Exit fullscreen mode
  • 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)