Sistema de cache
Por que existe el cache
Las APIs de OSINT tienen rate limits y algunas son de pago. Investigar el mismo IOC dos veces en un dia desperdicia quota. El cache resuelve esto: el primer analisis va a la API, los siguientes leen del cache local.
Como funciona
Cada llamada a una herramienta OSINT pasa por una capa de cache transparente:
Llamada a virustotal_ip_lookup("185.220.101.34") ↓¿Existe en cache y no ha expirado? ├─ SI → devuelve resultado cacheado (rapido, sin API call) └─ NO → llama a la API real → guarda resultado en cache → devuelve resultadoLa clave de cache es el hash de (nombre_herramienta, input_normalizado). El valor es el resultado JSON completo.
Configuracion
CACHE_TTL_SECONDS=86400 # Tiempo de vida del cache (default: 24 horas)Para ajustar la duracion:
# Cache de 1 hora (para datos muy volatiles)CACHE_TTL_SECONDS=3600
# Cache de 7 dias (para investigaciones largas con poco presupuesto de API)CACHE_TTL_SECONDS=604800
# Sin cache (siempre llama a la API)CACHE_TTL_SECONDS=0Ver estadisticas del cache
osint> /cache statsCache OSINT ├─ Total entradas: 247 ├─ Entradas vigentes: 189 ├─ Entradas expiradas: 58 ├─ Tamano en disco: 2.3 MB └─ Hit rate sesion: 34%Limpiar el cache
osint> /cache clearO directamente:
rm data/osint_cache.dbLa base de datos se recrea automaticamente en el siguiente arranque.
Cache por herramienta
Cada herramienta tiene su propia logica de TTL implicita:
| Herramienta | TTL recomendado | Razon |
|---|---|---|
| VirusTotal IP/Domain | 24h | Reputacion cambia despacio |
| AbuseIPDB | 12h | Reportes mas frecuentes |
| Shodan | 48h | Servicios cambian poco |
| Threat Feeds | 1h | Feeds se actualizan constantemente |
| WHOIS | 7 dias | Registros muy estables |
| DNS | 1h | TTLs de DNS son cortos |
| GDELT | 30min | Noticias en tiempo real |
Con un TTL global de 24h se obtiene un buen equilibrio entre frescura y ahorro de API calls.
Impacto en el rate limiting
El modo batch con cache activo puede procesar listas largas sin agotar la quota:
- Primera ejecucion: N llamadas a la API (una por IOC unico)
- Ejecuciones siguientes en 24h: 0 llamadas a la API
Esto es especialmente util para analizar feeds diariamente — los IOCs que se repiten en dias consecutivos no consumen quota adicional.