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 mensaje aparece cuando un sitio web (especialmente uno protegido por Cloudflare) detecta que el navegador del cliente no tiene JavaScript habilitado o no permite cookies, lo cual es obligatorio para pasar el desafío de seguridad (como el JavaScript Challenge o Browser Integrity Check). En entornos de automatización (scraping, pruebas con Selenium, etc.), este error suele ocurrir porque:

  • El controlador del navegador (p. ej., ChromeDriver) se está ejecutando sin cookies habilitadas.
  • Se está usando una sesión de navegador sin persistencia de cookies (como --disable-cookies o --incognito sin configuración explícita).
  • Se está realizando una solicitud HTTP directa (p. ej., con requests en Python) sin emular un navegador real ni manejar el desafío de Cloudflare.
  • El navegador está configurado para bloquear cookies de terceros y Cloudflare las necesita para validar la sesión.

Pasos para solucionarlo

✅ Caso 1: Automatización con Selenium (Python)

1. Configura el navegador para permitir cookies y JS

Asegúrate de no deshabilitar cookies ni JavaScript explícitamente y usa opciones estándar:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option("useAutomationExtension", False)
# Asegura que las cookies y JS estén habilitados (por defecto, pero refuerzo explícito)
options.add_argument("--enable-javascript")
options.add_argument("--enable-cookies")

driver = webdriver.Chrome(options=options)
driver.execute_cdp_cmd('Page.setCookie', {
    "name": "test_cookie",
    "value": "1",
    "domain": ".example.com",  # ajusta al dominio real
    "path": "/",
    "secure": False,
    "httpOnly": False
})
driver.get("https://example.com")
Enter fullscreen mode Exit fullscreen mode

2. Usa undetected-chromedriver (recomendado para Cloudflare)

pip install undetected-chromedriver
Enter fullscreen mode Exit fullscreen mode
import undetected_chromedriver as uc

driver = uc.Chrome()
driver.get("https://example.com")
# Cloudflare será superado automáticamente en la mayoría de los casos
Enter fullscreen mode Exit fullscreen mode

✅ Caso 2: Uso de requests o librerías HTTP directas

No funcionará si el sitio usa Cloudflare sin un solver. Debes usar una herramienta que emule un navegador real o resuelva el desafío.

Solución recomendada: cloudscraper

pip install cloudscraper
Enter fullscreen mode Exit fullscreen mode
import cloudscraper

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

⚠️ Si el sitio usa Cloudflare Anti-Bot con desafíos avanzados (como JS challenge dinámico), cloudscraper puede fallar. En ese caso, usa Selenium + undetected-chromedriver o servicios como Browserless.io o Zenscrape.


✅ Caso 3: Configuración manual del navegador (pruebas manuales)

  • En Chrome: Configuración > Privacidad y seguridad > Cookies y otros datos de sitio > Permitir cookies.
  • Desactiva extensiones que bloqueen scripts (uBlock Origin, Privacy Badger, etc.).
  • Reinicia el navegador y vuelve a cargar la página.

Bloque de código corregido (ejemplo definitivo con Selenium + undetected)

import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Configuración robusta
uc.patch_webdriver()

driver = uc.Chrome()
try:
    driver.get("https://example.com")
    # Espera implícita a que cargue y Cloudflare pase la validación
    WebDriverWait(driver, 15).until(
        EC.presence_of_element_located((By.TAG_NAME, "body"))
    )
    print("✅ Acceso exitoso. Contenido:", driver.page_source[:200])
finally:
    driver.quit()
Enter fullscreen mode Exit fullscreen mode

Pro-tip

  • Nunca uses --disable-javascript ni --disable-cookies en entornos donde se requiera pasar Cloudflare.
  • Cloudflare cambia sus desafíos frecuentemente. Usa undetected-chromedriver o actualiza regularmente tus herramientas.
  • Si el problema persiste, captura el HTML inicial y verifica si el <script> de Cloudflare (src="/cdn-cgi/challenge-platform/h/g/orchestrate/...") está presente. Si no, el servidor está bloqueando la solicitud antes de llegar al desafío (posible IP bloqueada o cabeceras faltantes).

🔑 Clave final: El error no es técnico del código, sino de la falta de emulación de navegador real. Solución: usa un controlador real, no una solicitud HTTP simple.

Top comments (0)