Ir al contenido

Auto-Heal

Auto-Heal es el sistema de conmutación automática de HydraSkill. Cuando una IP es bloqueada, baneada o limitada por tasa, HydraSkill cambia a una nueva IP de forma transparente: tu agente nunca gestiona errores de proxy.

HydraSkill monitorea las respuestas en busca de señales de bloqueo:

SeñalDetección
HTTP 403 ForbiddenBloqueo directo
HTTP 429 Too Many RequestsLímite de tasa
Páginas con CAPTCHAAnálisis de contenido
Reinicio de conexiónBloqueo a nivel de red
Respuesta vacíaBloqueo sigiloso
Redirección a página de bloqueoCoincidencia de patrones de URL
Petición del agente → Proxy → Sitio de destino
↓ (¡bloqueado!)
HydraSkill detecta
Nueva IP asignada
Petición reintentada
El agente recibe ← Respuesta exitosa

El código de tu agente se mantiene simple:

# No se necesita try/except para errores de proxy
response = requests.get(url, proxies=proxy.to_dict())
# HydraSkill ya reintentó si la primera IP fue bloqueada
proxy = client.get_proxy(
target="amazon.com",
auto_heal=True, # habilitado por defecto
max_retries=3, # reintentar hasta 3 veces
retry_delay_ms=500, # esperar entre reintentos
rotate_on_block=True, # obtener nueva IP al bloquearse
)

Cada petición tiene un presupuesto de reintentos (por defecto: 3 intentos). Si todos los reintentos fallan, HydraSkill lanza un ProxyExhaustedError para que tu agente pueda manejar el caso límite:

from hydraskill.exceptions import ProxyExhaustedError
try:
response = requests.get(url, proxies=proxy.to_dict())
except ProxyExhaustedError:
# Todos los intentos de reintento fallaron — el destino podría estar bloqueando por completo
log.warning(f"Could not reach {url} after 3 proxy rotations")

Sigue la actividad de Auto-Heal en tu dashboard:

  • Heal Rate — % de peticiones que necesitaron rotación de IP
  • Avg Recovery Time — milisegundos para cambiar de IP
  • Block Sources — qué destinos provocan más bloqueos

Para depuración o cuando necesitas respuestas en bruto (incluidos los bloqueos):

proxy = client.get_proxy(
target="example.com",
auto_heal=False # obtener respuestas en bruto, incluidos los 403
)