inmobiliaria-analytics/docs/00-vision-general/Webscraper_Politics.md
rckrdmrd f570727617 feat: Documentation and orchestration updates
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 05:35:40 -06:00

16 KiB
Raw Blame History

Web scraping efectivo sin ser bloqueado por Cloudflare Desafíos de hacer scraping en sitios con Cloudflare Realizar web scraping en páginas protegidas por Cloudflare (como FlashScore o Inmuebles24) es complicado debido a las robustas medidas anti-bot que implementa este servicio. Cloudflare cuenta con un sistema de Bot Management que puntúa cada solicitud HTTP con modelos de machine learning para decidir si es un humano o un scraper automatizado hardwarepremium.com . Estas medidas se han vuelto estratégicas en la “guerra contra los scrapers de IA”, al punto que Cloudflare ha experimentado con esquemas de “pay per crawl” (pago por rastreo) para permitir el acceso a ciertos bots legítimos bajo acuerdo comercial hardwarepremium.com . En la práctica, esto significa que un scraper tradicional puede ser identificado y bloqueado rápidamente si no toma precauciones. Cloudflare utiliza múltiples técnicas para detectar bots. Analiza enormes volúmenes de tráfico (decenas de millones de solicitudes por segundo) aplicando huellas digitales de la petición (cabeceras, TLS, patrón de HTTP), señales de comportamiento (p. ej. movimientos de mouse, tiempos entre acciones) y estadísticas globales de su red blog.cloudflare.com scrapfly.io . Por ejemplo, si un navegador automatizado tiene características obvias (como la propiedad JavaScript navigator.webdriver activada, o usar un motor HTTP sin navegador real), Cloudflare puede responder con un Error 1010 (Access Denied) indicando que la huella digital fue marcada como automatizada scrapfly.io . Asimismo, Cloudflare monitorea la velocidad y volumen de peticiones: si un solo IP realiza muchas solicitudes en poco tiempo, puede gatillar un Error 1015 (rate limited) por exceder el umbral permitido scrapfly.io . Otros códigos comunes incluyen el Error 1020 (Access Denied) cuando alguna regla de firewall bloquea el acceso, o desafíos como la página de "Attention Required!" con CAPTCHA Turnstile si sospecha tráfico no humano. Además de Cloudflare, hay que considerar las políticas de los sitios web en sí. Sitios como FlashScore o Inmuebles24 suelen establecer en sus términos de uso que no se permite la extracción automatizada de datos sin autorización. Muchas páginas también indican en su archivo robots.txt qué está permitido para bots: por ejemplo, la política de robots de Inmuebles24 prohíbe indexar más allá de la página 5 de listados (disallow de URLs con pagina-*.html excepto las primeras páginas) inmuebles24.com . Esto implica que una exploración profunda de todas las propiedades excedería lo que un bot de buscador normal debería hacer, y cualquier scraper que ignore estas reglas podría ser detectado o considerado como conducta no deseada. Ignorar las normativas de un sitio (términos de uso y robots.txt) no solo aumenta la probabilidad de bloqueo, sino que podría acarrear consecuencias legales o el bloqueo permanente de sus direcciones IP si el propietario del sitio toma medidas activas. En resumen, el principal desafío es parecer un usuario legítimo ante Cloudflare y el sitio destino. Para lograrlo, el scraper debe lidiar con desafíos de JavaScript, CAPTCHAs invisibles (Turnstile), detección de patrones inusuales, restricciones de velocidad, y a la vez respetar en la medida de lo posible las condiciones del sitio para evitar conflictos legales. Estrategias para evitar bloqueos de Cloudflare Superar las defensas de Cloudflare requiere adoptar varias técnicas de sigilo y buenas prácticas en la implementación de tu web scraper. A continuación, se presentan estrategias efectivas, respaldadas por guías especializadas, para minimizar la detección: Emular un navegador real: Es fundamental que las peticiones de tu scraper se asemejen a las de un navegador humano. Esto implica incluir headers HTTP típicos (agente de usuario moderno, encabezados de idioma, encoding, etc.), soportar conexiones TLS modernas y usar HTTP/2 si es posible scrapfly.io . Un scraper que simplemente use requests de Python con su agente de usuario por defecto será fácilmente marcado. En cambio, utilizar un navegador automatizado (Chrome/Firefox controlado por código) permite ejecutar el JavaScript de desafío de Cloudflare y obtener las cookies de sesión válidas. Herramientas actuales recomiendan incluso evitar usar modos headless puros sin camuflaje; en 2025 existen navegadores modificados para automatización (anti-detect browsers) que eliminan huellas del modo headless. Por ejemplo, Nodriver (sucesor de undetected-chromedriver) se diseñó para comunicarse con Chrome mediante el protocolo DevTools sin dejar rastro de WebDriver scrapfly.io . De igual forma, proyectos como SeleniumBase (modo UC) o Camoufox aplican parches al navegador (Chrome o Firefox respectivamente) para que los scripts anti-bot no detecten propiedades típicas de Selenium scrapfly.io . La recomendación es usar estas soluciones stealth activamente mantenidas, en lugar de librerías obsoletas; por ejemplo, el plugin puppeteer-stealth para Node fue descontinuado en 2025 en favor de alternativas más avanzadas scrapfly.io . Rotación y calidad de IPs: Otro pilar es la gestión inteligente de las direcciones IP desde las cuales haces las peticiones. Cloudflare verifica la reputación de IP y puede bloquear rangos asociados a centros de datos o VPNs. Por ello, es aconsejable utilizar proxies residenciales o IPs de red móvil, que se confunden mejor entre el tráfico normal scrapfly.io . Si tu scraper va a extraer grandes volúmenes de datos (por ejemplo, cargar todo el historial de 10 años de partidos), distribuye las solicitudes en múltiples IP para no saturar una sola y evitar límites de tasa scrapfly.io . Muchos servicios ofrecen rotating proxies (IPs rotativas) donde cada petición puede salir por una IP distinta de un pool residencial. Esto previene bloqueos por exceso de peticiones desde un mismo origen y sortea bloqueos geográficos (por ejemplo, Cloudflare Error 1009 si la página prohíbe cierto país) cambiando la región de salida. La inversión en proxies de calidad puede ser necesaria dentro de tu presupuesto, pero existen opciones relativamente económicas (algunos proveedores ofrecen millones de IP rotativas por montos dentro de $50-$100 mensuales, dependiendo del uso). Alternativamente, si operas tu scraper en la nube, elegir proveedores menos populares o distribuir entre varios podría ayudar, aunque Cloudflare entrena sus modelos incluso para detectar tráfico de nubes públicas de forma más agresiva blog.cloudflare.com . Controlar la velocidad y patrón de rastreo: Un raspador eficaz imita el comportamiento humano no solo en la configuración técnica sino en cómo navega. Implementa retrasos aleatorios entre peticiones, evita hacer clics o visitas a múltiples páginas por segundo, y programa el scraping pesado en horarios de menor tráfico para el sitio. Introducir cierta aleatoriedad en los tiempos y secuencias dificulta que un modelo de Cloudflare descubra patrones repetitivos exactos scrapfly.io . Por ejemplo, en lugar de scrapear 1000 páginas en un solo minuto desde la misma sesión, un enfoque más sigiloso sería procesar en lotes pequeños con pausas, cambiar de identidad (cookies/IP) periódicamente, y simular incluso alguna interacción intermedia (como cargar recursos asociados, desplazarse por la página, etc., acciones que un humano haría). Esto último puede lograrse con navegadores automatizados controlando eventos de scroll, movimientos del ratón ficticios o pausas al renderizar antes de extraer datos. El objetivo es presentar flujos de navegación naturales en vez de un bombardeo de peticiones uniformes scrapfly.io . Manejo de CAPTCHA y desafíos: En algunos casos, pese a nuestras medidas, nos toparemos con desafíos de Cloudflare como el Turnstile CAPTCHA. Este sistema, introducido en 2022, es más discreto que los CAPTCHAs tradicionales: a veces es invisible o se resuelve en segundo plano analizando el navegador, y solo muestra un desafío interactivo si la puntuación de confianza es baja scrapfly.io scrapfly.io . Para superarlo, hay dos enfoques: resolverlo o prevenirlo. La prevención consiste en aplicar todo lo anterior para no disparar alarmas (lo ideal es que el desafío ni aparezca porque el tráfico pareció legítimo). Si aun así aparece un CAPTCHA, necesitarás integrar un servicio de resolución (por ejemplo, 2Captcha, Anti-Captcha, etc.), donde un trabajador humano o un modelo ML aparte resuelve el desafío y devuelve el token scrapfly.io scrapfly.io . Algunos frameworks de navegación headless traen ayudas para esto por ejemplo, SeleniumBase UC tiene métodos integrados para reconocer y resolver CAPTCHAs comunes scrapfly.io . Ten en cuenta que cada solicitud de CAPTCHA resuelto puede costar unos centavos y añadir retraso. En la medida de lo posible, refina tus técnicas de sigilo para evitar los CAPTCHA proactivamente, ya que Cloudflare misma indica que “la mejor manera de sortear un CAPTCHA es impedir que ocurra en primer lugar” scrapfly.io . Uso de herramientas y servicios especializados: Dada la complejidad técnica de evadir Cloudflare, vale la pena considerar herramientas ya existentes o servicios de terceros dentro de tu presupuesto. Por el lado de código abierto, ya mencionamos bibliotecas como undetected-chromedriver (y su sucesor Nodriver) para Python, o Playwright con plugins de stealth para Node.js. Por ejemplo, existe un proyecto de código abierto que usa Playwright para extraer resultados de FlashScore de forma estructurada github.com github.com , lo que confirma que es viable scrapear estos datos combinando un navegador real con algo de desarrollo. Si prefieres no reinventar la rueda, hay servicios en la nube que ofrecen scraping anti-bot como servicio: Apify, ScrapingBee, Zyte (Scrapinghub) entre otros. Algunos cuentan con APIs o actors ya preparados para sitios populares. En el caso de FlashScore, Apify tiene un actor público que provee una “API alternativa” para datos en vivo, cobrando alrededor de $1 por cada 1000 resultados extraídos apify.com . Igualmente, hay un actor para Inmuebles24 en Apify Store apify.com . Estos servicios manejan por ti las cuestiones de proxies, rotación de IP, y resolución de desafíos, lo que puede ahorrar tiempo de desarrollo. Incluso Apify ofrece la opción de integrar agentes de IA (como ChatGPT) con su MCP un servidor que permite a modelos de lenguaje orquestar scrapers automáticamente apify.com . Esto podría ser útil si buscas que un agente de IA navegue páginas complejas simulando decisiones humanas; por ejemplo, un agente podría decidir qué enlaces de inmuebles seguir para recopilar cierta información detallada, usando las herramientas de scraping subyacentes para ejecutar las acciones. No obstante, estas soluciones deben evaluarse en costo: con un presupuesto inicial de $100-$200, podrías ejecutar scrapers propios en uno o dos servidores con proxies básicos, mientras que servicios SaaS de scraping cobrarán recurrentemente (aunque para volúmenes moderados pueden encajar en ese rango). Es importante equilibrar el ahorro de tiempo/desarrollo que brindan con el costo por volumen de datos que requerirás. Consideraciones legales y de cumplimiento Al diseñar tu web scraper es imprescindible no solo pensar en lo técnico, sino también en cumplir las normativas legales y de uso de los sitios objetivo: Revisa los Términos de Servicio: Tanto FlashScore como Inmuebles24 probablemente prohíban explícitamente el uso de bots o la extracción masiva de contenido sin permiso. Aunque la aplicación de estas cláusulas varía, incumplirlas podría llevar a que te bloqueen el acceso permanentemente, te envíen notificaciones legales, e incluso potenciales demandas si el scraping causa perjuicios. Si planeas ofrecer un servicio comercial basado en los datos, es aún más crítico asegurarte de que no estás violando derechos de propiedad de los datos o base de datos del sitio. En casos ideales, buscar vías oficiales: por ejemplo, ¿existe una API pública o de pago? (FlashScore no ofrece API pública github.com , de ahí que prolifere el scraping, pero conviene verificar). En el ámbito inmobiliario, quizás puedas obtener datos mediante acuerdos con agencias o usando fuentes públicas complementarias para ciertos datos (catastros, etc.) reduciendo la dependencia en scraping intensivo de un solo sitio. Respeta límites mediante robots.txt: Aunque el archivo robots.txt no es legalmente vinculante por sí mismo, es una guía de lo que el propietario del sitio espera de los robots. Cumplirlo muestra buena fe. En el caso de Inmuebles24 vimos que impone límites a la profundidad de listados indexables inmuebles24.com ; tal restricción sugiere que un scraper que ignore ese límite (para obtener todas las propiedades) estaría actuando fuera de las expectativas del sitio. Si decides exceder lo estipulado, hazlo con mucha cautela (por ejemplo, limitando la frecuencia significativamente) para no parecer un ataque. En todo caso, no intentes evadir medidas activas de seguridad (como el propio Cloudflare) más allá de lo razonable, pues eso sí podría considerarse hacking. La clave está en acceder a la información pública de manera responsable y ética, sin afectar negativamente al servicio. Buena ciudadanía web: Mantén un perfil bajo. Identifícate adecuadamente cuando sea posible. Por ejemplo, algunas API o sitios pueden permitir acceso si el bot se identifica honestamente (muchos no, pero vale la pena ver si FlashScore/Inmuebles24 tienen algún programa de bot access para investigadores, etc.). Si no, al menos en tus registros y documentación interna lleva cuenta de las páginas consultadas, respeta si un usuario necesita estar autenticado (no scrapees datos privados o detrás de login si eso viola términos), y nunca publiques o revendas datos de forma que infrinja derechos de terceros (fotos, descripciones con copyright, etc., podrían estar protegidos). Un caso práctico: Inmuebles24 probablemente tiene fotografías de propiedades con derechos; extraerlas para tu propio sitio sería ilegal sin permiso expreso. En cambio, datos estadísticos agregados (precios promedio, tendencias) son menos problemáticos siempre que la fuente original no sea identificable directamente. En conclusión, sí es posible construir un web scraper eficaz para los proyectos que mencionas de hecho, numerosos desarrolladores lo hacen para propósitos similares (análisis inmobiliario, modelos de apuestas deportivas). La clave del éxito estará en combinar las tácticas técnicas (navegador automatizado, proxies residenciales, rotación, stealth anti-detección) con un enfoque respetuoso: racionando el consumo de datos, acatando en lo posible las reglas de cada sitio, y manteniéndote dentro de un marco legal. Siguiendo las recomendaciones anteriores, tu scraper podrá realizar cargas iniciales de datos muy grandes (como todo el histórico de inmuebles o 10 años de estadísticas deportivas) sin ser bloqueado inmediatamente, y luego continuar con actualizaciones periódicas de forma sostenible. Recuerda siempre monitorear el comportamiento de tu scraper; si notas captchas frecuentes, bloqueos HTTP 429/1020, o respuestas anómalas, ajusta la estrategia rápidamente la evasión de detección es un juego dinámico donde tanto Cloudflare como los scrapers evolucionan constantemente scrapfly.io . Con una inversión moderada (dentro de tu presupuesto indicado) en las herramientas adecuadas y quizás algún servicio de apoyo, podrás obtener los datos necesarios minimizando riesgos de interrupción y conflictos legales. Fuentes Consultadas: Guías técnicas de ScrapFly sobre Cloudflare scrapfly.io scrapfly.io , publicaciones oficiales de Cloudflare sobre Bot Management hardwarepremium.com hardwarepremium.com , documentación de proyectos de scraping de FlashScore e Inmuebles24, y experiencias compartidas en la comunidad de web scraping. Estas referencias respaldan las buenas prácticas aquí descritas y reflejan el estado del arte hasta 2025 en este campo.