Auto-Heal
Auto-Heal
Section titled “Auto-Heal”Auto-Heal は HydraSkill の自動フェイルオーバー機構です。IP がブロック、BAN、またはレート制限を受けると、HydraSkill は 透過的に新しい IP へ切り替えます——エージェントがプロキシエラーを処理することは一切ありません。
検知の仕組み
Section titled “検知の仕組み”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 を取得)リトライバジェット
Section titled “リトライバジェット”各リクエストにはリトライバジェット(デフォルト: 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 — 最も多くブロックを誘発する対象
Auto-Heal の無効化
Section titled “Auto-Heal の無効化”デバッグ時や、生のレスポンス(ブロックを含む)が必要な場合:
proxy = client.get_proxy( target="example.com", auto_heal=False # 403 を含む生のレスポンスを取得)