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

159 lines
4.4 KiB
Markdown

---
id: "RF-SCR-002"
title: "Gestion de Pool de Proxies"
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-002: Gestion de Pool de Proxies
---
## Descripcion
El sistema debe gestionar un pool de proxies residenciales para distribuir las solicitudes y evitar bloqueos por IP, incluyendo rotacion automatica, health checks y cooling periods.
---
## Justificacion
Cloudflare y los portales inmobiliarios rastrean IPs y bloquean aquellas con comportamiento sospechoso. Un pool de proxies residenciales permite distribuir la carga y simular trafico desde multiples ubicaciones geograficas legitimas.
---
## Requisitos Funcionales
### RF-002.1: Gestion de Pool
| ID | Requisito | Prioridad |
|----|-----------|-----------|
| RF-002.1.1 | El sistema debe mantener un pool de proxies residenciales | Alta |
| RF-002.1.2 | El sistema debe almacenar metadata de cada proxy (tipo, pais, status) | Alta |
| RF-002.1.3 | El sistema debe soportar multiples proveedores de proxy | Media |
| RF-002.1.4 | El sistema debe permitir agregar/remover proxies dinamicamente | Media |
### RF-002.2: Rotacion
| ID | Requisito | Prioridad |
|----|-----------|-----------|
| RF-002.2.1 | El sistema debe rotar proxies por sesion o por request | Alta |
| RF-002.2.2 | El sistema debe seleccionar proxies con mejor success rate | Alta |
| RF-002.2.3 | El sistema debe evitar proxies en cooling period | Alta |
| RF-002.2.4 | El sistema debe balancear carga entre proxies disponibles | Media |
### RF-002.3: Health Checks
| ID | Requisito | Prioridad |
|----|-----------|-----------|
| RF-002.3.1 | El sistema debe verificar conectividad de proxies periodicamente | Alta |
| RF-002.3.2 | El sistema debe marcar proxies como "banned" cuando detecte bloqueo | Alta |
| RF-002.3.3 | El sistema debe calcular y actualizar success rate por proxy | Alta |
| RF-002.3.4 | El sistema debe alertar cuando el pool este bajo umbral minimo | Media |
### RF-002.4: Cooling Periods
| ID | Requisito | Prioridad |
|----|-----------|-----------|
| RF-002.4.1 | El sistema debe poner proxies en cooling despues de rate limit | Alta |
| RF-002.4.2 | El sistema debe configurar duracion de cooling por tipo de error | Media |
| RF-002.4.3 | El sistema debe reactivar proxies automaticamente post-cooling | Alta |
---
## Modelo de Datos
```yaml
ProxyPool:
id: UUID
address: string
port: number
type: enum [residential, datacenter, mobile]
provider: string
country: string
city: string (opcional)
username: string (encrypted)
password: string (encrypted)
status: enum [active, cooling, banned, inactive]
success_rate: decimal (0-1)
total_requests: integer
successful_requests: integer
last_used_at: timestamp
last_success_at: timestamp
cooling_until: timestamp (nullable)
banned_at: timestamp (nullable)
created_at: timestamp
updated_at: timestamp
```
---
## Criterios de Aceptacion
- [ ] Pool almacena y gestiona 50+ proxies residenciales
- [ ] Rotacion selecciona proxies con mejor success rate
- [ ] Proxies con rate limit entran en cooling automaticamente
- [ ] Health check detecta proxies caidos en < 5 minutos
- [ ] Alertas se disparan cuando pool < 20 proxies activos
- [ ] Success rate se calcula correctamente por proxy
- [ ] Proxies banned no se seleccionan para nuevos requests
---
## Configuracion
```yaml
proxy_pool:
min_active_proxies: 20
health_check_interval_ms: 300000 # 5 minutos
rotation:
strategy: "weighted_random" # best_success, round_robin, weighted_random
change_every: "session" # request, session, n_requests
cooling:
rate_limit_duration_ms: 3600000 # 1 hora
error_duration_ms: 1800000 # 30 minutos
max_consecutive_failures: 3
providers:
- name: "brightdata"
priority: 1
- name: "iproyal"
priority: 2
```
---
## Dependencias
- Proveedor de proxies residenciales (Bright Data, IPRoyal, etc.)
- PostgreSQL para persistencia
- Redis para cache de status
---
## Costos Estimados
| Proveedor | Plan | Proxies | Costo/mes |
|-----------|------|---------|-----------|
| Bright Data | Residential | 5GB | $75 USD |
| IPRoyal | Residential | 5GB | $52 USD |
| Smartproxy | Residential | 5GB | $65 USD |
---
## Historias de Usuario Relacionadas
- US-SCR-001: Scraping de Inmuebles24
- US-SCR-002: Scraping de Vivanuncios
---
**Autor:** Tech Lead
**Fecha:** 2026-01-04