パーサー用のプロキシを選ぶ際、多くの記事は「SOCKS5は速い」や「HTTPは設定が簡単」といった一般的なフレーズにとどまります。しかし、実際には具体的なタスクによって異なります。Wildberriesの価格をパースするには1つのアプローチが必要で、Instagramからデータを収集するには全く別のアプローチが必要です。また、Dolphin AntyやAdsPowerのようなアンチデテクトブラウザを介して作業する場合は、さらに異なるアプローチが必要です。この記事では、具体的な推奨事項とコード例を交えて、5つの実際のシナリオにおけるプロトコルの違いを解説します。
SOCKS5とHTTP:根本的な違いは何か
HTTPプロキシはHTTP/HTTPSプロトコルのレベルで動作します。つまり、ウェブトラフィックが転送されることを理解し、それに対処することができます。リクエストをキャッシュしたり、ヘッダーを置き換えたり、コンテンツをフィルタリングしたりします。これにより、HTTPプロキシはブラウザトラフィックやAPIトラフィックが必要なタスクに便利です。例えば、Pythonのrequestsを介してマーケットプレイスのウェブサイトをパースする場合などです。
一方、SOCKS5はより低いレベルで動作し、コンテンツを分析することなく任意のTCP/UDPトラフィックを単にリダイレクトします。つまり、SOCKS5はHTTPリクエストだけでなく、FTP、SMTP、デスクトップアプリケーションを介した接続、アンチデテクトブラウザ、メッセンジャーなど、他のプロトコルにも適しています。SOCKS5はヘッダーを追加したり削除したりしないため、アンチフロードシステムに対して目立ちにくく、プロキシサーバーは特定のHTTPヘッダーの「足跡」を残しません。
パースにおいてこれは重要な違いです。一部のウェブサイトは、HTTPプロキシが追加する可能性のあるViaやX-Forwarded-Forヘッダーをチェックします。これによりプロキシの使用が明らかになります。SOCKS5はそのような痕跡を残さないため、最大限の目立たなさが重要なタスクに選ばれることが多いです。
タスク1:WildberriesとOzonの価格パース
WildberriesとOzonでの競合他社の価格監視は、マーケットプレイスのセラーにとって最も一般的なタスクの1つです。両方のプラットフォームはボットからの保護を積極的に使用しており、リクエストの頻度の分析、ヘッダーのチェック、行動パターンを監視しています。ほとんどの場合、パースは内部APIへのHTTPリクエストを介して行われるか、ヘッドレスブラウザでページをレンダリングすることによって行われます。
このタスクには、requestsやhttpxを介して直接リクエストを行う場合、HTTPプロキシが最適です。しかし、SeleniumやPlaywrightを介してページを完全にレンダリングする場合は、SOCKS5を使用する方が良いです。これは、WebSocket接続を含むブラウザの任意のトラフィックで正しく動作するため、価格の動的な読み込みに頻繁に使用されます。
実際には、WildberriesとOzonのパースにはレジデンシャルプロキシが最適です。これらは実際のユーザーのIPを持ち、SOCKS5またはHTTPが使用されているかに関係なく、統計的にブロックされることが少ないです。重要なのはプロトコルではなく、IPアドレスのタイプとローテーションの頻度です。
タスク2:Avitoの広告監視
Avitoは自動化の疑いがある場合、特にリクエストが同じIPから大量に行われると、IPアドレスを厳しくブロックします。広告のパース(価格の監視、新しいロットの追跡、都市ごとのジオターゲティングデータ収集)には、リクエストごとにローテーションするHTTPプロキシがよく使用されます。これはPythonのスクリプトで簡単に実装でき、追加のライブラリを必要としません。
ただし、タスクが単なるパースではなく、実際のユーザーの行動を模倣すること(広告の閲覧、お気に入りへの追加、複数のアカウントを介した広告への応答)である場合、SOCKS5がアンチデテクトブラウザと組み合わせて必要です。これにより、単なるHTTPリクエストではなく、生のユーザーのセッションを完全にエミュレートできます。
Avitoのジオターゲティングパース(「モスクワからの広告」や「カザンからの広告」を見る必要がある場合)には、IPの地域選択が重要です。ここでは、レジデンシャルプロキシが都市ごとの正確なジオターゲティングを提供し、データセンターのプロキシに対して顕著な利点をもたらします。
タスク3:InstagramとTikTokからのデータ収集
ソーシャルメディアのパースは、ブロックに最も敏感なタスクです。InstagramとTikTokは、IPだけでなく、TLSフィンガープリンティング、リクエストパターン、User-Agentが実際のデバイスに一致するかどうかを分析します。このため、HTTPプロキシは特定のヘッダーを介して「自らを明らかにする」ことが多いため、競合他社のデータをパースしたり、アウトリーチキャンペーンのためのデータベースを収集したりするSMMスペシャリストやアフィリエイターは、SOCKS5を選ぶことが多いです。
特に、モバイルアプリ(Androidエミュレーター)を介したパースでは、InstagramやTikTokのアプリは直接TCP接続を前提としているため、HTTPプロキシはアプリのSDKレベルでサポートされない可能性があります。この場合、SOCKS5が唯一の実用的な選択肢です。
TikTok AdsやFacebook Adsでのアカウント管理と同時にデータをパースするために、アフィリエイターは通常SOCKS5とモバイルプロキシを組み合わせます。これらのIPアドレスは通信事業者に属し、ソーシャルメディアのアンチフロードシステムによって疑いを持たれることが統計的に少なく、特にモバイルトラフィックを介したパース時に有利です。
タスク4:検索エンジンとSEOデータのパース
GoogleやYandexの検索結果のパースやSEOメトリクス(順位、スニペット、検索結果のボリューム)の収集は、高頻度のリクエストが必要なタスクです。ここでは、個々のリクエストの目立たなさよりも、IPの大量ローテーション時の速度と安定性が重要です。この場合、HTTPプロキシが通常は好まれます。これは、requestsベースのパーサーに簡単に統合でき、リクエストのキャッシュシステムとより良く機能し、トンネリングの追加設定を必要としません。
このタスクには、データセンターのプロキシが非常に適しています。これらはレジデンシャルやモバイルよりも速く、公開検索結果のパース(アカウントにログインせずに)では、IPの「目立たなさ」は、1分間に数千のリクエストを処理する速度ほど重要ではありません。
唯一の例外は、検索エンジンがすでにデータセンターのIP範囲をブラックリストに登録している場合(これはGoogleでよく発生します)で、その場合はレジデンシャルIPを使用したSOCKS5に切り替えることで、CAPTCHAや一時的なブロックの問題を解決できます。
タスク5:アンチデテクトブラウザを介したパース
パースがマルチアカウントと組み合わされている場合、例えば、競合他社のデータを収集しながら、Dolphin Anty、AdsPower、Multilogin、GoLoginを介してFacebook AdsやInstagramの複数の広告アカウントを管理する場合、プロキシのプロトコルは、HTTPリクエストレベルだけでなく、システム設定レベルでアンチデテクトブラウザによってサポートされる必要があります。
すべてのアンチデテクトブラウザはSOCKS5とHTTPの両方をサポートしていますが、ほとんどのプロフェッショナルはSOCKS5を選ぶのは、このプロトコルがプロファイルのすべてのトラフィックを正しく通過させるからです。これには、画像、フォント、WebRTCリクエスト、ソーシャルメディアや広告ダッシュボードの動的インターフェース要素で使用されるWebSocket接続が含まれます。
Dolphin Antyでの設定は次のようになります:プロファイルを開く → 「プロキシ」タブ → SOCKS5タイプを選択 → IP、ポート、ユーザー名、パスワードを入力 → 保存して、内蔵のIPチェッカーで確認します。AdsPowerでもプロセスは類似しており、「Proxy Settings」セクション → SOCKS5プロキシタイプ → データを入力 → プロファイルを開始する前に接続をテストします。
まとめ表:各タスクに最適な選択
| タスク | 推奨プロトコル | プロキシの種類 |
|---|---|---|
| Wildberries/Ozonの価格パース | HTTP(API)、SOCKS5(ブラウザ) | レジデンシャル |
| Avitoの監視 | HTTP | レジデンシャル |
| Instagram、TikTok | SOCKS5 | モバイル |
| 検索エンジンのSEOパース | HTTP | データセンター |
| アンチデテクトブラウザ | SOCKS5 | レジデンシャル / モバイル |
コード例:PythonでのSOCKS5とHTTPの接続
自分自身のパーサーを作成する人にとって、コードレベルでの接続の違いを理解することが重要です。以下は、requestsライブラリを使用したPythonの基本的な例です。
HTTPプロキシを介した接続:
import requests
proxies = {
"http": "http://user:pass@ip:port",
"https": "http://user:pass@ip:port"
}
response = requests.get("https://example.com", proxies=proxies, timeout=10)
print(response.status_code)
SOCKS5を介した接続(requests[socks]をpipでインストールする必要があります):
import requests
proxies = {
"http": "socks5h://user:pass@ip:port",
"https": "socks5h://user:pass@ip:port"
}
response = requests.get("https://example.com", proxies=proxies, timeout=10)
print(response.status_code)
socks5hの接頭辞に注意してください。これは、「h」がDNSリクエストもプロキシを介して行われることを意味し、あなたのIPから直接ではないことを示します。これは、パース時の完全な匿名性にとって重要です。これがないと、ウェブサイトは実際のDNSリクエストを確認し、あなたの本当の位置情報と関連付けることができます。
Seleniumを介したパースの場合、SOCKS5の設定は異なります。プロキシはブラウザのキャパビリティレベルで指定されます:
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.socks_proxy = "ip:port"
proxy.socks_username = "user"
proxy.socks_password = "pass"
proxy.socks_version = 5
options = webdriver.ChromeOptions()
options.add_argument(f"--proxy-server=socks5://user:pass@ip:port")
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
プロトコル選択のチェックリスト
- APIや静的ページをrequests/httpxでパースする → HTTPを選択
- ヘッドレスブラウザ(Selenium、Playwright、Puppeteer)を介して作業する → SOCKS5を選択
- モバイルアプリやエミュレーターからデータを収集する → SOCKS5のみ
- 検索結果の大量パース時に最大速度が必要 → HTTP + データセンター
- アンチデテクトブラウザでアカウント管理とパースを組み合わせる → SOCKS5 + レジデンシャル/モバイルIP
- ウェブサイトがViaやX-Forwarded-Forのヘッダーをチェックする → SOCKS5に切り替える
- プロキシを介したDNS操作が重要 → 通常のsocks5ではなくsocks5hを使用
結論と推奨事項
パーサー用のSOCKS5とHTTPの選択は、「全体的に何が良いか」という問題ではなく、特定のタスクに対するプロトコルの適合性の問題です。マーケットプレイスや検索エンジンのAPIをパースする場合、HTTPは簡単で迅速な解決策のままです。ソーシャルメディア、モバイルアプリ、アンチデテクトブラウザで作業する場合、SOCKS5はより多くの柔軟性を提供し、デジタルの足跡を減らします。
しかし、いずれにせよ、プロトコルは方程式の半分に過ぎません。もう半分は、IPアドレスのタイプと品質です。高頻度のリクエストでマーケットプレイスやソーシャルメディアをパースする予定がある場合は、レジデンシャルプロキシのテストから始めることをお勧めします。これらは両方のプロトコルで機能し、使用するパーシングツールに関係なく、ブロックのリスクを最小限に抑えます。