Python Scrapy でプロキシを設定・ローテーションする方法

更新日:

Scrapy の非同期 Twisted エンジンには、プライオリティ 750 で動作する組み込みの HttpProxyMiddleware が用意されており、request.meta['proxy'] に代入された http://user:pass@ip:port 形式の接続文字列を自動解釈します。プライオリティ 740 でわずか 10 行のカスタム Downloader Middleware を作成するだけで、スパイダーが VinaProxy の通信量無制限な静的 IP プールを自動巡回できるようになります。

Scrapy · HTTP Proxy Format
request.meta['proxy'] = 'http://user:pass@ip:port'
専用IPv4(データセンター)
🇺🇸 United States
在庫あり
最安
₫20,000 / IP / 月
≈ $0.74 · VND決済
ボリュームディスカウント
  • 1 IP₫40,000
  • 5+ IP₫35,000
  • 10+ IP₫25,000
  • 20+ IP₫25,000
  • 50+ IP₫25,000
  • 100+ IP₫25,000
  • 200+ IP₫25,000
  • 500+ IP₫25,000
  • 1000+ IP₫22,000
  • 2000+ IP₫20,000
United Statesを購入
専用IPv4(データセンター)
🇬🇧 United Kingdom
在庫あり
最安
₫20,000 / IP / 月
≈ $0.74 · VND決済
ボリュームディスカウント
  • 1 IP₫40,000
  • 5+ IP₫35,000
  • 10+ IP₫25,000
  • 20+ IP₫25,000
  • 50+ IP₫25,000
  • 100+ IP₫25,000
  • 200+ IP₫25,000
  • 500+ IP₫25,000
  • 1000+ IP₫22,000
  • 2000+ IP₫20,000
United Kingdomを購入
プラットフォーム別プロキシ:web-scrapingseo-rank-trackingamazon

Scrapy プロキシミドルウェアの優先順位と同時実行制御設定

組み込みの HttpProxyMiddleware は優先順位 750 で実行され、プロキシ URL から user:pass を除去して Proxy-Authorization ヘッダーを生成するため、request.meta['proxy'] を設定するカスタムミドルウェアは必ずそれより小さい値(例:740)で登録する必要があります:

Scrapy 設定項目推奨設定値技術的機能と役割
request.meta['proxy']'http://user:pass@ip:port'指定した VinaProxy プロキシ経由でリクエストをルーティング
ミドルウェア優先度740(750 より前)組み込みの HttpProxyMiddleware が認証ヘッダーを正しくエンコードすることを保証
CONCURRENT_REQUESTS_PER_IP2 〜 4プロキシ IP ごとの同時ソケット接続数を制限し、HTTP 429 制限を防止
AUTOTHROTTLE_ENABLEDTrue対象サーバーの応答レイテンシに応じてクロール遅延を動的に自動調整

大規模 Scrapy クロールにおけるベストプラクティス

  • ミドルウェアの from_crawler() で VinaProxy プロキシリストを読み込み、process_request() 内で request.meta['proxy'] = random.choice(self.proxies) を適用してリクエストごとに IP をランダム選択します
  • DOWNLOAD_DELAY = 1.0 とあわせて RANDOMIZE_DOWNLOAD_DELAY = True を有効にし、同一 IP からのリクエスト間隔に自然な揺らぎを持たせます
  • HTTP 429 や 503 によるリトライ発生時は、リクエストをキューへ戻す前に別のプロキシ IP へ切り替えます

手順

  1. 1

    プロキシリストを http://user:pass@ip:port 形式に変換

    VinaProxy のプロキシリストを当サイトの プロキシ形式変換ツール に入力し、URL 形式を生成します。

  2. 2

    middlewares.py 内に ProxyPoolMiddleware を定義

    process_request(self, request, spider) を実装し、request.meta['proxy'] = random.choice(self.proxies) を設定します。

  3. 3

    settings.py で優先度 740 としてミドルウェアを登録

    DOWNLOADER_MIDDLEWARES に 'myproject.middlewares.ProxyPoolMiddleware': 740 を追加し、CONCURRENT_REQUESTS_PER_IP = 2 を指定します。

  4. 4

    scrapy shell またはクロール実行で動作確認

    https://vinaproxy.com/api/my-ip へテストリクエストを送信し、IP ローテーションと認証が正常に動作することを確認します。

