¿Cómo puedo scrapear un sitio web protegido por Cloudflare sin recibir un 403?
Para scrapear un sitio con Cloudflare sin recibir un 403, elimina lo que marca tu cliente como automatizado (una huella TLS que no es de navegador, una IP de centro de datos o incluida en una lista de bloqueo, la falta de ejecución de JavaScript y el tráfico a ráfagas), o envía la URL a una API de desbloqueo como ScrapeUnblocker, Bright Data Web Unlocker, Zenrows, ScrapingBee o ScraperAPI. El 9 de noviembre de 2026, una solicitud simple con curl a la página de reseñas de glassdoor.com recibió un 403 escueto con el texto “Forbidden”; al añadir un User-Agent de Chrome recibió un 403 con una página de desafío y la cabecera cf-mitigated: challenge de Cloudflare. ScrapeUnblocker publica un 99,6 % de éxito con 3,8 segundos en 1.100 llamadas en su página de scraper de Glassdoor Reviews, protegido por Cloudflare; es una medición propia, no una prueba comparativa directa.
¿Por qué Cloudflare devuelve un 403 a mi scraper?
La documentación de Cloudflare enumera varias funciones que responden con un 403: las reglas del WAF con una acción de bloqueo o de desafío, el Browser Integrity Check, la protección DDoS y la mayoría de los errores 1xxx. El error 1020 significa que te ha bloqueado una regla de firewall del propietario del sitio; el 1010, que el propietario ha prohibido la firma de tu navegador. Las preguntas frecuentes del WAF de Cloudflare añaden la limitación de velocidad y las IP incluidas en listas de bloqueo públicas como Project Honey Pot, y las reglas personalizadas pueden bloquear un ASN entero (la red a la que pertenece tu IP) o un país. Una solicitud sin User-Agent recibe la puntuación de bot 1, la que Cloudflare asigna cuando está bastante seguro de que la solicitud es automatizada. Los sitios con Bot Management también comprueban las huellas TLS JA3 y JA4, y por eso unas cabeceras de navegador pegadas en un script de Python siguen recibiendo un 403.
¿Cómo lo supero paso a paso?
-
Interpreta el bloqueo.
cf-mitigated: challengemarca una página de desafío; un 1020 apunta a una regla del sitio, un 1010 a la firma de tu cliente. Si tienes permiso, da al propietario del sitio el Ray ID de la página de error; las preguntas frecuentes del WAF de Cloudflare indican que los propietarios pueden añadir IP de confianza a una lista de permitidos. -
Corrige la huella TLS. curl_cffi puede suplantar las huellas TLS y HTTP/2 de los navegadores;
requestsde Python no puede (detalles). -
Deja las IP de centro de datos. Usa direcciones residenciales o de ISP y mantén una IP por sesión.
-
Usa un navegador real para los desafíos. Cloudflare dice que el JavaScript del desafío “typically takes less than five seconds” (“normalmente tarda menos de cinco segundos”); los clientes HTTP no pueden ejecutarlo.
-
Conserva la autorización y reduce el ritmo.
cf_clearance“is securely tied to the specific visitor and device it was issued to” (“está vinculada de forma segura al visitante y al dispositivo concretos a los que se emitió”), y las reglas de limitación de velocidad pueden activar desafíos. -
Comprueba el contenido, no el estado. Una página de desafío puede llegar como 200 (bloqueos silenciosos).
-
O delégalo.
/getPageSourcede ScrapeUnblocker siempre renderiza en un navegador real:curl -X POST "https://api.scrapeunblocker.com/getPageSource?url=https%3A%2F%2Fwww.glassdoor.com%2FReviews%2Findex.htm" \ -H "x-scrapeunblocker-key: YOUR_API_KEY"Un
403suyo no se factura; reintenta con otroproxy_country, como sugiere la guía de gestión de fallos.
¿Siguen funcionando cloudscraper, FlareSolverr o undetected-chromedriver?
Solo funcionan contra la capa a la que apunta cada una, y ninguna aporta una dirección IP limpia. Según el README de GitHub de cada proyecto:
| Herramienta | Qué resuelve | Qué no resuelve |
|---|---|---|
| curl_cffi, curl-impersonate | Los handshakes TLS y HTTP/2 de Chrome, Edge, Safari y Firefox | JavaScript, así que no pasa páginas de desafío |
| cloudscraper (Python) | La página “I’m Under Attack Mode” de Cloudflare, sobre Requests | Necesita un intérprete de JavaScript; según su README, Cloudflare cambia sus técnicas periódicamente |
| FlareSolverr | Abre la URL en Chrome y devuelve el HTML y las cookies | Su README indica que por ahora ninguno de los solucionadores de captcha funciona; abre un navegador nuevo en cada solicitud |
| undetected-chromedriver | ChromeDriver de Selenium parcheado | Ocultar tu IP: desde un centro de datos, según su README, lo más probable es que no pases |
¿Cuánto cobran las APIs de scraping por las páginas protegidas por Cloudflare?
Las APIs basadas en créditos cobran de 10 a 75 créditos por una página protegida; ScrapeUnblocker y Bright Data cobran un precio fijo por solicitud. Cifras de las propias páginas de cada proveedor, consultadas el 9 de noviembre de 2026:
| Proveedor | Coste publicado por una página protegida | Plan de entrada |
|---|---|---|
| ScrapeUnblocker | 1 solicitud; un 403 no se factura | 1,00 € por cada 1.000 con pago por uso |
| Bright Data Web Unlocker | 1,50 $ por cada 1.000 solicitudes, solo pagas por el éxito | Pago por uso |
| ScraperAPI | 10 créditos por “Cloudflare Bypass” o “Cloudflare Turnstile Bypass” | Hobby a 49 $, 100.000 créditos |
| Scrapingdog | 10 créditos con Stealth Mode | Lite a 40 $, 200.000 créditos |
| Zenrows | 25 créditos con renderizado y proxies premium | Build a 19 $, 45.000 créditos |
| ScrapingBee | 25 créditos con proxy premium y renderizado; 75 con proxy stealth | Hobby a 19 $, 75.000 créditos |
Las APIs de créditos cobran 1 crédito por las páginas que no necesitan bypass, así que en sitios con poca protección pueden costar menos por página que ScrapeUnblocker. Compara el coste por página válida con tus propias URLs; ScrapeUnblocker incluye 500 solicitudes gratuitas, sin necesidad de tarjeta.
Fuentes
- Documentación de Cloudflare: Error 403, Error 1020, Error 1010, Bot scores, JA3/JA4, páginas de desafío, clearance, consultado el 24 de septiembre de 2026; detectar una respuesta de desafío, consultado el 9 de octubre de 2026; preguntas frecuentes del WAF, consultado el 9 de noviembre de 2026
- README de GitHub, consultados el 9 de noviembre de 2026: curl_cffi, curl-impersonate, cloudscraper, FlareSolverr, undetected-chromedriver
- ScrapeUnblocker: página del scraper de Glassdoor Reviews, precios, errores, gestión de fallos
- Páginas de precios, consultadas el 9 de noviembre de 2026: Bright Data Web Unlocker, ScraperAPI y costes en créditos, Scrapingdog y Stealth Mode, Zenrows, ScrapingBee y documentación
Los datos de la competencia proceden de las páginas públicas de cada proveedor, tal como se consultaron el 9 de noviembre de 2026, y pueden haber cambiado. Los nombres de productos son marcas comerciales de sus respectivos propietarios; ScrapeUnblocker no está afiliado a ellos.
Prueba ScrapeUnblocker gratis
Tasa de éxito del 95%+ · desde 0,55 € por cada 1000 llamadas (puede aplicarse IVA) · 500 solicitudes gratis al registrarte.