プロキシプールを使用しているとき、マーケットプレイスをパースしたり、アカウントをファームしたり、アンチデテクトブラウザを通じて広告を出したりする際には、質の高いIPアドレスを持つだけでなく、それらを適切にローテーションすることも重要です。誤ったローテーション戦略は、ブロックや特定のプロキシの過負荷、不安定な動作を引き起こします。この記事では、3つの主要な戦略、ランダム(random)、ラウンドロビン(round-robin)、最小接続数(least connections)を分析し、特定のタスクに適したものを示します。
プロキシのローテーションとは何か、なぜ必要か
プロキシのローテーションとは、リクエストを実行する際にプール内のIPアドレス間で自動的に切り替えることです。同じプロキシをすべての操作に使用するのではなく、システムは複数のサーバー間で負荷を分散します。これは、匿名性とブロックからの保護が重要なタスクにとって非常に重要です。
例えば、Wildberriesから価格をパースしているとします。すべてのリクエストを1つのIPから送信すると、マーケットプレイスはすぐに疑わしい活動に気づき、アドレスをブロックします。ローテーションはこの問題を解決します。各リクエストは新しいIPから送信され、異なるロケーションの異なるユーザーの行動を模倣します。
ローテーションを使用する主な理由は以下の通りです:
- ブロックからの保護: サイトは1つのIPからの大量の活動を検知しません
- 負荷の分散: プロキシは過負荷にならず、作業速度が安定します
- 実際のユーザーの模倣: リクエストは自然に見えます
- 制限の回避: 多くのプラットフォームは、1つのIPからのリクエスト数を制限しています
しかし、ローテーション戦略には重要な意味があります。単にランダムにプロキシを切り替えるだけでは、不均等な負荷が発生する可能性があります。一部のサーバーが過負荷になり、他のサーバーがアイドル状態になることがあります。3つの主要な戦略とその適用について詳しく見ていきましょう。
ランダム(random)ローテーション:使用するタイミング
ランダム(random)ローテーションは最もシンプルな戦略です。システムは各リクエストのためにプールからプロキシをランダムに選択します。特にロジックはなく、負荷の考慮もありません。ただのランダムです。
ランダムローテーションの動作
10のプロキシからなるプールがあります。新しいリクエストごとに、システムは1から10の間のランダムな数を生成し、それに対応するプロキシを選択します。理論的には、多くのリクエストがあれば負荷は均等に分散されますが、実際には偏りが生じる可能性があります。1つのプロキシが3回連続してリクエストを受けることもあれば、別のプロキシは全く使用されないこともあります。
例: Ozonから100の商品をパースしています。ランダムローテーションでは、プロキシ№1を通じて15リクエスト、プロキシ№2を通じて8リクエスト、プロキシ№3を通じて12リクエストなどが送信される可能性があります。分配は不均等ですが、小規模なボリュームではそれほど重要ではありません。
ランダムローテーションの利点
- 実装の簡単さ: プロキシの状態を追跡する必要がありません
- 予測不可能性: アンチフロードシステムがパターンを特定するのが難しくなります
- 低いオーバーヘッド: カウンターや統計を保存する必要がありません
- 小規模なボリュームに適している: 10-20のプロキシと100-200のリクエストがある場合
ランダムローテーションの欠点
- 不均等な負荷: 一部のプロキシが過負荷になり、他のプロキシがアイドル状態になります
- 再利用のリスク: 1つのプロキシが連続して複数のリクエストを受ける可能性があります
- 予測不可能性: 負荷を計画し、プールを最適化するのが難しいです
- 高負荷には不向き: 数千のリクエストがある場合、偏りが重大になります
ランダムを使用するタイミング
ランダムローテーションは、予測不可能性が重要でリクエストのボリュームが少ないタスクに最適です:
- 小規模なデータのパース(時速500-1000リクエストまで)
- ローテーションのパターンを探しているアンチフロードシステムとの作業
- より複雑な戦略の設定前にプロキシプールをテストする
- 最大の匿名性が重要で、速度がそれほど重要でないタスク
これらの目的には、レジデンシャルプロキシが最適です。これらは実際の家庭ユーザーのIPを持っており、ローテーションをさらに自然にします。
ラウンドロビン(round-robin):負荷の均等分配
ラウンドロビン(round-robin)は、プロキシが厳密に順番に選択される戦略です。システムはリストを最初から最後まで通過し、その後最初に戻ってサイクルを繰り返します。これにより、負荷が完全に均等に分配されます。
ラウンドロビンの動作
5つのプロキシからなるプールがあります。最初のリクエストはプロキシ№1を通じて、2番目は№2を通じて、3番目は№3を通じて、4番目は№4を通じて、5番目は№5を通じて、6番目は再び№1を通じて、というように続きます。各プロキシは正確に同じ数のリクエストを受け取ります。100リクエストを送信した場合、各プロキシは正確に20を処理します。
例: 1000の商品を持つWildberriesのカタログをパースしています。ラウンドロビンは、プール内の各プロキシが正確に1000 ÷ プロキシ数のリクエストを処理することを保証します。10のプロキシがある場合、各プロキシは正確に100リクエストを受け取ります。
ラウンドロビンの利点
- 完璧な分配: 各プロキシは同じ負荷を受け取ります
- 予測可能性: 各プロキシが処理するリクエスト数を簡単に計算できます
- 実装の簡単さ: リスト内の現在の位置を追跡するカウンターのみが必要です
- リソースの最適な使用: どのプロキシもアイドル状態になりません
- 大規模なボリュームに適している: 数千のリクエストに対して安定した動作
ラウンドロビンの欠点
- 予測可能なパターン: アンチフロードシステムはIPの循環的な変更に気づく可能性があります
- プロキシの状態を考慮しない: 1つのプロキシが遅い場合でも、そのプロキシは自動的に負荷を受け取ります
- 障害時の問題: プロキシがダウンした場合、スキップまたは交換のロジックが必要です
- 異種プールには不向き: プロキシの速度が異なる場合、速いプロキシがアイドル状態になります
ラウンドロビンを使用するタイミング
ラウンドロビンは、安定性と均等な負荷が重要なタスクに最適です:
- マーケットプレイスの大量パース(Wildberries、Ozon、Yandex.Market) — 時速数千のリクエスト
- 競合他社の価格監視 — 定期的なチェックを数分ごとに実施
- 安定した応答速度が重要なAPIとの作業
- すべてのプロキシがほぼ同じ速度と品質の場合のタスク
- 予測可能な負荷のシナリオ — 送信するリクエスト数がわかっている場合
パースや監視には、データセンタープロキシが最適です。これらは高速で安定しており、ラウンドロビンでは最大のパフォーマンスを発揮します。
最小接続数(least connections):高負荷タスク向け
最小接続数(least connections)は、各プロキシのアクティブな接続を追跡し、新しいリクエストを最も負荷の少ないサーバーに送信するスマートな戦略です。これはリアルタイムの動的負荷バランシングです。
最小接続数の動作
システムは常に、現在各プロキシが処理しているアクティブな接続(リクエスト)の数を監視しています。新しいリクエストが来ると、アクティブな接続が最も少ないプロキシを選択します。プロキシ№1が3リクエストを処理し、プロキシ№2が7リクエストを処理し、プロキシ№3が1リクエストを処理している場合、新しいリクエストはプロキシ№3を通じて送信されます。
例: 50の並列スレッドでパーサーを起動しています。いくつかのリクエストは迅速に処理され(200ms)、他のリクエストは遅く処理されます(2000ms)。最小接続数は自動的に迅速なプロキシにより多くのリクエストを送信し、遅いプロキシには少ない負荷がかかります。結果として、パースの最大速度が得られます。
最小接続数の利点
- 最適なパフォーマンス: 迅速なプロキシがより多くのリクエストを処理します
- 適応性: 各プロキシの速度に自動的に適応します
- 異種プールとの作業: 異なる速度のプロキシを混ぜることができます
- 過負荷に対する耐性: プロキシが遅くなり始めた場合、自動的に負荷が減ります
- 並列タスクに最適: 同時に数十のリクエストが実行される場合
最小接続数の欠点
- 実装の複雑さ: 各プロキシの状態をリアルタイムで追跡する必要があります
- オーバーヘッド: 追加のメモリと計算が必要です
- 逐次タスクには不向き: リクエストが1つずつ送信される場合、利点が失われます
- 監視が必要: 接続のオープン/クローズを正しく追跡する必要があります
最小接続数を使用するタイミング
最小接続数は、並列処理を伴う高負荷タスクに最適です:
- 20以上の並列スレッドでの大量パース
- 異なる速度のプロキシプールとの作業(例えば、レジデンシャルとデータセンターの混合)
- 処理速度が最大限に重要なタスク
- サーバーの応答時間が予測できないシナリオ(変動する負荷のAPI)
- ソーシャルメディアやマーケットプレイス用の高負荷ボット
これらのタスクには、モバイルプロキシとデータセンターを組み合わせて使用することがよくあります。モバイルは重要なリクエスト(認証、アカウントでのアクション)に、データセンターは大量パースに使用します。
戦略の比較表
3つの戦略を1つの表にまとめて、迅速に比較しましょう:
| 基準 | ランダム | ラウンドロビン | 最小接続数 |
|---|---|---|---|
| 負荷の分配 | 不均等 | 完全に均等 | 最適(速度に基づく) |
| 実装の難易度 | 非常に簡単 | 簡単 | 難しい |
| パフォーマンス | 平均的 | 良好 | 最大 |
| 予測可能性 | 予測不可能 | 予測可能 | 適応的 |
| 小規模なボリュームに適している | ✅ はい | ✅ はい | ❌ 過剰 |
| 大規模なボリュームに適している | ❌ いいえ | ✅ はい | ✅ はい |
| 異種プールとの作業 | ❌ 悪い | ❌ 悪い | ✅ 素晴らしい |
| パターンからの保護 | ✅ 高い | ❌ 低い | ⚠️ 中程度 |
| 並列リクエスト | ⚠️ 中程度 | ✅ 良好 | ✅ 素晴らしい |
あなたのタスクに適した戦略の選び方
ローテーション戦略の選択は、具体的なタスク、リクエストのボリューム、プロキシの種類に依存します。人気のあるシナリオを見てみましょう。
マーケットプレイスのパース(Wildberries、Ozon、Avito)
ボリューム: 時速1000-10000リクエスト
推奨: ラウンドロビン
理由: 負荷の均等分配、予測可能な速度、安定した動作。すべてのプロキシが同じ負荷を受けることが重要です。
設定: 10-20のレジデンシャルまたはデータセンタープロキシのプール、各リクエストごとにローテーション。マーケットプレイスが積極的にブロックする場合は、1-3秒の遅延を追加します。
ソーシャルメディアでのマルチアカウント(Instagram、TikTok、VK)
ボリューム: 10-50アカウント、1日あたり100-500アクション
推奨: ランダム
理由: 予測不可能性が重要です。ソーシャルメディアのアンチフロードシステムはパターンを分析し、循環的なローテーションは自動化を示す可能性があります。ランダムは実際のユーザーの行動を模倣します。
設定: 各アカウントに対して別々のモバイルまたはレジデンシャルプロキシを使用します。アカウントを切り替えるときのみローテーションし、1つのセッション内ではIPは変更しません。指紋管理のためにアンチデテクトブラウザ(Dolphin Anty、AdsPower)を使用します。
アービトラージ用のアカウントファーム(Facebook Ads、TikTok Ads)
ボリューム: 20-100アカウント、7-14日間のウォームアップ
推奨: アカウントごとにIPを固定したランダム
理由: 各アカウントは安定した「地理」を持つ必要があります。アカウント間のローテーションはランダムですが、1つのアカウント内ではIPは数週間変更されません。
設定: 「1アカウント = 1モバイルプロキシ」の関連付け。ランダムは新しいアカウントを作成する際にプロキシを選択するためにのみ使用されます。セッション内でのローテーションはありません。
高負荷での大量パース(検索エンジン、アグリゲーター)
ボリューム: 時速10000以上のリクエスト、20以上の並列スレッド
推奨: 最小接続数
理由: 最大の処理速度。迅速なプロキシがより多くのリクエストを処理し、遅いプロキシはシステム全体を遅くしません。
設定: 50-100のデータセンタープロキシのプール。プロキシマネージャーまたはロードバランサー(HAProxy、Nginx)を介してアクティブな接続を監視します。ダウンしたプロキシを自動的に除外します。
競合他社の価格監視(定期的なチェック)
ボリューム: 30-60分ごとに100-500リクエスト
推奨: ラウンドロビン
理由: 予測可能な負荷で、トラフィックの消費を簡単に計画できます。均等な分配は、どのプロキシも過負荷にならないことを保証します。
設定: 5-10のレジデンシャルプロキシのプール。各リクエストごとにローテーション。IPごとのブロックを追跡するために結果をログに記録します。
人気ツールでのローテーション設定方法
ほとんどのプロキシ作業ツールは、ローテーション戦略の設定をサポートしています。人気のあるソリューションでの設定方法を見てみましょう。
アンチデテクトブラウザ(Dolphin Anty、AdsPower、Multilogin)
アンチデテクトブラウザでは、通常ローテーションは必要ありません。各プロファイル(アカウント)には、変更されない別々のプロキシが割り当てられます。しかし、多くのプロファイルを管理している場合は、プールからプロキシを自動的に割り当てるように設定できます。
Dolphin Anty: 設定 → プロキシ → プロキシリストのインポート → 「ランダムに割り当てる」(random)または「順番に」(round-robin)を選択します。新しいプロファイルごとに選択した戦略に従ってプロキシが割り当てられます。
AdsPower: プロファイルの大量作成 → プロキシリストをアップロード → 配分モードを選択します(ランダム / 逐次)。逐次はラウンドロビンとして機能します。
推奨: マルチアカウント用にはプロファイル作成時にランダムを使用しますが、プロファイル内ではプロキシを固定する必要があります。
パーサーとスクレイパー(既製のソリューション)
多くのマーケットプレイスやソーシャルメディアのパーサーには、プロキシのローテーションをサポートする機能が組み込まれています。通常、プロキシリストと戦略の選択を介して設定されます。
典型的な設定: プロキシのテキストファイルをアップロード(形式はIP:PORT:USER:PASS、各プロキシは新しい行で) → ローテーション戦略を選択(ランダム / ラウンドロビン / リクエストごと) → パースを開始します。
リクエストごとは通常ラウンドロビンを意味します — プロキシは各リクエストごとに順番に変更されます。
プロキシマネージャーとロードバランサー(HAProxy、Nginx)
上級ユーザー向けには、選択した戦略に従ってリクエストをプロキシ間で分配するロードバランサーの設定があります。
HAProxy(最小接続数): バックエンドの設定で balance leastconn を指定します。HAProxyはアクティブな接続を監視し、新しいリクエストを最も負荷の少ないプロキシに送信します。
Nginx(ラウンドロビン): デフォルトでNginxはアップストリームサーバーに対してラウンドロビンを使用します。プロキシをアップストリームブロックに列挙するだけで、ローテーションが自動的に行われます。
これらのソリューションは、高負荷システムに適しており、最大のパフォーマンスと制御が必要です。
ローテーション設定時の典型的なミス
正しく選択された戦略でも、設定ミスにより機能しないことがあります。よくある問題を見てみましょう。
ミス1:セッション内でのローテーション(マルチアカウント用)
問題: Instagramアカウントのために5分ごとにプロキシのローテーションを設定しました。結果は、疑わしい活動によるブロックです(モスクワからのログイン、5分後にサンクトペテルブルク、さらに5分後にカザンからのログイン)。
解決策: アカウント作業には、セッション全体(できれば数週間または数ヶ月)にわたってプロキシを固定する必要があります。ローテーションはアカウント間のみで、1つのアカウント内では行いません。
ミス2:アンチフロードからの保護にラウンドロビンを使用
問題: 攻撃的な保護を持つサイトをパースしており、ラウンドロビンを使用しています。アンチフロードは、リクエストが同じIPから循環していることに気づき(1-2-3-4-5-1-2-3...)、プール全体をブロックします。
解決策: スマートな保護を持つサイトにはランダムを使用するか、リクエスト間にランダムな遅延を追加してパターンを破壊します。
ミス3:プロキシプールが小さすぎる
問題: 3つのプロキシで時速1000リクエストを送信しています。理想的なローテーションでも、各プロキシは時速約333リクエストを受け取ることになり、これは疑わしく見えます。
解決策: プールの最適なサイズを計算します。ほとんどのタスクに対して、1つのIPから時速20-50リクエストは安全です。1000リクエストが必要な場合は、最低でも20-50のプロキシを用意します。
ミス4:ダウンしたプロキシを無視する
問題: 1つのプロキシが機能しなくなりましたが、ラウンドロビンは引き続きそのプロキシにリクエストを送信します。N番目のリクエストがエラーで失敗します。
解決策: プロキシの状態を監視する設定を行います。エラーが発生した場合、プロキシをプールから5-10分間自動的に除外し、その後再確認します。ほとんどのプロキシマネージャーはヘルスチェックをサポートしています。
ミス5:逐次タスクに最小接続数を使用
問題: リクエストを1つずつ送信しています(並列処理なし)が、最小接続数を設定しています。結果は、すべてのリクエストが1つのプロキシを通じて送信されることです。なぜなら、選択時にそのプロキシには常に0のアクティブ接続があるからです。
解決策: 最小接続数は並列処理(10以上の同時リクエスト)の場合にのみ意味があります。逐次タスクにはラウンドロビンまたはランダムを使用します。
結論
プロキシのローテーション戦略の選択は、抽象的な理論ではなく、作業の速度、安定性、ブロックからの保護に直接影響を与える具体的な解決策です。ランダムは、予測不可能性が重要でボリュームが小さいタスクに適しています — ソーシャルメディアでのマルチアカウント、アカウントのファーム、アンチフロードシステムとの作業。ラウンドロビンは、大量パースや監視に最適な選択肢で、均等な負荷と予測可能性が必要です。最小接続数は、並列処理を伴う高負荷システムに適しており、最大の速度が重要です。
重要なルールは、普遍的な戦略は存在しないということです。タスクを分析してください:リクエストのボリューム、ターゲットサイトのタイプ、匿名性の要件、並列処理の有無。設定を実験し、結果をログに記録し、ブロックを追跡してください。質の高いプロキシと組み合わせた正しいローテーションは、ブロックなしで安定した動作を提供します。
まだあなたのタスクに適したプロキシのタイプが決まっていない場合は、レジデンシャルプロキシから始めることをお勧めします。これらは汎用性が高く、高い信頼性を持ち、ほとんどのシナリオに適しています。高負荷のパースにはデータセンターを検討し、モバイルアプリやソーシャルメディアとの作業にはモバイルプロキシを検討してください。