よくある質問

カスタム Scrapy プロキシミドルウェアを優先度 800 に設定すると失敗する理由は?

Scrapy 標準の HttpProxyMiddleware は優先度 750 で実行されます。もしカスタムミドルウェアを 800(750 の後)に設定すると、URL 内の user:pass が Proxy-Authorization ヘッダーに変換されません。必ず優先度を 750 より前(例:740)に設定してください。

Scrapy は各プロキシに対して持続的な接続(Keep-Alive)を維持しますか?

はい。Twisted の接続プールによって、各プロキシエンドポイントに対する持続的な Keep-Alive 接続が維持され、ハンドシェイクのオーバーヘッドを抑えます。

数百万ページ規模の大規模スクレイピングでデータ通信量に制限はありますか?

いいえ。VinaProxy のすべての専用 IPv4 および静的 ISP プランには、月間データ転送量無制限が含まれています。

通信量無制限の静的 IP プールで Scrapy スパイダーを拡張

世界 7 カ国対応、即時発行可能な高品質専用 IPv4 & 静的 ISP プロキシ。

Scrapy 用プロキシを購入

関連記事

プラットフォーム別プロキシ
Webスクレイピング用プロキシ:24時間365日クローラー向け無制限専用IPv4&ISPプール
Python、Playwright、Selenium、Scrapy向け高速HTTP(S)専用IPv4&固定ISPプロキシ。月間帯域幅無制限。
ツール別プロキシ設定
Python Requestsでプロキシを使用する方法(HTTP/HTTPS & Sessionプーリング)
Python requestsおよびrequests.Session()での認証付きHTTP(S)プロキシ設定。407 ProxyErrorの解決法と固定IPプールのローテーション手法。
ツール別プロキシ設定
Playwright でプロキシを設定する方法(ブラウザ全体 & コンテキスト別認証)
Node.js と Python の Playwright で認証付き HTTP(S) プロキシを設定。単一ブラウザ内の各 BrowserContext に独立した固定静的 IP を割り当てます。
無料ツール
プロキシ形式一括変換ツール(100% ブラウザ内完結・安心設計)
100% クライアント側で動作するプロキシ一括フォーマッター。ip:port:user:pass、user:pass@ip:port、http:// URL、SOCKS5 URI、JSON配列、FoxyProxy形式間で相互変換。
プラットフォーム別プロキシ
SEO&SERP順位追跡用プロキシ:7か国の正確な検索結果順位をリアルタイム監視
地域別キーワード順位の追跡、Geoリダイレクトの監査、Screaming Frogによるクローリングを無制限の専用IPv4&固定ISPプロキシで実現。
プラットフォーム別プロキシ
Amazon用プロキシ:セラーセントラル・KDP・Merchを固定IPで完全分離
セラーセントラル、KDP、Merch on Demandにおける関連アカウント停止を防止。アメリカの固定ISPおよびイギリス・日本の専用IPv4プロキシ。
IPV4 · united states
米国専用IPv4プロキシ:高速かつ専用のアメリカデータセンターIP
米国専用IPv4プロキシ:スクレイピング、順位計測、広告確認、Amazon調査に。固定IP、1人1IP、帯域無制限、即時有効化。
IPV4 · united kingdom
英国専用IPv4プロキシ:セラー、SEO、広告向けの固定イギリスデータセンターIP
英国専用IPv4プロキシ:eBay UKやAmazon.co.uk調査、google.co.uk順位計測、英国向け広告検証、SNS運用に。帯域無制限。