コンテンツにスキップ

Auto-Heal

Auto-Heal は HydraSkill の自動フェイルオーバー機構です。IP がブロック、BAN、またはレート制限を受けると、HydraSkill は 透過的に新しい IP へ切り替えます——エージェントがプロキシエラーを処理することは一切ありません。

HydraSkill はレスポンスを監視し、ブロックのシグナルを検出します:

シグナル検知方法
HTTP 403 Forbidden直接的なブロック
HTTP 429 Too Many Requestsレート制限
CAPTCHA ページコンテンツ解析
接続リセットネットワークレベルのブロック
空のレスポンスステルスブロック
ブロックページへのリダイレクトURL パターンのマッチング
エージェントのリクエスト → プロキシ → 対象サイト
↓ (ブロック!)
HydraSkill が検知
新しい IP を割り当て
リクエストを再試行
エージェントが受信 ← 成功レスポンス

エージェントのコードはシンプルなままです:

# プロキシエラーに対する try/except は不要
response = requests.get(url, proxies=proxy.to_dict())
# 最初の IP がブロックされた場合、HydraSkill がすでに再試行済み
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 を含む生のレスポンスを取得
)