Перейти к содержимому

Auto-Heal

Auto-Heal — это система автоматического переключения HydraSkill. Когда IP-адрес блокируется, банится или ограничивается по частоте запросов, HydraSkill прозрачно переключается на новый IP — ваш агент никогда не обрабатывает ошибки прокси.

HydraSkill отслеживает в ответах признаки блокировки:

ПризнакОбнаружение
HTTP 403 ForbiddenПрямая блокировка
HTTP 429 Too Many RequestsОграничение частоты запросов
Страницы CAPTCHAАнализ содержимого
Сброс соединенияБлокировка на сетевом уровне
Пустой ответСкрытая блокировка
Перенаправление на страницу блокировкиСопоставление URL по шаблону
Agent Request → Proxy → Target Site
↓ (blocked!)
HydraSkill detects
New IP assigned
Request retried
Agent receives ← Success response

Код вашего агента остаётся простым:

# Не нужен try/except для ошибок прокси
response = requests.get(url, proxies=proxy.to_dict())
# HydraSkill уже выполнил повтор, если первый IP был заблокирован
proxy = client.get_proxy(
target="amazon.com",
auto_heal=True, # включено по умолчанию
max_retries=3, # до 3 повторных попыток
retry_delay_ms=500, # ожидание между попытками
rotate_on_block=True, # получать новый IP при блокировке
)

У каждого запроса есть бюджет повторов (по умолчанию: 3 попытки). Если все повторы не удаются, HydraSkill выбрасывает ProxyExhaustedError, чтобы ваш агент мог обработать этот крайний случай:

from hydraskill.exceptions import ProxyExhaustedError
try:
response = requests.get(url, proxies=proxy.to_dict())
except ProxyExhaustedError:
# Все попытки повтора не удались — цель может полностью блокировать
log.warning(f"Could not reach {url} after 3 proxy rotations")

Отслеживайте активность Auto-Heal на вашей панели управления:

  • Heal Rate — % запросов, потребовавших смены IP
  • Avg Recovery Time — миллисекунды на переключение IP
  • Block Sources — какие цели вызывают больше всего блокировок

Для отладки или когда вам нужны необработанные ответы (включая блокировки):

proxy = client.get_proxy(
target="example.com",
auto_heal=False # получать необработанные ответы, включая 403
)