コンテンツにスキップ

Session Lock と IP ローテーション:どちらをいつ使うか

Session Lock と IP ローテーション:どちらをいつ使うか

Section titled “Session Lock と IP ローテーション:どちらをいつ使うか”

プロキシ戦略には大きく 2 つがあります。同じ IP を維持する(Session Lock)か、IP を頻繁に切り替える(ローテーション)かです。多くのプロキシサービスはどちらか一方の選択を強いますが、HydraSkill は両方を使えるうえ、適切な方を自動で選択します。

Session Lock:タスク全体で同じ IP

Section titled “Session Lock:タスク全体で同じ IP”

使う場面: タスクが対象サイトとの継続性を必要とする場合。

EC のチェックアウトフロー:

閲覧 → カートに追加 → 配送先入力 → 決済

「カートに追加」と「決済」の間で IP が変わると、カートは空になります。Session Lock は全工程で同じ IP を維持します。

ページネーションを伴う複数ページのスクレイピング:

1 ページ目 → 2 ページ目 → ... → 50 ページ目

一部のサイトは IP 単位でセッションを追跡します。ページネーションの途中で IP を変えると、ボット対策の検知を誘発したり、位置がリセットされたりする恐れがあります。

アカウント管理:

ログイン → 移動 → 操作実行 → ログアウト

アクティブなセッション中に IP が変わると、アカウントがフラグ付けされます。

proxy = client.get_proxy(
target="amazon.com",
session_lock=True,
session_ttl=3600 # 1 時間維持
)
# すべてのリクエストが同じ IP を使用
for page in pages:
requests.get(page, proxies=proxy.to_dict())
proxy.release()

IP ローテーション:リクエストごとに新しい IP

Section titled “IP ローテーション:リクエストごとに新しい IP”

使う場面: 多数の異なるユーザーに見せかける必要がある場合。

地域をまたいだ価格モニタリング:

US の IP から価格確認 → UK から確認 → JP から確認

各リクエストは異なるロケーションから送る必要があります。

検索結果のスクレイピング:

クエリ 1 → クエリ 2 → ... → クエリ 1000

検索エンジンは IP 単位でレート制限します。ローテーションすれば、制限に達するまでにより多くのクエリを実行できます。

広告検証:

IP A から広告を表示 → IP B から表示 → IP C から表示

異なるユーザーが何を見ているかを確認する必要があります。

# session_lock なし = 毎回新しい IP
for query in queries:
proxy = client.get_proxy(target="google.com", country="US")
requests.get(f"https://google.com/search?q={query}", proxies=proxy.to_dict())
proxy.release() # IP を即座にプールへ返却
シナリオ戦略理由
チェックアウトフローSession Lockカートに IP の継続性が必要
ページネーションSession Lockクロール途中の検知を回避
アカウント操作Session Lockセキュリティフラグを防止
価格比較ローテーション複数のジオロケーションが必要
大量の検索クエリローテーションIP 単位のレート制限を回避
広告検証ローテーション異なるユーザーを模倣
API アクセスどちらでもレート制限による

Context-Aware Routing を使えば、多くの場合、手動で判断する必要はありません:

# HydraSkill が対象を分析し、適切な戦略を選択
proxy = client.get_proxy(target="amazon.com")
# → EC サイトでは自動的に Session Lock を使用
proxy = client.get_proxy(target="google.com/search")
# → 検索では自動的にローテーション

タスクによっては、両方の戦略を順番に必要とします:

# フェーズ 1: 調査(ローテーション)
for product_url in discover_products():
proxy = client.get_proxy(target="amazon.com")
data = scrape(product_url, proxy)
proxy.release()
# フェーズ 2: 購入(Session Lock)
proxy = client.get_proxy(target="amazon.com", session_lock=True)
add_to_cart(proxy)
checkout(proxy)
proxy.release()

一方の戦略を既定にしないでください。プロキシの挙動をタスクの要件に合わせましょう。HydraSkill は判断を自動で処理し、必要に応じてオーバーライドもできるため、これを容易にします。

HydraSkill をはじめる →