ウェブスクレイピングにプロキシが必要な理由は何ですか?
ウェブスクレイピングはサイトの公開ページをプログラムで読み込み、必要な情報を収集する作業です。1つのIPから短時間に多くのリクエストを送ると、対象サイトは接続速度を遅くしたり、確認文字入力画面を表示したり、一時的に接続を遮断します。プロキシを使うとリクエストを複数IPに分散させ、1IPあたりのリクエスト数を人間が閲覧するレベルに抑えられます。
また、商品価格、検索結果、地図情報など国ごとに表示が異なるページは、その国のIPでアクセスすることで正確な値を得られます。Socks5Proxyは複数国のデータセンターIPとISP IPを提供しているため、同じクローラーで複数国の結果を収集できます。
プロキシは収集速度を向上させるツールでもあります。リクエストを複数IPに分散すると、同時により多くの接続を開けるため、同じ量のページをより短時間で完了できます。
スクレイピングにはどのプロキシ製品が適していますか?
ほとんどのクローリングは共有データセンタープロキシで始めるのが最も経済的です。1つのIPを最大3人で共有する代わりに単価が低く、プランサイズが大きいほど割引が大きくなるため、数千のIPでリクエストを広く分散させるのに適しています。月1TBの帯域幅と同時接続500が含まれており、一般的なHTML収集には十分です。
対象サイトがデータセンター帯域を厳しくブロックする場合は共有ISPプロキシが良いでしょう。インターネットプロバイダに登録されたIPなので一般家庭ユーザーと似たように見え、データセンターで運営されているため速度も速いです。
ログインが必要なページを収集したり、同じセッションを長時間維持する必要がある場合は、プライベートまたは専用プロキシを選びましょう。他のユーザーのリクエストと混ざらないため、セッションが切れることが減ります。
| 状況 | おすすめ商品 | スタート価格 (1IP, 月額) |
|---|---|---|
| 公開ページ大量収集 | 共有データセンター | $0.0179 |
| データセンター帯域ブロックが多いサイト | 共有ISP | $0.1800 |
| ログインセッションを保持 | プライベートデータセンター | $0.4680 |
| 厳しいサイトの長期セッション | 専用ISP | $1.51 |
IPをどのようにローテーションさせると良いですか?
Socks5ProxyのIPはプラン期間中固定されているため、ローテーションはクローラーで直接制御します。最も簡単な方法はダウンロードしたリストを配列で読み込み、リクエストごとに次のIPを選択する方法です。リクエスト失敗時はそのIPを一時休止し他のIPで再送信します。
同じドメインに対しては、1つのIPあたりのリクエスト間隔を設定することが重要です。例えば1,000個のIPで1つのサイトを収集する場合、各IPで10秒に1回だけリクエストすれば、毎秒100ページを読むことができます。IP数を増やせば、1つのIPの負担を変えずに全体の速度だけを上げられます。
セッションが必要な場合は逆に、1作業単位中は同じIPを使用し続ける必要があります。カートや検索ページ遷移のようにクッキーが連続するフローでは、1作業に1IPを紐付け、作業終了後に次のIPに移行してください。
- リクエストごとにIPを変更:公開詳細ページの大量収集
- 作業単位でIP固定: ページ送り、ログイン後収集
- 失敗したIPは5~10分休ませて再使用
- ドメインごとにIP1つあたりのリクエスト間隔を設定
リクエスト速度はどの程度に設定すべきですか?
ターゲットサイトごとに許容速度が異なるため、最初は低く始めて少しずつ上げるのが最も安全です。IPあたり1分間に数回のリクエストから始め、レスポンスコードと応答時間を記録し、エラー率が増え始めるポイントより少し低く調整します。
応答コード429や403が増えたら速度を落とすかIP数を増やすサインです。応答本文に確認画面が混ざっていないかも確認してください。ステータスコードは200でも内容が異なる場合があるため、収集ページに期待した要素があるか検査するステップを設けるとデータ品質が向上します。
ヘッダーも重要です。実際のブラウザに近いUser-Agent、Accept-Languageを使用し、国別IPを使う際は言語ヘッダーもその国に合わせると結果が自然になります。
SOCKS5とHTTPのどちらで接続しますか?
ウェブページのみ収集するならHTTPプロキシで十分で、設定も最も簡単です。HTTPSサイトもCONNECT方式で暗号化されたまま伝達されます。
SOCKS5はHTTP以外の接続もそのまま転送し、ドメイン名解決をプロキシ側で行うように設定できるため、自サーバーのDNS情報が対象サイトに漏れることがありません。Pythonではsocks5h、cURLでは--socks5-hostnameを使用するとプロキシがドメインを解決します。
Socks5Proxyはプロキシの各行にHTTPポートとSOCKS5ポートを別々に提供しているため、同じIPを両方の方式で使用できます。
クローラーにプロキシリストをどのように接続しますか?
ダッシュボードの「マイプロキシ」画面で希望形式でリストをダウンロードするか、APIでリストを取得してクローラー起動時に読み込ませます。形式はip:port:user:pass、user:pass@ip:port、socks5://user:pass@ip:port、http://user:pass@ip:port、CSVなどから選択可能です。
サーバーIPが固定されている場合、IP認証を使用すると便利です。ダッシュボードにサーバーIPv4を最大10個まで登録すると、IDとパスワードなしでip:portだけで接続できます。パスワードをコードに含めなくてよいため、複数サーバーに同じ設定を展開しやすくなります。
Python requests, Scrapy, Node.js, cURL接続方法はガイドページに実際のコードと一緒にまとめてあります。
スクレイピングコストはどのように計算しますか?
必要なIP数は1日に読み込むページ数とIP1つあたりの許可リクエスト数で計算します。1日100万ページをIP1つあたり1日1000回以下に分割したいなら、IP1000個が必要です。共有データセンタープランはIP数が多いほど割引率が上がり、最大割引率は40%です。
長期間運用する作業であれば、年間支払いで30%節約できます。支払いはチャージした残高から引き落とされ、チャージ金額が$100以上であればボーナスが付与され、実際に使える金額が増えます。
責任あるスクレイピングのために何を守るべきですか?
公開された情報のみ収集し、対象サイトの利用規約とrobots規則、各国の個人情報法を守ってください。サーバーに負担をかけない速度でリクエストし、同じページを不必要に繰り返し読まないようキャッシュを設けるのが良いでしょう。
合法的なデータ収集は価格比較、研究、市場分析、検索エンジン運営など多くのサービスの基盤です。ルールを遵守して運営すればIPプールもクリーンに保たれ、全てのユーザーに良い結果をもたらします。