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 rechazadas.

🔍 Causa técnica

Cloudflare implementa mecanismos de verificación de navegador (como Browser Integrity Check o Challenge) para filtrar tráfico malicioso. Cuando una solicitud no cumple con:

  • Ejecutar JavaScript (necesario para calcular tokens como cf_chl_hsh o cf_chl_opt)
  • Aceptar y enviar cookies de sesión (__cf_bm, cf_clearance, etc.)

...el servidor responde con una página de desafío (HTTP 200 con contenido HTML de bloqueo), en lugar de servir la página real.

Esto ocurre comúnmente en:

  • Solicitudes automatizadas (scraping, bots, scripts sin navegador)
  • Navegadores con JavaScript deshabilitado
  • Configuraciones de privacidad estrictas (bloqueo de cookies de terceros)
  • Uso de proxies o VPNs que alteran headers o fingerprints

✅ Solución definitiva (pasos)

1. Si eres usuario final

  • Habilita JavaScript en tu navegador.
  • Acepta cookies (especialmente de *.cloudflare.com).
  • Desactiva temporalmente extensiones como uBlock Origin o Privacy Badger (pueden bloquear scripts de verificación).
  • Espera 5–10 segundos tras cargar la página: Cloudflare ejecuta un desafío invisible y luego redirige automáticamente.

2. Si eres desarrollador (automatización/scraping)

✅ Opción recomendada: Usa un navegador real con headless

# Ejemplo con Playwright (Python)
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless="new")
    page = browser.new_page()
    page.goto("https://tu-sitio.com")
    # Cloudflare resuelve el desafío automáticamente
    content = page.content()
    # ...procesa el contenido
    browser.close()
Enter fullscreen mode Exit fullscreen mode

✅ Opción avanzada: Simula un navegador real (sin headless)

  • Usa cloudscraper (Python) o cloudflare-scrape (Node.js), que incluyen lógica para resolver desafíos:
# Python con cloudscraper
import cloudscraper

scraper = cloudscraper.create_scraper()
resp = scraper.get("https://tu-sitio.com")
print(resp.text)  # Ya resuelto el desafío
Enter fullscreen mode Exit fullscreen mode

❌ Evita:

  • requests/urllib puros: no ejecutan JS ni manejan cookies dinámicas.
  • curl sin opciones avanzadas: no pasa los desafíos de Cloudflare.
  • Deshabilitar Cloudflare en producción: compromete la seguridad.

🛠️ Bloque de código corregido (ejemplo con Playwright)

# ✅ Solución robusta para scraping
from playwright.sync_api import sync_playwright
import time

def bypass_cloudflare(url: str) -> str:
    with sync_playwright() as p:
        browser = p.chromium.launch(headless="new")
        context = browser.new_context(
            viewport={"width": 1920, "height": 1080},
            user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
        )
        page = context.new_page()
        page.goto(url, wait_until="networkidle")

        # Espera explícita si Cloudflare lanza un desafío manual
        try:
            page.wait_for_selector("#challenge-success-text", timeout=10000)
        except:
            pass  # No hay desafío o ya se resolvió

        return page.content()

# Uso
html = bypass_cloudflare("https://ejemplo.com")
Enter fullscreen mode Exit fullscreen mode

💡 Pro-tip

  • Cloudflare no bloquea permanentemente: El bloqueo es transitorio (5–10 segundos). Si usas requests, cada llamada reinicia el desafío → bucle infinito.
  • Guarda cookies y headers: En automatización, persiste la sesión (cf_clearance + cookies) entre sesiones para evitar repetir el desafío.
  • Verifica headers: Asegúrate de enviar Accept-Language, Sec-Fetch-*, y Referer realistas. Cloudflare analiza el fingerprint del navegador.
  • Si controlas el servidor: En Cloudflare Dashboard → SecurityBot Management, ajusta el nivel de desafío ("Low", "Medium", "High") o añade tu IP a la lista blanca.

⚠️ Importante: No intentes "bypassear" Cloudflare en sitios que no te pertenecen. Puede violar sus Términos de Servicio y generar bloqueos permanentes.

Top comments (0)