In this Article
Scrapyは、本格的なWebスクレイピングに対応した本番環境向けのPythonフレームワークです。高速な非同期処理を採用し、大規模なクロール向けに設計されています。しかし、1つのデータセンターIPからターゲットサイトをクロールすると、数分でレート制限やブロックを受けることがあります。そこで、Scrapyのリクエストをプロキシ経由で送信します。実際のユーザーからのアクセスに見せるには、住宅プロキシが最適です。Scrapyにはrequest.meta['proxy']によるプロキシ対応が標準で備わっており、ローテーションゲートウェイを使えばIPリストを管理する必要もありません。このガイドでは、Scrapyでプロキシを使用する方法(リクエスト単位の設定、全リクエストに適用するミドルウェア、ローテーション)を解説し、2026年のScrapy向けベストプロキシ8選を紹介します。DataImpulseは$1/GBで、コストパフォーマンスの基準となるサービスです。
私はAndrii Byzovです。AIネイティブのフラクショナルCMOとして、日々Scrapyクローラーを運用しています。ここでは、すぐに使える設定例、ミドルウェアの実行順序で陥りがちな問題、そして費用に見合うプロバイダーを紹介します。
重要ポイント
request.meta['proxy']でプロキシを設定します。Scrapy標準のHttpProxyMiddlewareがこれを読み取り、プロキシURL(http://user:pass@host:port)の認証情報を処理します。- 小さなDownloaderMiddlewareですべてのリクエストに適用するか、
start_requestsでリクエストごとに設定します。 - ローテーションゲートウェイならIPリストは不要です。
meta['proxy']をDataImpulseなどのローテーション型住宅プロキシのエンドポイントに指定すると、各リクエストは自動的に新しいIPから送信されます。 - 静的IPリストには
scrapy-rotating-proxiesを使用します(ROTATING_PROXY_LIST)。ローテーションとBAN検出を行い、HttpProxyMiddlewareより前に配置します(デフォルトの優先度ではすでにこの順序です)。 - ScrapyはHTTP/HTTPSプロキシをネイティブにサポートします(SOCKS5は非対応)。HTTPエンドポイント(DataImpulse port 823)を使用してください。90M+のIPプールを195か国で利用でき、住宅プロキシは$1/GB、データセンターは$0.50/GB、モバイルは$2/GBです。
Scrapyでプロキシを使用する方法
1. リクエストごとにmeta['proxy']を使用
import scrapy
class IpSpider(scrapy.Spider):
name = "ip"
def start_requests(self):
proxy = "http://YOUR_LOGIN__cr.us:[email protected]:823" # __cr.us = US
yield scrapy.Request("https://httpbin.org/ip", meta={"proxy": proxy})
def parse(self, response):
self.log(response.text) # confirm the egress IP
ScrapyのHttpProxyMiddleware(デフォルトで有効)はmeta['proxy']を取得し、URL内の認証情報からProxy-Authorizationヘッダーを設定します。追加のコードは不要です。
2. すべてのリクエストにプロキシを適用するミドルウェア
プロジェクト全体に適用するなら、この方法がすっきりしています。プロキシを一度設定すれば、すべてのリクエストに適用されます。
# middlewares.py
class DataImpulseProxyMiddleware:
PROXY = "http://YOUR_LOGIN__cr.us:[email protected]:823"
def process_request(self, request, spider):
request.meta["proxy"] = self.PROXY
# settings.py — run BEFORE the built-in HttpProxyMiddleware (750)
DOWNLOADER_MIDDLEWARES = {
"myproject.middlewares.DataImpulseProxyMiddleware": 350,
}
3. scrapy-rotating-proxiesで静的IPリストをローテーションする
単一のローテーションゲートウェイではなくプロキシのリストがある場合、scrapy-rotating-proxiesがそれらをローテーションし、ブロックを検出します。
# pip install scrapy-rotating-proxies
# settings.py
ROTATING_PROXY_LIST = [
"http://YOUR_LOGIN__cr.us:[email protected]:823",
# ...more endpoints/sessions...
]
DOWNLOADER_MIDDLEWARES = {
"rotating_proxies.middlewares.RotatingProxyMiddleware": 610,
"rotating_proxies.middlewares.BanDetectionMiddleware": 620,
}
DataImpulseのローテーション型住宅プロキシゲートウェイを使用する場合、通常これは不要です。1つのエンドポイントがリクエストごとに新しいIPを割り当てます。多数の個別セッションを管理する場合や、組み込みのブロック検出が必要な場合は、scrapy-rotating-proxiesを使用してください。Scrapyのプロキシ対応はHTTP/HTTPSのみのため、SOCKS5ではなくHTTPエンドポイント(ポート823)を使用してください。セッションパラメータについては、DataImpulseチュートリアルをご覧ください。
Scrapy向けベストプロキシ早見表
| プロバイダー | Scrapyでの最適用途 | 住宅プロキシ価格 | プロトコル | 注目ポイント |
|---|---|---|---|---|
| DataImpulse | 最高のコストパフォーマンス、自社クローラー | $1/GB PAYG | HTTP/HTTPS | 90M+プール、ローテーションゲートウェイ、有効期限なし |
| Bright Data | エンタープライズ + マネージド | プロモーションで~$4/GB、通常$8 | HTTP/HTTPS/SOCKS5 | Web Unlocker、SERP API、データセット |
| Oxylabs | エンタープライズSLA | $6/GBから | HTTP/HTTPS/SOCKS5 | 175M+プール、スクレイパーAPI |
| Decodo | ミッドマーケット、完全な地域グリッド | $3.75/GB(1TB+で~$2) | HTTP/HTTPS | 115M+プール、最大24hの固定セッション |
| IPRoyal | 長時間の固定セッション | $7.35/GBから | HTTP/HTTPS/SOCKS5 | 最大7日間の固定、低価格PAYG |
| SOAX | 住宅 + モバイルの組み合わせ | $3.60/GB Starter | HTTP/HTTPS | 155M+住宅、33M+モバイル |
| Webshare | 低予算 / セルフサービス | 住宅は$3.50/月から、DCは$2.99/月 | HTTP/SOCKS5 | 無料プラン、最安クラスのデータセンター |
| NetNut | ISP住宅プロキシの安定性 | $3.53/GBから | HTTP/HTTPS | コンシューマーISPの静的IP |

おすすめのサービス
DataImpulseは、Scrapyクローラーにおけるコストパフォーマンスの基準です。レジデンシャルは従量課金で$1/GB(データセンター$0.50/GB、モバイル$2/GB)、195か国に90M+ IPを保有し、リクエストごとに新しいIPを割り当てるローテーションHTTP/HTTPSゲートウェイ、ユーザー名での国/都市/ASNターゲティングに対応しています。トラフィックは失効しないため、開発中の実行でサブスクリプションを無駄に消費しません。公開されている成功率は99.51%、G2の評価は4.8/5で、24/7の有人サポートも提供しています。大量の社内クローリングでは、成功リクエストあたりのコストを最も抑えやすい選択肢です。
Bright Dataはエンタープライズ向けの選択肢です(住宅プロキシは通常約$8/GB、プロモーションでは約$4)。Web Unlocker、SERP API、データセットを提供しています。Oxylabs($6/GBから、175M+プール)は、スクレイパーAPIを備えたSLAグレードの選択肢です。Decodo($3.75/GBから、最大24hのスティッキー)は、バランスの取れたミッドマーケット向けの選択肢です。IPRoyal($7.35/GBから、最大7日間のスティッキー)は、長時間でセッション安定性が必要なクロールに適しています。SOAX($3.60/GB、155M+レジデンシャル + 33M+モバイル)は、強力なモバイルプールを追加します。Webshare(無料プラン、データセンターは$2.99/moから)は、低予算でセルフサービスを始める入口であり、NetNut($3.53/GBから)はISPレジデンシャルの安定性を重視する選択肢です。
Scrapyにおけるローテーションプロキシとスティッキープロキシ
広範囲のクロールには、ローテーション型のレジデンシャルゲートウェイが最適です。各Scrapyリクエストに新しいIPが割り当てられるため、負荷を分散し、IP管理なしでレート制限を回避できます。ステートフルなフロー(ログイン後に後続リクエストを送る場合)では、同じIPが一連の処理中に維持されるようスティッキーセッションを使用し、Cookieを有効にしておきます(ScrapyのCookieミドルウェアはデフォルトで有効です)。ほとんどのScrapyクロールは広範囲かつステートレスであるため、一般的にはローテーションがデフォルトです。スティッキーセッションは、認証が必要なサイトや複数ステップの操作があるサイトで使ってください。
よくあるScrapyプロキシのミス
- ミドルウェアの順序。 カスタムプロキシミドルウェアまたは
scrapy-rotating-proxiesは、組み込みのHttpProxyMiddlewareより前に実行される必要があります(優先度の数値を低くする)。そうしないと、プロキシが適用されません。 - SOCKS5が動作すると期待すること。 Scrapyのプロキシ対応はHTTP/HTTPSのみです。SOCKS URLではなく、HTTPエンドポイントを使用してください。
- 過度に攻撃的なクロール。
AUTOTHROTTLE_ENABLEDを有効にし、適切なCONCURRENT_REQUESTS/DOWNLOAD_DELAYを設定して、ローテーションIPであっても過剰な負荷をかけないようにします。 - 防御が強いサイトでデータセンターIPを使うこと。 すぐにブロックされることがあります。アンチボット対策が厳しいサイトには住宅プロキシを使用してください。
- BAN処理がないこと。 リトライ/BAN検出(
scrapy-rotating-proxiesのBanDetectionMiddlewareまたはカスタムRETRY_HTTP_CODES)を追加し、ブロックされたレスポンスがデータとして解析されるのではなく、新しいIPでリトライされるようにします。
Scrapyにはどのプロキシタイプを選ぶべきか: 住宅、データセンター、モバイル
- 住宅プロキシ ($1/GB)は、防御が強いサイト(EC、SERP、ソーシャル)向けの標準的な選択肢です。1つだけ選ぶなら、これを選んでください。
- Mobile ($2/GB) – 最も対策が厳しいサイトやモバイルWeb向けの、実際の通信キャリアのIPです。
- Datacenter ($0.50/GB) – 保護のないサイトのクロール、API、自社インフラ向けに最も安価で高速です。アンチボット対策が強いサイトには適していません。
DataImpulseは1つの従量課金アカウントで3種類すべてを提供しているため、単一のScrapyプロジェクトでも、ユーザー名とエンドポイントを使って各リクエストを適切なプロキシ種別にルーティングできます。
DataImpulse + Scrapyの始め方
ステップ 1. DataImpulseアカウントを作成し、residential認証情報を取得します。$5 / 5GBの初回プランに有効期限はなく、実際のテスト予算として使えます。
ステップ 2. リクエストごとにrequest.meta["proxy"] = "http://YOUR_LOGIN__cr.us:[email protected]:823"を設定するか、1行のプロキシミドルウェアを追加して全体に適用します。ジオターゲティングには、ユーザー名に国コードを追加します。
ステップ 3. AUTOTHROTTLEを有効化し、リトライ/BAN処理を追加して、ローテーションゲートウェイによりリクエストごとに新しいIPを割り当てます。DataImpulseチュートリアルとresidential proxiesページをご覧ください。
FAQ
Scrapyでプロキシを使用するにはどうすればよいですか?
リクエストにrequest.meta['proxy'] = 'http://user:pass@host:port'を設定します。Scrapy組み込みのHttpProxyMiddlewareがこれを読み取り、URLから認証を処理します。プロジェクト全体で使用する場合は、すべてのリクエストにrequest.meta['proxy']を設定する小さなDownloaderMiddlewareを追加します。DataImpulseの場合:http://YOUR_LOGIN__cr.us:[email protected]:823。
Scrapyに最適なプロキシは何ですか?
防御の強いターゲットには住宅プロキシが適しています。DataImpulseは$1/GBでコストパフォーマンスに優れた選択肢です(90M+ IP、ローテーションHTTP/HTTPSゲートウェイ、無期限トラフィック)。Bright DataとOxylabsはエンタープライズ向けの選択肢で、Webshareは開始コストが最も低いです。いずれもScrapyのmeta['proxy']で動作します。選択は価格、プール品質、マネージドAPIが必要かどうかによって決まります。
Scrapyでプロキシをローテーションするにはどうすればよいですか?
最も簡単なのは、meta['proxy']をローテーション住宅ゲートウェイ(DataImpulse)に向ける方法です。各リクエストで新しいIPが自動的に割り当てられ、リスト管理は不要です。静的なプロキシリストを使う場合は、scrapy-rotating-proxiesをインストールし、ROTATING_PROXY_LISTを設定して、そのミドルウェアを組み込みのHttpProxyMiddlewareより前に配置します。BANの検出と新しいIPでのリトライにも対応しています。
ScrapyはSOCKS5プロキシに対応していますか?
ネイティブには対応していません。ScrapyのHttpProxyMiddlewareが対応しているのはHTTPおよびHTTPSプロキシのみです。住宅プロキシにはHTTPエンドポイント(DataImpulse port 823)を使用してください。SOCKS5にはカスタムダウンロードハンドラーが必要になりますが、HTTPゲートウェイでScrapyのクローリングをカバーできるため、通常は必要ありません。
Scrapyのプロキシが動作しないのはなぜですか?
最も多い原因はミドルウェアの順序です。カスタムプロキシまたはscrapy-rotating-proxiesミドルウェアは、組み込みのHttpProxyMiddlewareより前に実行される必要があります(より低い優先度番号)。その他の原因としては、SOCKS URLを使用している(HTTPを使用)、プロキシURLに認証情報がない、防御の強いサイトでデータセンターIPがブロックされている(住宅プロキシに切り替える)などがあります。送信元IPをhttps://httpbin.org/ipで確認してください。
Scrapy用プロキシの費用はいくらですか?
生の住宅プロキシはGB単位で課金されます。DataImpulseは$1/GB(低価格帯)、NetNutは$3.53から、SOAXは$3.60、Decodoは$3.75、Oxylabsは$6から、IPRoyalは$7.35です。Webshareは$3.50/moからの低価格サブスクリプションを提供しています。クロールされる1ページはGBのごく一部にすぎないため、大量のScrapyクローリングでは、GB単位の住宅プロキシはレコード単位のマネージドAPIよりはるかに低コストです。マネージドオプションは最も難易度の高いターゲットに適しています。
