inmobiliaria-analytics/docs/01-fase-alcance-inicial/IAI-007-webscraper/requerimientos/RF-SCR-001.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

106 lines
3.4 KiB
Markdown

---
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