--- id: "RF-SCR-001" title: "Motor de Scraping con Anti-Detection" type: "Functional Requirement" epic: "IAI-007" priority: "Alta" status: "Draft" project: "inmobiliaria-analytics" created_date: "2026-01-04" updated_date: "2026-01-04" --- # RF-IA-007-001: Motor de Scraping con Anti-Detection --- ## Descripcion El sistema debe proporcionar un motor de web scraping capaz de extraer datos de portales inmobiliarios protegidos por Cloudflare y otros sistemas anti-bot, emulando comportamiento de usuario real para evitar bloqueos. --- ## Justificacion Los portales inmobiliarios como Inmuebles24 y Vivanuncios implementan protecciones robustas contra scraping automatizado. Sin un motor especializado con capacidades anti-detection, el sistema no podra obtener datos actualizados del mercado. --- ## Requisitos Funcionales ### RF-001.1: Browser Automation | ID | Requisito | Prioridad | |----|-----------|-----------| | RF-001.1.1 | El sistema debe usar Playwright como motor de automatizacion principal | Alta | | RF-001.1.2 | El sistema debe soportar modo headless con stealth patches | Alta | | RF-001.1.3 | El sistema debe ocultar propiedades de WebDriver (navigator.webdriver) | Alta | | RF-001.1.4 | El sistema debe emular User-Agents reales y rotarlos | Alta | | RF-001.1.5 | El sistema debe soportar HTTP/2 y TLS moderno | Media | ### RF-001.2: Anti-Detection | ID | Requisito | Prioridad | |----|-----------|-----------| | RF-001.2.1 | El sistema debe simular movimientos de mouse antes de clicks | Alta | | RF-001.2.2 | El sistema debe implementar scroll gradual (no instantaneo) | Alta | | RF-001.2.3 | El sistema debe agregar delays aleatorios entre acciones | Alta | | RF-001.2.4 | El sistema debe esperar carga completa de JavaScript antes de extraer | Alta | | RF-001.2.5 | El sistema debe detectar y manejar desafios Cloudflare Turnstile | Media | ### RF-001.3: Session Management | ID | Requisito | Prioridad | |----|-----------|-----------| | RF-001.3.1 | El sistema debe persistir cookies entre sesiones | Alta | | RF-001.3.2 | El sistema debe rotar sesiones periodicamente | Media | | RF-001.3.3 | El sistema debe implementar "warming up" de sesiones nuevas | Media | --- ## Criterios de Aceptacion - [ ] Playwright se inicializa con stealth mode habilitado - [ ] navigator.webdriver retorna undefined en el browser automatizado - [ ] User-Agent rota entre 10+ agentes reales diferentes - [ ] Delays entre acciones varian entre 1-5 segundos aleatoriamente - [ ] Scroll simula comportamiento humano (velocidad variable) - [ ] Sesiones se persisten y reusan correctamente - [ ] El scraper pasa pruebas de bot detection (bot.sannysoft.com) --- ## Dependencias - Playwright NPM package - playwright-extra con stealth plugin - Redis para session storage --- ## Riesgos | Riesgo | Probabilidad | Impacto | Mitigacion | |--------|--------------|---------|------------| | Stealth patches obsoletos | Media | Alto | Monitorear actualizaciones, tener fallbacks | | Nuevas tecnicas de deteccion | Alta | Alto | Monitoreo continuo, ajustes rapidos | --- ## Historias de Usuario Relacionadas - US-SCR-001: Scraping de Inmuebles24 --- ## Referencias Tecnicas - [playwright-extra-stealth](https://github.com/nickarsenault/playwright-extra-stealth) - [Nodriver](https://github.com/nickarsenault/nodriver) - [ScrapFly Cloudflare Guide](https://scrapfly.io/blog/how-to-bypass-cloudflare-protection/) --- **Autor:** Tech Lead **Fecha:** 2026-01-04