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"

¿Por qué ocurre este error?

Este mensaje aparece cuando Cloudflare (u otro proxy de seguridad similar) bloquea la solicitud porque el navegador no cumple con los requisitos mínimos de seguridad. Específicamente:

  • JavaScript está deshabilitado o bloqueado (Cloudflare lo usa para ejecutar un challenge de verificación).
  • Las cookies no están habilitadas o no se están aceptando (Cloudflare usa una cookie temporal __cf_bm para validar que el cliente es humano).
  • El navegador es bloqueado por comportamiento sospechoso (scraping, bots, proxies mal configurados, o uso de User-Agents no estándar).

⚠️ Importante: Este no es un error de tu código frontend/backend. Es una defensa activa en el nivel de red/infraestructura.


Solución definitiva (pasos prácticos)

✅ 1. Verifica que JavaScript y cookies estén habilitados en el navegador cliente

  • Chrome/Edge: Configuración → Privacidad y seguridad → Cookies y otros datos de sitio → Habilitar "Permitir cookies de terceros".
  • Firefox: Preferencias → Privacidad y seguridad → Cookies y datos de sitios → Seleccionar "Aceptadas".
  • Desactiva extensiones como uBlock Origin, Privacy Badger, o scripts bloqueadores que interfieran con cdn-cgi/ o cloudflare.com.

✅ 2. Si usas un scraper/bot (Python, Playwright, Puppeteer, etc.)

Caso A: Usando requests o urllibNO FUNCIONARÁ

Estos no ejecutan JS ni gestionan cookies dinámicas. Debes usar un navegador headless.

Caso B: Usa Playwright (recomendado)

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context(
        viewport={"width": 1280, "height": 720},
        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()

    # Visita la URL (Cloudflare resolverá el challenge automáticamente)
    page.goto("https://ejemplo.com", wait_until="networkidle")

    # Ahora sí puedes extraer contenido
    content = page.content()
    print(content)

    browser.close()
Enter fullscreen mode Exit fullscreen mode

Caso C: Usa Puppeteer con bypass manual (solo para desarrollo)

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    headless: 'new',
    args: ['--disable-blink-features=AutomationControlled']
  });
  const page = await browser.newPage();

  // Evitar detección de bot
  await page.evaluateOnNewDocument(() => {
    delete navigator.__proto__.webdriver;
    navigator.plugins.__defineGetter__('length', () => 5);
  });

  await page.goto('https://ejemplo.com', { waitUntil: 'networkidle0' });

  // Esperar a que Cloudflare resuelva el challenge (max 15s)
  await page.waitForSelector('#challenge-form', { timeout: 15000 }).catch(() => {});

  const content = await page.content();
  console.log(content);

  await browser.close();
})();
Enter fullscreen mode Exit fullscreen mode

✅ 3. Si controlas el servidor detrás de Cloudflare

Asegura que:

  • No hayas activado "Under Attack Mode" (Cloudflare → Security → WAF → Desactiva si no es necesario).
  • La zona DNS esté correctamente configurada (SSL/TLS → Full (strict) o Full).
  • No hayas bloqueado IPs legítimas en Firewall → Firewall Rules.

Opcional: Usa Cloudflare Turnstile (reemplazo de reCAPTCHA)


Pro-tip: Diagnóstico rápido

  1. Abre DevTools → Network tab.
  2. Filtra por cdn-cgi → Si ves una solicitud a cdn-cgi/challenge-platform/h/b/orchestrate/chl_page que falla con 403, es Cloudflare bloqueando.
  3. Prueba desde otro navegador/device sin extensiones.
  4. Usa curl -v https://ejemplo.com → Si la respuesta incluye <form id="challenge-form">, el servidor está aplicando el challenge.

🔥 Consejo final: Si es una integración automatizada (CI/CD, scraping), nunca uses requests. Usa Playwright o Puppeteer con rotación de User-Agent y proxy limpio. Cloudflare detecta fácilmente sesiones sin JS ejecutado.


Resultado esperado: El usuario pasa el desafío sin ver el mensaje, y la página carga normalmente.

Top comments (0)