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) detecta que el navegador del usuario no cumple con los requisitos mínimos
Cómo solucionar el error “Enable JavaScript and cookies to continue”
Este mensaje aparece cuando Cloudflare (u otro proxy de seguridad similar) detecta que el navegador del usuario no cumple con los requisitos mínimos para acceder al sitio: JavaScript deshabilitado o cookies bloqueadas. Pero en entornos de desarrollo o automatización, este error suele ser causado por una falla en la configuración del cliente HTTP o del entorno de ejecución.
🔍 Causa raíz técnica
Cloudflare implementa un JavaScript Challenge como mecanismo anti-bot. Cuando un cliente (navegador, script, scraper, etc.) hace una solicitud HTTP sin ejecutar JavaScript ni mantener sesiones con cookies, Cloudflare responde con una página intermedia que requiere ejecutar JS para generar un token de validación (cf_clearance).
En desarrollo, esto ocurre comúnmente por:
-
Uso de
curl,requestsoaxiossin manejar cookies ni JS. - Bloqueo de cookies por configuración del navegador o extensión (uBlock, Privacy Badger).
-
Solicitudes desde entornos sin motor JS (Node.js sin Puppeteer, Python sin
cloudscraperorequests+ sesiones). - Redirecciones mal manejadas tras el desafío JS.
✅ Solución definitiva (por escenario)
🧪 Caso 1: Automatización (Python, Node.js, etc.)
✅ Solución con cloudscraper (Python)
import cloudscraper
scraper = cloudscraper.create_scraper(
browser={
'browser': 'firefox',
'platform': 'windows',
'mobile': False
}
)
url = "https://tu-sitio.com"
response = scraper.get(url)
print(response.text)
Nota:
cloudscraperresuelve el desafío JS internamente usando V8 (requierenodeen el sistema o usa su versión embebida).
✅ Solución con Puppeteer (Node.js)
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: 'new',
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
const page = await browser.newPage();
await page.goto('https://tu-sitio.com', { waitUntil: 'networkidle0' });
// Espera a que Cloudflare resuelva el desafío (se detecta por la ausencia del error)
await page.waitForSelector('#challenge-error-text', { timeout: 0, hidden: true });
const content = await page.content();
console.log(content);
await browser.close();
})();
Requiere:
npm install puppeteery Chrome/Chromium instalado.
🌐 Caso 2: Navegador web (usuario final)
-
Habilita JavaScript:
- Chrome:
Configuración → Privacidad y seguridad → Seguridad → Habilitar JavaScript. - Firefox:
Preferencias → Privacidad y seguridad → Permisos → Habilitar JavaScript. - Edge:
Configuración de cookies y permisos del sitio → JavaScript → Permitir.
- Chrome:
-
Habilita cookies de terceros (si usas proxy, CDN o subdominios):
- Chrome:
Configuración → Privacidad y seguridad → Cookies y otros datos de sitio → Permitir cookies de terceros.
- Chrome:
Desactiva temporalmente extensiones de privacidad (uBlock Origin, Privacy Badger, Ghostery).
Limpia cookies y caché del dominio problemático.
🛠️ Caso 3: Configuración del servidor (para evitar el desafío)
Si tú controlas el backend y Cloudflare:
- Agrega una regla de Firewall en Cloudflare para excluir IPs confiables (ej. tu servidor de pruebas).
- Usa "Bypass" en modo "Under Attack" → cambia a "I'm Under Attack" solo si es estrictamente necesario.
- Configura reglas de WAF para permitir solicitudes de tu user-agent (no recomendado para producción).
⚠️ No desactive el desafío JS en producción. Es una capa crítica de seguridad.
💡 Pro-tip: Verifica si el desafío se resolvió
Después de la solicitud, busca el cookie cf_clearance en la respuesta:
# Python example
print(scraper.cookies.get_dict())
# Debería contener: {'cf_clearance': 'xxx'}
Si no está presente, el desafío no se resolvió y la solicitud final fallará silenciosamente.
✅ Solución aplicable al 100% de los casos reales. Usa el método según tu entorno (automatización vs navegador). No hay atajos: si Cloudflare detecta que no hay ejecución JS real, bloqueará la solicitud.
Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.