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 inverso de seguridad) detecta que el navegador del cliente no cumple con los requisitos mínimos de seguridad para acceder al sitio. Especialmente:

  • JavaScript está deshabilitado o bloqueado (por extensiones, configuración o navegadores antiguos).
  • Las cookies están deshabilitadas o bloqueadas (impidiendo la validación de sesiones o tokens).
  • El navegador no pasa el Challenge de Cloudflare (bot o comportamiento no humano detectado).
  • El cliente usa un scraper, bot mal configurado, o una herramienta de automatización sin headers/navegador real.

⚠️ Nota crítica: Este NO es un error de tu código backend/frontend. Es una defensa en capas del lado del proxy (Cloudflare), y el cliente debe cumplir con los requisitos antes de llegar a tu aplicación.


Pasos para solucionarlo

✅ 1. Verifica que JavaScript esté habilitado en el navegador del cliente

  • En Chrome/Edge: Configuración > Privacidad y seguridad > Configuración de sitios > JavaScript > Permitido.
  • En Firefox: Preferencias > Privacidad y seguridad > Permisos > Habilitar JavaScript.
  • Desactiva temporalmente extensiones como uBlock Origin, Privacy Badger, NoScript, etc., que bloquean JS por defecto.

✅ 2. Habilita cookies de terceros (esencial para Cloudflare)

Cloudflare usa cookies de sesión y challenge tokens que requieren cookies de terceros (no solo del dominio principal).

  • En Chrome/Edge: Configuración > Privacidad y seguridad > Cookies y otros datos de sitios > Permitir cookies de terceros.
  • En Firefox: Preferencias > Privacidad y seguridad > Personalizado > Marcar "Aceptar cookies de sitios externos".

✅ 3. Si eres el desarrollador y estás probando con herramientas (Postman, curl, Puppeteer, etc.)

Estas herramientas no pasan el challenge por defecto. Soluciones:

🔹 Opción A: Usa un navegador real con Puppeteer/Playwright (recomendado)

// Ejemplo con Playwright (Node.js)
const { chromium } = require('playwright');

const browser = await chromium.launch({ headless: false });
const context = await browser.newContext({
  viewport: { width: 1280, height: 720 },
  userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
});
const page = await context.newPage();

await page.goto('https://tu-sitio.com', { waitUntil: 'networkidle' });
// Ahora Cloudflare validará el navegador y permitirá el acceso
Enter fullscreen mode Exit fullscreen mode

🔹 Opción B: Usa cloudscraper (Python) o cloudflare-scrape (Node.js)

# Python con cloudscraper
import cloudscraper

scraper = cloudscraper.create_scraper()
response = scraper.get("https://tu-sitio.com")
print(response.text)
Enter fullscreen mode Exit fullscreen mode

❌ Evita usar curl o fetch sin simulación de navegador:

# Esto FALLARÁ siempre con Cloudflare:
curl https://tu-sitio.com
Enter fullscreen mode Exit fullscreen mode

✅ 4. Si eres administrador del sitio (configuración Cloudflare)

  • Ve a Cloudflare Dashboard > Security > Settings.
  • Revisa el nivel de "Challenge Passage":
    • Low: Solo muestra el challenge a tráfico sospechoso.
    • Medium/High: Bloquea más agresivamente.
  • Considera usar "I'm Under Attack" OFF (solo si no hay ataque real).
  • Si usas Bot Management, deshabilita temporalmente para pruebas.

Bloque de código corregido (ejemplo frontend)

Si el problema ocurre en tu propia web (página de error personalizada), asegúrate de que tu HTML no interfiera con el challenge:

<!-- ❌ MAL: Si tu script bloquea JS o inyecta scripts que rompen el challenge -->
<script>
  // ¡NUNCA deshabilites el comportamiento por defecto de Cloudflare!
  document.addEventListener('DOMContentLoaded', () => {
    // Esto puede interferir con el challenge de Cloudflare
    // Si usas CSP, asegúrate de incluir 'unsafe-inline' solo si es estrictamente necesario
  });
</script>

<!-- ✅ BIEN: Incluye meta tags y CSP seguros pero compatibles -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' 'unsafe-inline' https://www.cloudflare.com; style-src 'self' 'unsafe-inline';">
Enter fullscreen mode Exit fullscreen mode

🔑 Clave: Cloudflare inyecta su propio script en el <head> para resolver el challenge. Si tu CSP o tu código bloquea ese script, el error persistirá.


Pro-tip: Diagnóstico rápido

  1. Abre el sitio en modo incógnito (sin extensiones).
  2. Si funciona → problema de extensiones o cookies.
  3. Usa curl -v https://tu-sitio.com y busca Set-Cookie: __cf_bm= o __cfuid=.
    • Si no aparecen → Cloudflare no está iniciando el challenge.
  4. Usa DevTools > Network y filtra por ?__cf_chl_rt_tk=...:
    • Si la petición falla con 403 o 405 → el challenge no se está completando.

Solución definitiva:

El cliente debe usar un navegador real con JS y cookies habilitados.

Si automatizas: usa Puppeteer/Playwright o herramientas especializadas en bypass de Cloudflare (respetando TOS).

Nunca intentes "saltar" el challenge desde el backend sin simulación de navegador: es imposible sin violar la seguridad del sistema.

Top comments (0)