DEV Community

Erick Eduardo Ramos
Erick Eduardo Ramos

Posted on

Cómo solucionar \"Enable JavaScript and cookies to continue\"

Cómo solucionar "Enable JavaScript and cookies to continue"

Este mensaje aparece cuando Cloudflare (u otro proxy de seguridad similar) bloquea la solicitud porque detecta que el navegador no cumple con los requisitos mínimos de seguridad: JavaScript deshabilitado o cookies rechazadas. No es un error de tu código front-end, sino una defensa activa contra bots y scraping.


🔍 Causa raíz técnica

Cloudflare implementa desafíos de verificación (como Browser Integrity Check o Managed Challenges) que:

  • Requieren ejecutar JavaScript para validar que el cliente es un navegador real.
  • Almacenan tokens temporales en cookies para identificar sesiones confiables.
  • Bloquean solicitudes sin cookies habilitadas o sin ejecutar el script de verificación.

Escenarios comunes donde ocurre:

  • Pruebas automatizadas con curl, requests (Python), o axios sin emular navegador.
  • Navegadores con JavaScript o cookies deshabilitados.
  • Extensiones de bloqueo (uBlock Origin, Privacy Badger) interfiriendo con cookies.
  • Configuración incorrecta de SameSite o Secure en cookies en entornos HTTPS.

✅ Pasos para solucionarlo

1. Verifica que JavaScript esté habilitado en el navegador

  • Chrome/Edge: Configuración > Privacidad y seguridad > Configuración de sitios > JavaScript > Permitido.
  • Firefox: Preferencias > Privacidad y seguridad > Permisos > Habilitar JavaScript.

2. Asegura que las cookies estén habilitadas

  • En el navegador, deshabilita temporalmente extensiones de privacidad (uBlock, Ghostery, etc.).
  • Verifica que Cookies y datos de sitios estén permitidos (Chrome: Configuración > Privacidad y seguridad > Cookies y otros datos de sitios).

3. Si usas un cliente HTTP (curl, Python requests, etc.): simula un navegador real

Ejemplo en Python con requests + cloudscraper (recomendado para bypass):

pip install cloudscraper
Enter fullscreen mode Exit fullscreen mode
import cloudscraper

scraper = cloudscraper.create_scraper(
    browser={
        'browser': 'firefox',
        'platform': 'windows',
        'mobile': False
    }
)
response = scraper.get("https://tu-sitio.com")
print(response.text)
Enter fullscreen mode Exit fullscreen mode

⚠️ cloudscraper incluye un motor JS simplificado y maneja cookies dinámicas automáticamente.

4. Si controlas el backend (Cloudflare config): ajusta el nivel de seguridad

En el panel de Cloudflare:

  • Ve a Security > WAF > Tools.
  • Reduce el nivel de Challenge Passage a Low (solo para desarrollo).
  • O desactiva temporalmente el modo Under Attack.

🛑 Nunca desactives Cloudflare en producción. Usa ajustes temporales solo en entornos de desarrollo.

5. Valida cookies en tu aplicación

Asegúrate de que tus cookies no tengan restricciones problemáticas:

  • Si usas SameSite=None, debes usar Secure (solo en HTTPS).
  • En desarrollo local (HTTP), evita SameSite=None o usa localhost con certificado TLS (ngrok, etc.).

Ejemplo de cookie correcta en Node.js/Express:

res.cookie('session', token, {
  httpOnly: true,
  secure: process.env.NODE_ENV === 'production', // true solo en HTTPS
  sameSite: 'lax', // o 'strict' si no requiere cross-site
  maxAge: 24 * 60 * 60 * 1000
});
Enter fullscreen mode Exit fullscreen mode

🧪 Verificación rápida

Abre la consola del navegador (F12) y ejecuta:

navigator.cookieEnabled // Debe devolver true
Enter fullscreen mode Exit fullscreen mode

Luego recarga la página. Si sigue fallando, revisa los encabezados de respuesta HTTP:

  • Set-Cookie debe estar presente.
  • CF-Challenge o cf-browser-verify en headers indican que Cloudflare está activo.

💡 Pro-tip: Evita el desafío en desarrollo

Para entornos locales, usa localhost sin pasar por Cloudflare:

  • Configura tu proxy inverso (Nginx, Caddy) para redirigir localhost:3000localhost:8080 (tu app).
  • O usa ngrok http 3000 y configura Cloudflare para excluir ese subdominio con una regla WAF:
If (http.host eq "tu-subdominio.ngrok.io") then (skip WAF)
Enter fullscreen mode Exit fullscreen mode

Esto evita que Cloudflare inyecte el desafío en desarrollo.

Top comments (0)