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
cookiespara 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), oaxiossin emular navegador. - Navegadores con JavaScript o cookies deshabilitados.
- Extensiones de bloqueo (uBlock Origin, Privacy Badger) interfiriendo con cookies.
- Configuración incorrecta de
SameSiteoSecureen 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 sitiosesté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
import cloudscraper
scraper = cloudscraper.create_scraper(
browser={
'browser': 'firefox',
'platform': 'windows',
'mobile': False
}
)
response = scraper.get("https://tu-sitio.com")
print(response.text)
⚠️
cloudscraperincluye 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 usarSecure(solo en HTTPS). - En desarrollo local (HTTP), evita
SameSite=Noneo usalocalhostcon 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
});
🧪 Verificación rápida
Abre la consola del navegador (F12) y ejecuta:
navigator.cookieEnabled // Debe devolver true
Luego recarga la página. Si sigue fallando, revisa los encabezados de respuesta HTTP:
-
Set-Cookiedebe estar presente. -
CF-Challengeocf-browser-verifyen 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:3000→localhost:8080(tu app). - O usa
ngrok http 3000y configura Cloudflare para excluir ese subdominio con una regla WAF:
If (http.host eq "tu-subdominio.ngrok.io") then (skip WAF)
Esto evita que Cloudflare inyecte el desafío en desarrollo.
Top comments (0)