Tony Wang11 min de lecturaScraping sitios que bloquean bots: Cloudflare, DataDome y PerimeterX
Por qué Cloudflare, DataDome y PerimeterX bloquean a los scrapers y cómo pasar de forma confiable con navegadores stealth y rotación de IPs.
Para la mayor parte de la web, el scraping es un problema resuelto: pides la URL, parseas el HTML, listo. Los sitios interesantes —los que tienen precios, listados, reseñas e inventario que vale la pena recolectar— son justo los que no te lo permiten. Están detrás de Cloudflare, DataDome, PerimeterX (ahora HUMAN), Akamai o Kasada, y en el momento en que un script pide una página recibe un CAPTCHA, una pantalla de «verificando tu navegador» o un 403 directo. La parte difícil del scraping moderno no es parsear la página. Es conseguir la página.
Esta guía explica cómo funciona en realidad ese muro —las señales que revisan estos sistemas y por qué un cliente HTTP normal las hace saltar todas— y luego cómo un scraper logra pasar de forma confiable sin fingir que el problema es más simple de lo que es.
Las cuatro capas de la detección de bots
Los proveedores de anti-bot no dependen de una sola verificación. Puntúan cada solicitud a través de varias capas independientes, y una solicitud tiene que parecer humana en todas ellas. Entender las capas es todo el juego, porque cada una descarta un tipo distinto de scraper ingenuo.
| Capa | Qué verifica | Por qué falla un scraper normal |
|---|---|---|
| Reputación de IP | ¿La dirección es residencial/móvil (confiable) o de datacenter (sospechosa)? ¿Ha hecho demasiadas solicitudes? | Los scrapers corren en servidores en la nube y proxies de datacenter — rangos que estos proveedores marcan a simple vista |
| Huella TLS / HTTP | ¿El handshake TLS y el orden de los frames HTTP/2 coinciden con un navegador real (JA3/JA4, huella de Akamai)? | requests, curl y la mayoría de las librerías HTTP tienen una huella que no se parece en nada a la de Chrome, sin importar las cabeceras |
| Sensor de JavaScript | Un script busca navigator.webdriver, señales de modo headless, APIs faltantes, peculiaridades de canvas/WebGL/fuentes | La automatización headless filtra decenas de señales; un cliente HTTP no ejecuta JavaScript en absoluto, así que el sensor nunca reporta nada |
| Comportamiento | Cadencia de solicitudes, movimientos de mouse/scroll, patrones de navegación, continuidad de cookies | Los scripts golpean páginas más rápido y de forma más mecánica que una persona, desde una sesión sin historial |
La razón por la que «solo pon un User-Agent realista» dejó de funcionar hace años es que el User-Agent es una sola cadena de texto en la capa menos importante. Puedes decir que eres Chrome 140 todo lo que quieras; si tu handshake TLS dice Python y tu IP dice AWS, ya fallaste dos verificaciones antes de que la página siquiera cargue.
Qué hacen en realidad los proveedores
Los tres grandes se comportan de forma lo bastante distinta como para que valga la pena saber contra qué muro estás.
- Cloudflare emite un managed challenge y, si se supera, una cookie
cf_clearanceque queda ligada a tu IP y User-Agent. Pasas el challenge y la cookie te compra una ventana de acceso — cambias de IP y queda anulada. - DataDome puntúa la solicitud en tiempo real y establece una cookie
datadome; es agresivo con las IPs de datacenter y con la repetición de una misma huella en demasiadas solicitudes. - PerimeterX / HUMAN ejecuta un sensor de JavaScript que envía por POST un payload de señales y otorga una cookie de clearance de la familia
_px3. Está fuertemente ligado a la IP: una cookie generada en una IP y presentada desde otra se lee como robo y se bloquea con más dureza que si no hubiera ninguna cookie.
El hilo común: un clearance —la cookie que dice «este cliente pasó»— solo se gana ejecutando el challenge en un navegador real, y queda atado a la IP que lo consiguió. Ese único hecho dicta toda la estrategia.
Qué muro, qué solución
Cada proveedor deja su propia huella —una cookie o un mensaje de bloqueo delatores— y cede ante una palanca distinta. Esta es la guía de campo, a grandes rasgos:
| Muro | Cómo sabes que está ahí | Qué logra pasar | Dificultad |
|---|---|---|---|
| Cloudflare | Cookies cf_clearance / __cf_bm, una pantalla de «Checking your browser…» | Un navegador real que resuelve el managed challenge; luego reutilizar cf_clearance | Baja–media |
| DataDome | Cookie datadome, un 403 con una página de CAPTCHA de DataDome | IP confiable + huella real; rotar IPs — castiga la repetición | Media |
| PerimeterX / HUMAN | Cookies _px*, «Access to this page has been denied» | Un navegador que ejecuta el sensor JS; el clearance está atado a la IP, así que hay que correr con IPs nuevas | Media–alta |
| Akamai Bot Manager | Cookies _abck / bm_sz / ak_bmsc | Huella TLS real + navegador; la cookie _abck debe validarse o quedas bloqueado en la sombra | Alta |
| Kasada | Cabeceras x-kpsdk-*, un script sensor kpsdk | Ejecución completa del sensor en el navegador; de los más difíciles de pasar en headless | Alta |
El patrón se repite: cada uno de ellos, al final, quiere ver un navegador real, desde una IP en la que confía, comportándose como una persona. Los muros difieren sobre todo en qué tan estricta es cada una de esas tres verificaciones.
Cómo pasar de forma confiable
El error que comete la mayoría de los scrapers es hacer una sola cosa —un navegador stealth, o un proxy residencial— para cada solicitud. Eso es lento y caro en páginas fáciles, y sigue siendo frágil en las difíciles. El patrón confiable es la escalada: empezar barato, y subir solo hasta donde un sitio en particular te obligue.
- HTTP que imita a Chrome. Una solicitud simple, pero con una huella TLS y HTTP/2 que coincide con la de un Chrome real. Esto por sí solo supera la capa de huella digital y basta para un número sorprendente de sitios «protegidos» — a una fracción del costo de un navegador.
- Un navegador stealth real. Cuando la página necesita que se ejecute JavaScript —un challenge de Cloudflare o PerimeterX—, se le entrega a una flota de motores de navegador reforzados, con señales de automatización parcheadas y huellas genuinas. Motores distintos vencen a proveedores distintos, así que correr o rotar entre una flota importa más que apostar por uno solo.
- Una IP nueva. El anti-bot prioriza ante todo la reputación de la IP, así que cuando la salida actual está marcada, el movimiento de mayor rendimiento es simplemente una dirección distinta. Disparar varias solicitudes a la vez a través de un pool rotativo —y tomar la primera que vuelva con la página real— convierte una moneda al aire en algo casi seguro, porque normalmente una IP nueva pasa mientras las demás quedan bloqueadas.
Sin embargo, no todas las direcciones son iguales, y aquí es donde entra el costo. Las IPs vienen en niveles de reputación, y cuanto más confiable el nivel, más cuesta:
- Las IPs de datacenter son baratas y abundantes, pero las más marcadas — rangos completos son conocidos por pertenecer a nubes y proveedores de hosting, así que los proveedores desconfían de ellas por defecto.
- Las IPs residenciales son direcciones reales de banda ancha doméstica obtenidas a través de redes de proxies. Se ven como visitantes ordinarios, tienen mucha más confianza y cuestan considerablemente más.
- Las IPs móviles son direcciones 4G/5G con NAT de operador — las más confiables de todas, porque miles de teléfonos reales comparten una misma dirección, así que bloquearla arriesga bloquear a clientes reales. También son las más caras, y normalmente se cobran por gigabyte de tráfico en lugar de por dirección.
El reflejo ante un muro difícil es ir directo por las IPs más caras. La jugada más barata es de lo que trata toda esta sección: apoyarse en el stack — escalar a un navegador real, correr varias IPs de datacenter a la vez y reutilizar un clearance en cuanto se consigue — para pasar con direcciones de bajo costo tan seguido como sea posible, y solo recurrir a las residenciales o móviles para los objetivos que de verdad las exigen. Pagas por reputación exactamente cuando la página te obliga a hacerlo, y ni una solicitud antes.
Dos refinamientos hacen esto rápido además de confiable:
- Reutilizar el clearance. Cuando un navegador consigue una cookie
cf_clearanceo de DataDome, se cachea por dominio durante su corta vida útil y se adjunta a solicitudes posteriores desde la misma IP. Un motor barato puede entonces aprovechar un clearance que uno caro pagó — más éxito, menos costo. - Contar como éxito solo una página real. Una página de challenge, una carcasa de «checking your browser» y un 403 devuelven todos un
200con bytes en el cuerpo. Un scraper que trata eso como éxito te entrega basura y no aprende nada. Detectar la diferencia —y escalar en lugar de devolver la carcasa— es lo que separa un número que se ve bien de datos que realmente puedes usar.
Un ejemplo trabajado: una página protegida con PerimeterX
Así es como se combinan las piezas en un objetivo real y terco — un sitio de noticias detrás de PerimeterX, donde una IP de salida de datacenter ya se había usado lo suficiente como para que el muro la hubiera marcado.
- Un motor, una IP marcada: pedirle a un solo navegador stealth que trajera la página desde esa IP quemada tuvo éxito solo cerca de 1 de cada 6 veces. El motor era capaz; la IP era el cuello de botella.
- Correr IPs nuevas: disparar cuatro solicitudes para la misma página al mismo tiempo, cada una a través de una IP de salida distinta, y tomar la primera que devolvió el artículo real, elevó el éxito a 5 de cada 6 — y fue más rápido, porque el ganador solía volver en unos segundos mientras los intentos bloqueados se abandonaban.
- Reutilizar el clearance: una vez que un navegador consiguió la cookie de clearance de PerimeterX, incluso un motor ligero que nunca vence el muro por su cuenta, montado sobre esa cookie cacheada, llegó directo a la página completa. La solicitud cara pagó el clearance; las baratas lo cobraron.
Ninguna de estas por sí sola es una bala de plata. El resultado viene de apilarlas —escalar a un navegador, correr IPs nuevas, reutilizar lo que funciona— y de negarse a contar una página de challenge como una victoria. Ese último punto es fácil de arruinar: la versión ingenua devuelve un 200 lleno de nada y reporta una tasa de éxito estupenda.
¿Construirlo tú mismo o comprarlo?
Puedes armar todo esto por tu cuenta, y para un solo objetivo es un proyecto de fin de semana razonable: un navegador parcheado en modo stealth, un proxy, una caché de cookies. El costo aparece después, como una caminadora sin fin.
Construirlo significa mantener una flota de motores de navegador parcheados (los parches se vuelven obsoletos con cada versión de Chrome), un presupuesto de proxies residenciales o móviles (la partida que en realidad define tu techo), la lógica de escalada que elige el método más barato por sitio, una detección de éxito que no se deje engañar por páginas de challenge, y un compromiso permanente de volver a arreglar todo cada vez que un proveedor lanza una actualización de detección — lo cual es su trabajo de tiempo completo y, para ti, una misión secundaria que no deja de interrumpir la de verdad.
Comprarlo —una API de scraping administrada— cambia esa caminadora por un precio por solicitud. La comparación honesta no es «créditos de API contra código gratis»; es «créditos de API contra una factura de proxies más las semanas de ingeniería que gastarás manteniendo los bypasses de detección en lugar de enviar tu producto». Para uno o dos sitios fáciles, el DIY gana. Para una lista cambiante de objetivos protegidos que necesitas mantener confiables, el mantenimiento es el producto — y esa es la parte que vale la pena tercerizar.
Dónde encaja Crawlora
Este es exactamente el modelo sobre el que está construida la Web Scraping API de Crawlora. Una sola llamada a /web/scrape escala por sí sola —HTTP que imita a Chrome, luego una flota de motores de navegador stealth, luego IPs nuevas corriendo en paralelo—, captura y reutiliza cookies de clearance por dominio, y solo devuelve una página una vez que se confirma que es contenido real y no un challenge. Recibes de vuelta Markdown limpio (o HTML, enlaces y metadatos), y se te cobra por lo que tiene éxito.
Una solicitud es una sola llamada: pide los formatos que quieras y deja que escale.
curl -X POST "https://api.crawlora.net/api/v1/web/scrape" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/product/123",
"formats": ["markdown", "links", "metadata"],
"render": "auto"
}'
render: "auto" es el interruptor de escalada: empieza con HTTP que imita a Chrome y sube a la flota de navegadores stealth (y a IPs nuevas) solo si la página lo exige, así que no pagas precio de navegador por páginas que no lo necesitan. La misma llamada desde Python:
import requests
resp = requests.post(
"https://api.crawlora.net/api/v1/web/scrape",
headers={"x-api-key": "YOUR_API_KEY"},
json={
"url": "https://example.com/product/123",
"formats": ["markdown", "links", "metadata"],
"render": "auto", # escala HTTP -> navegador stealth -> IP nueva según haga falta
},
timeout=60,
)
data = resp.json()["data"]
print(data["markdown"]) # texto del artículo limpio, no HTML crudo
print(data["metadata"]["title"]) # metadatos de la página ya parseados
Si solo quieres saber contra qué te enfrentas antes de escribir una línea de código, corre una URL por el verificador gratuito can-I-scrape-this-site: reporta qué protección usa un sitio y qué tan difícil será recolectarlo.
Una nota final sobre el alcance: todo esto es para páginas públicas. La detección de bots no es un inicio de sesión, y superarla no es lo mismo que entrar a datos privados — pero la línea responsable sigue siendo solo datos públicos, respetando los términos y las directivas de robots de cada sitio, y dejando en paz el contenido personal o protegido por derechos de autor. Para el panorama legal, consulta is web scraping legal in 2026; para la pregunta relacionada sobre artículos con muro de pago, consulta how paywalls actually work. La propia política de Cloudflare sobre rastreadores de IA está evolucionando sobre este mismo stack de detección — ve Cloudflare's new AI-crawler defaults for 2026 para saber qué cambió y qué significa para los scrapers legítimos.
Scrapea los sitios que bloquean a todos los demás
Una llamada a la API —navegadores stealth con escalada automática, rotación de IPs y reutilización de clearance— que devuelve Markdown limpio y cobra solo por lo que tiene éxito. 2,000 créditos gratis al mes, sin tarjeta.
Preguntas frecuentes
How do websites detect and block scrapers?
Modern anti-bot systems check four layers at once: the IP's reputation (datacenter ranges are flagged, residential and mobile are trusted), the TLS and HTTP/2 fingerprint (a real Chrome handshake looks different from a Python or curl one), a JavaScript sensor that probes the browser for automation tells (headless flags, missing APIs, canvas/WebGL quirks), and behaviour over time. Failing any layer earns a CAPTCHA or a block page, so a scraper that only spoofs the User-Agent gets stopped immediately.
Why does my scraper get blocked by Cloudflare or DataDome?
Almost always the IP and the fingerprint. Requests from a cloud server (AWS, GCP, a datacenter proxy) sit in ranges these vendors treat as suspicious, and a non-browser HTTP client has a TLS/JS fingerprint that doesn't match a real Chrome. Cloudflare, DataDome and PerimeterX combine those signals — so the fix isn't a better User-Agent string, it's a real browser fingerprint coming from a trusted IP.
Can you scrape a site protected by Cloudflare, DataDome or PerimeterX?
Often, yes, for public pages — but it's probabilistic, not guaranteed. The reliable approach escalates only as far as a site demands: a Chrome-impersonated HTTP request first, then a real stealth browser that executes the challenge, then a fresh IP if the current one is flagged. Once a browser earns a clearance cookie, cheaper requests can reuse it. The hardest, IP-strict sites need residential or mobile egress to stay reliable.
Is it legal to scrape sites that block bots?
Scraping publicly accessible pages is broadly defensible, and a bot-detection wall is not itself an access control on private data the way a login is. But the law turns on what you collect and how you use it — respect each site's terms and robots directives, avoid personal data and copyrighted content at scale, and never use this to get past a login or a paywall. This is not legal advice.