Somos Geonode y vendemos proxies, que es el producto que suele recomendarse junto con una biblioteca como esta. La verdad es que no vamos a escribir una guía para eludir el bloqueo y que, en este caso concreto, la herramienta ha quedado obsoleta de todos modos. Comprobamos el paquete en septiembre de 2026: versión 1.2.71 en PyPI, subida en abril de 2023, con el repositorio de código fuente actualizado por última vez en junio de 2025 y con esas modificaciones de carácter administrativo más que funcional. Mientras tanto, la detección de bots de Cloudflare ha pasado a basarse en el aprendizaje automático a partir de miles de millones de solicitudes, la detección «headless» basada en JavaScript y el análisis del orden de los encabezados. Una biblioteca basada en requestsque resuelve un reto de JavaScript no aborda nada de eso. La parte útil de este artículo son las tres últimas secciones.
Para qué se creó Cloudscraper
La propia descripción de la biblioteca deja claro cuál es su objetivo, y leerla ahora resulta muy instructivo.
Cloudscraper se describe a sí mismo como «un sencillo módulo de Python para eludir la página antibots de Cloudflare (también conocida como “modo ‘Estoy bajo ataque’» o IUAM), implementado con Requests». Señala que «la página antibots de Cloudflare actualmente solo comprueba si el cliente es compatible con JavaScript, aunque es posible que añadan técnicas adicionales en el futuro».
El mecanismo que resolvía es el clásico intersticial:
Checking your browser before accessing website.com.
This process is automatic. Your browser will redirect to your requested content shortly.
Please allow up to 5 seconds...
El enfoque de la biblioteca consistía en utilizar «un motor o intérprete de JavaScript para resolver los retos de JavaScript», lo que «permite al script suplantar fácilmente a un navegador web normal sin necesidad de desofuscar ni analizar explícitamente el JavaScript de Cloudflare». Su documentación señala que un script «permanecería inactivo durante unos 5 segundos en la primera visita a cualquier sitio web con el sistema antibots de Cloudflare activado», sin ningún retraso posterior.
Para el problema tal y como se planteaba, se trataba de un diseño razonable. El reto consistía en un rompecabezas de JavaScript; la biblioteca ejecutaba un motor de JavaScript y lo resolvía.
El archivo README también contiene un compromiso que fecha el proyecto con precisión: «Cloudflare cambia sus técnicas periódicamente, por lo que actualizaré este repositorio con frecuencia».
El estado del mantenimiento, comprobado
Hechos, no impresiones, verificados en septiembre de 2026.
La última versión de PyPI es la 1.2.71, subida el 25 de abril de 2023. Esto supone un retraso de más de tres años respecto a un objetivo que, según el autor, cambia periódicamente.
La última actualización del repositorio de GitHub se realizó en junio de 2025, y las últimas modificaciones se titulan «Corregir propietario», «volver a añadir gitignore» y «Corregir los datos del propietario», es decir, tareas de mantenimiento más que actualizaciones de detección.
No está archivado y tiene alrededor de 36 incidencias abiertas.
Nada de esto es una crítica al autor, quien creó una herramienta útil y la distribuyó bajo una licencia MIT. Se trata simplemente del estado del paquete, y es el dato más relevante para cualquiera que esté a punto de utilizarlo. Una biblioteca cuyo único valor añadido consiste en mantenerse al día con un adversario es una biblioteca en la que la fecha de lanzamiento es la especificación.
Si encuentras a cloudscraper recomendado en un artículo, comprueba la fecha del artículo. Gran parte de los consejos que circulan eran correctos cuando se escribieron y no se han revisado desde entonces.
Cómo funciona ahora la detección de Cloudflare
La razón por la que este enfoque ya no funciona, según la propia documentación de Cloudflare.
La puntuación de bot de Cloudflare va del 1 al 99, donde 1 significa «Cloudflare está bastante seguro de que la solicitud fue automatizada» y 99 indica que probablemente se trate de un usuario humano. Esta puntuación es el resultado del trabajo conjunto de varios motores.
El aprendizaje automático es responsable de la mayoría de las detecciones. Cloudflare describe una «metodología de aprendizaje automático supervisado» que analiza miles de millones de solicitudes diarias, examinando «características de las solicitudes, como los encabezados y las señales del navegador», para predecir la probabilidad de que un cliente sea humano.
La heurística compara con firmas conocidas, asignando una puntuación de 1 a las detecciones de alta confianza.
Las detecciones mediante JavaScript identifican los navegadores sin interfaz gráfica mediante una «inyección ligera e invisible de JavaScript del lado del cliente» que, según Cloudflare, «no recopila ninguna información de carácter personal».
Los ID de detección son reglas estáticas que identifican comportamientos predecibles. El ejemplo de Cloudflare es revelador: pueden identificar cuándo «un cliente envía encabezados en un orden diferente al que utilizaría el navegador que afirma utilizar».
Este último punto es la clave. El orden de los encabezados no es algo que controle una biblioteca basada en «requests», y no cambia cuando resuelves un desafío de JavaScript. Tampoco lo hace la firma del protocolo de enlace TLS, que es una propiedad de tu pila HTTP de Python más que de cualquier cosa que envíes.
Así pues, el modelo se ha invertido. En 2019, la pregunta era «¿puede este cliente ejecutar JavaScript?», y una biblioteca con un motor de JavaScript respondía que sí. Ahora la pregunta es «¿todo lo relacionado con este cliente concuerda con lo que afirma ser?», y un proceso de Python que afirma ser Chrome falla en varias señales independientes a la vez —ninguna de las cuales afecta al solucionador de retos—.
Cloudflare también ha añadido respuestas deliberadamente adversas. Su AI Labyrinth sirve a los rastreadores contenido generado coherente de forma indefinida en lugar de bloquearlos, lo que significa que un scraper puede parecer que tiene éxito sin recopilar nada de valor. Ya tratamos ese patrón en las trampas honeypot.
Por qué los proxies no resuelven este problema
La parte en la que nos oponemos a nuestro propio producto, porque es cierto.
Fíjate en la lista de detección anterior y presta atención a lo que incluye: composición y orden de los encabezados, señales del navegador, características de las solicitudes aprendidas mediante aprendizaje automático y características de ejecución de JavaScript. La dirección IP no aparece por ningún lado en la propia descripción de Cloudflare sobre cómo se calcula la puntuación de bot.
La reputación de la dirección es, sin duda, uno de los factores que influyen en la decisión global de Cloudflare, y una dirección con mala reputación no te ayudará. Pero es solo uno de muchos factores, y no es el que identifica a un cliente Python como automatizado. Un proxy residencial delante de una sesión de requests te proporciona una dirección limpia asociada a un cliente que sigue pareciendo exactamente lo que es.
El resumen sincero: si te están marcando porque tu dirección se encuentra en un rango compartido de un centro de datos con un historial negativo, unas direcciones mejores te ayudarán. Si te están marcando porque tu solicitud no se parece al navegador que dice ser, ningún cambio de dirección solucionará eso —y preferimos decírtelo así antes que venderte ancho de banda para ello.
Qué hacer en su lugar
La sección realmente útil, ordenada según la que resuelve más problemas.
Comprueba si hay una API oficial. Una gran parte de los sitios que utilizan Cloudflare también publican una, precisamente para que los usuarios legítimos dispongan de una vía autorizada. Esto se comprueba con mucha menos frecuencia de lo que debería, ya que el reflejo es buscar una forma de eludir el sistema en lugar de buscar la documentación.
Busca un feed de datos o un programa de socios. Sectores enteros publican datos a granel para los consumidores finales. Pregunta.
Comprueba qué hay disponible sin necesidad de la vía protegida. Mapas del sitio, feeds RSS, JSON-LD incrustado en las páginas, conjuntos de datos públicos, archivos. Es habitual descubrir que justo lo que buscabas está publicado en algún lugar sin protección.
Pregunta al sitio web. Un correo electrónico en el que expliques quién eres, qué necesitas y en qué volumen resuelve esto con más frecuencia de lo que el discurso sugiere. La objeción del operador de un sitio web suele ser la carga no justificada, no tú específicamente. Esta es también la única vía que proporciona un acceso que sigue funcionando.
Recurre a un proveedor de datos con licencia. En el caso de los datos habituales —información empresarial, catálogos de productos, datos de mercado—, siempre hay alguien que los vende, y el precio suele ser inferior al tiempo de desarrollo que se invierte en evitar la compra.
Plantéate si necesitas menos. Gran parte de la recopilación recoge mucha más información de la que requiere la consulta. Una solicitud más reducida y específica es más fácil de satisfacer por medios legítimos y más fácil de justificar cuando la planteas.
Y si estás utilizando un cliente automatizado legítimo, la vía que está surgiendo es la identificación, en lugar del camuflaje. El sector avanza hacia la autenticación criptográfica de agentes, las políticas de acceso por agente y, en algunos casos, el acceso de pago para el tráfico automatizado —una tendencia que describimos en nuestro artículo sobre DataDome. Ser un agente que un sitio web puede identificar y al que puede optar por permitir el acceso es el único enfoque que se vuelve más fiable con el tiempo, en lugar de lo contrario.
Si ya tienes código que lo utiliza
Consejos prácticos para la situación en la que se encuentran muchas personas: un proceso de trabajo creado con CloudScraper que ha empezado a fallar.
En primer lugar, averigua qué está pasando realmente. La frase «ha dejado de funcionar» abarca varios fallos distintos con respuestas diferentes. Muestra el código de estado y la primera parte del cuerpo del mensaje, en lugar de limitarte a capturar la excepción:
import cloudscraper
scraper = cloudscraper.create_scraper()
r = scraper.get(url)
print(r.status_code, r.headers.get("content-type"))
print(r.text[:300])
Un 403 con una página de bloqueo de Cloudflare significa que te han identificado. Un 200 con una página de desafío significa que no se ha resuelto el desafío. Un 200 con contenido plausible pero irrelevante significa que puedes estar en un «tarpit». Un 503 con un intersticial de Cloudflare significa que el desafío de estilo antiguo sigue activo y que hay algún otro error en tu configuración. Cada uno apunta a algo diferente.
A continuación, comprueba si ha cambiado el sitio web o la biblioteca. Accede a la misma URL con requests sin nada más y con un navegador real. Si el navegador funciona y ambas rutas de Python fallan de forma idéntica, el sitio ha reforzado su protección y ninguna configuración de la biblioteca servirá de ayuda. Si requests sin nada más funciona, cloudscraper está añadiendo un problema en lugar de resolverlo —lo cual ocurre, y merece la pena comprobarlo antes de dar por hecho que lo necesitas—.
No fijes una versión anterior con la esperanza de recuperar el comportamiento anterior. El fallo se encuentra al otro lado de la conexión, no en el paquete. No existe ninguna versión anterior que conozca un método de detección introducido después de que se escribiera.
Elimínala si ya no sirve para nada. Una dependencia que resolvía un problema que ya no se presenta es un paquete sin mantenimiento en tu cadena de suministro que no aporta ningún beneficio. Los sitios web activan y desactivan los modos más agresivos de Cloudflare, y es posible que un proceso creado durante un periodo de configuración agresiva funcione ahora perfectamente sin la biblioteca. Pruébalo.
Y considera el fallo como información sobre el proyecto, en lugar de como un error que hay que corregir. Un proceso de recopilación que requiera una biblioteca de derivación sin mantenimiento para funcionar tiene un problema estructural, y el tiempo dedicado a restaurarlo es tiempo que no se dedica a encontrar la API, la fuente de datos o la persona a la que preguntar. Según nuestra experiencia, la segunda búsqueda suele tener más éxito que la primera.
Dónde encajan realmente los proxies
Para completar la información, ya que este es nuestro negocio y existen usos reales.
Distribuir el volumen entre varias direcciones cuando has optimizado tu tarifa y una sola dirección supone una limitación. Se trata de un problema de rendimiento, y es precisamente lo que resuelven los proxies.
Acceder a contenido específico de una región, donde el objetivo principal es aparentar estar en un lugar concreto.
Saltar el filtro de una red que bloquea un sitio web, lo cual es un problema por tu parte y no del sitio web.
Verificación de anuncios y supervisión de la marca, comprobando tu propio gasto en las regiones por las que has pagado.
Ninguno de estos casos es un «esquivar». Todos ellos son situaciones en las que la dirección es realmente la variable, y en cada una de ellas el punto de partida sensato es el ancho de banda del centro de datos —el nuestro, desde 0,14 $/GB—, pasando a la tarifa residencial de 0,79 $/GB solo cuando sea claramente necesario. Cifras extraídas de nuestra página de precios, consultadas en septiembre de 2026.
Lo que no haremos es vender un plan dando a entender que burla un modelo de aprendizaje automático que examina el orden de los encabezados. Eso no es lo que hace una dirección IP.
Preguntas frecuentes
¿Sigue funcionando Cloudscraper?
Frente a la protección moderna de Cloudflare, por lo general no. La última versión de PyPI es de abril de 2023, y la biblioteca se diseñó para una época en la que el reto consistía principalmente en una comprobación de JavaScript. La detección actual utiliza aprendizaje automático sobre las características de las solicitudes, análisis del orden de los encabezados y detección «headless» basada en JavaScript, aspectos que ningún solucionador de retos aborda.
¿Se sigue manteniendo Cloudscraper?
El repositorio no está archivado, pero la última versión data de abril de 2023 y las últimas modificaciones —de junio de 2025— son de carácter administrativo más que funcional. Para una biblioteca cuyo valor depende por completo del seguimiento de un objetivo cambiante, la fecha de lanzamiento es, en la práctica, la especificación.
¿Por qué devuelve Cloudscraper un error 403?
Porque Cloudflare identificó al cliente a través de señales que la biblioteca no controla. El orden de los encabezados, las características del protocolo de enlace TLS y las características de las solicitudes aprendidas mediante aprendizaje automático apuntan todas a un cliente HTTP de Python, independientemente de si se resolvió o no un desafío de JavaScript.
¿Funcionará cloudscraper con un proxy?
No, a menos que la reputación de la dirección sea específicamente la razón por la que te han marcado. La propia descripción que hace Cloudflare de su «bot score» abarca el aprendizaje automático sobre las características de las solicitudes, la heurística, las detecciones de JavaScript y las reglas de orden de los encabezados; ninguno de estos factores cambia cuando cambia tu dirección.
¿Qué puedo utilizar en lugar de Cloudscraper?
Busca una API oficial, una fuente de datos de un socio o datos publicados en otros sitios sin protección. A continuación, plantéate preguntar directamente al sitio web, lo cual suele resolver el problema con más frecuencia de lo que la gente espera y permite obtener un acceso que sigue funcionando. Los proveedores de datos con licencia suelen ser más baratos que el tiempo de ingeniería dedicado a evitarlos.
¿Es legal eludir Cloudflare?
Las infracciones de las condiciones de servicio son de carácter contractual, más que penal, en la mayoría de las jurisdicciones, y la consecuencia realista es el bloqueo. La legalidad depende de la jurisdicción, de los datos en cuestión y de cómo se utilicen. Un sitio web que ha implementado medidas de protección ha dejado clara su postura, lo cual merece la pena tener en cuenta independientemente del análisis jurídico. Esto no constituye asesoramiento jurídico.
¿Por qué recibo una respuesta 200 sin contenido útil?
Es posible que hayas llegado a un «tarpit». El «AI Labyrinth» de Cloudflare ofrece a los rastreadores contenido generado coherente y verosímil, pero que simplemente no tiene nada que ver con el sitio web, en lugar de bloquearlos. Todo se devuelve correctamente, aunque no se recopile nada, lo cual es intencionado.
¿Funciona mejor utilizar un navegador sin interfaz gráfica?
Responde a más señales que una biblioteca basada en «requests», ya que un navegador real produce características TLS y de encabezado reales. También consume mucho más ancho de banda y recursos de computación, y las detecciones de JavaScript de Cloudflare se dirigen específicamente a los navegadores sin interfaz gráfica. Se trata de una compensación diferente, más que de una solución, y la cuestión de los términos no cambia.
Conclusión
Cloudscraper resolvió bien un problema real, pero ese problema ya no existe en la forma para la que se creó. La última versión funcional es anterior a varias generaciones de cambios en el otro lado, y el propio archivo README de la biblioteca promete actualizaciones frecuentes que no se han producido desde hace más de tres años.
Entender por qué es más útil que buscar un sustituto. La antigua pregunta era si un cliente podía ejecutar JavaScript, y una biblioteca con un motor de JavaScript podía responderla. La pregunta actual es si todo lo relacionado con un cliente concuerda con lo que dice ser —orden de los encabezados, características de TLS, señales del navegador, comportamiento— y una sesión HTTP de Python que afirma ser Chrome falla en varios de esos aspectos simultáneamente, independientemente de lo que resuelva.
Por eso tampoco te venderemos proxies como solución. La propia explicación de Cloudflare sobre cómo se calcula su puntuación de bot no menciona en absoluto la dirección del cliente. Unas direcciones mejores ayudan con los problemas de direcciones y con nada más.
Lo que sí funciona es poco glamuroso pero duradero: busca la API, busca el feed, busca los datos publicados en otros sitios o pregunta. Esta última opción, en particular, tiene una tasa de éxito mucho mayor de lo que sugiere el debate, y es la única vía que no hay que revisar cada vez que alguien lanza una actualización de detección.
