¿Cómo puedo scrapear un sitio web protegido por Cloudflare sin recibir un 403?
Cloudflare devuelve un 403 cuando una regla del WAF, su Browser Integrity Check o su puntuación de bot marcan tu solicitud como automatizada, así que lo evitas eliminando lo que hace que tu cliente parezca automatizado: un handshake TLS que ningún navegador envía, cabeceras que faltan o son inusuales, la falta de ejecución de JavaScript y ráfagas de solicitudes que activan las reglas del sitio. Según la documentación de Cloudflare, la puntuación de bot va de 1 (Cloudflare está bastante seguro de que la solicitud fue automatizada) a 99 (bastante seguro de que procede de una persona), y una solicitud sin cabecera User-Agent recibe de inmediato una puntuación de 1. Puedes cerrar esas brechas con un navegador real, o enviar la URL a una API de scraping como ScrapeUnblocker que devuelva la página renderizada.
¿Por qué Cloudflare devuelve un 403 a mi scraper?
La documentación de Cloudflare enumera varias funciones que pueden responder con un 403: las reglas personalizadas o gestionadas del WAF con una acción de bloqueo o de desafío, el ajuste Security Level, la protección DDoS, el Browser Integrity Check y la mayoría de los errores 1xxx. El código de error te indica qué capa se ha activado. El error 1020 (“Access denied”, es decir, acceso denegado) significa que te ha bloqueado una regla de firewall definida por el propietario del sitio. El error 1010 significa que el propietario ha prohibido tu acceso “based on your browser’s signature” (“según la firma de tu navegador”). El Browser Integrity Check plantea desafíos a los visitantes sin user agent o con uno no estándar. Los sitios que contratan Cloudflare Bot Management también pueden usar las huellas JA3 y JA4, que identifican a un cliente por la forma en que abre la conexión TLS, y detecciones por JavaScript que identifican navegadores headless. Por eso, unas cabeceras de navegador pegadas en un script de Python pueden seguir recibiendo un 403. La explicación completa está en Fingerprinting TLS: por qué bloquean tu scraper de Python.
¿Cómo scrapeo paso a paso un sitio con Cloudflare sin recibir un 403?
- Interpreta el bloqueo. Un 1020 apunta a una regla del sitio, un 1010 a la firma de tu cliente y una página de desafío a una comprobación que tu cliente aún no ha superado.
- Corrige la huella TLS.
requestsde Python envía un handshake que ningún navegador envía;curl_cffipuede suplantar uno. - Usa un navegador real para las páginas de desafío. El Non-Interactive Challenge de Cloudflare ejecuta JavaScript que “typically takes less than five seconds” (“normalmente tarda menos de cinco segundos”); un cliente HTTP no puede ejecutarlo.
- Conserva la autorización donde se obtuvo. La cookie
cf_clearancede Cloudflare “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ó”), así que reutilízala desde el mismo navegador y la misma IP (persistencia de sesión). - Reduce el ritmo. Las reglas de limitación de velocidad pueden activar desafíos, y Cloudflare recomienda limitar la velocidad de cada cookie
cf_clearance. - 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, y su guía de gestión de fallos sugiere cambiarproxy_countrytras un 403.
¿Cuánto cobra una API de scraping por las páginas protegidas por Cloudflare?
ScrapeUnblocker cobra un crédito por solicitud sea cual sea el sitio, desde 1,00 € por cada 1.000 solicitudes con pago por uso hasta unos 0,55 € por cada 1.000 en el plan Ultimate de 1.000 €, y un 403 no se factura. En cambio, algunas APIs basadas en créditos cobran más por Cloudflare. La documentación de ScraperAPI indica “Cloudflare Bypass” y “Cloudflare Turnstile Bypass” a 10 créditos por scrape (las preguntas frecuentes de su página de precios dicen que los sitios protegidos “add 10 credits per request”, es decir, suman 10 créditos por solicitud), y la documentación de Scrapingdog dice que su Stealth Mode “enables bypassing Cloudflare and similar bot protection systems” (“permite sortear Cloudflare y sistemas de protección antibots similares”) a 10 créditos por solicitud. En las páginas que no necesitan bypass, esas APIs empiezan en 1 crédito: el plan Business de ScraperAPI, a 299 $ por 3.000.000 de créditos de API, sale a unos 0,10 $ por cada 1.000 solicitudes de un crédito, frente a entre 0,55 € y 1,00 € por cada 1.000 en ScrapeUnblocker (monedas distintas, sin convertir). La prueba justa es 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, Bot scores, consultado el 24 de septiembre de 2026
- Documentación de Cloudflare, Error 403, Error 1020 y Error 1010, consultado el 24 de septiembre de 2026
- Documentación de Cloudflare, Browser Integrity Check, JA3/JA4 fingerprint y Bot detection engines, consultado el 24 de septiembre de 2026
- Documentación de Cloudflare, Interstitial Challenge Pages y Clearance, consultado el 24 de septiembre de 2026
- Documentación de ScraperAPI, Credits and requests costs, y página de precios, consultado el 24 de septiembre de 2026
- Documentación de Scrapingdog, Bypass Captcha, consultado el 24 de septiembre de 2026
- ScrapeUnblocker, precios, errores y facturación y gestión de fallos
- Blog de ScrapeUnblocker: fingerprinting TLS, persistencia de sesión, HTTP 200 pero bloqueado
Los datos de la competencia proceden de las páginas públicas de cada proveedor, tal como se consultaron el 24 de septiembre 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 · 500 solicitudes gratis al registrarte.