Saltar al contenido

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 resultado

La clave de cache es el hash de (nombre_herramienta, input_normalizado). El valor es el resultado JSON completo.

Configuracion

Ventana de terminal
CACHE_TTL_SECONDS=86400 # Tiempo de vida del cache (default: 24 horas)

Para ajustar la duracion:

Ventana de terminal
# 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=0

Ver estadisticas del cache

osint> /cache stats
Cache 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 clear

O directamente:

Ventana de terminal
rm data/osint_cache.db

La base de datos se recrea automaticamente en el siguiente arranque.

Cache por herramienta

Cada herramienta tiene su propia logica de TTL implicita:

HerramientaTTL recomendadoRazon
VirusTotal IP/Domain24hReputacion cambia despacio
AbuseIPDB12hReportes mas frecuentes
Shodan48hServicios cambian poco
Threat Feeds1hFeeds se actualizan constantemente
WHOIS7 diasRegistros muy estables
DNS1hTTLs de DNS son cortos
GDELT30minNoticias 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.