Best Proxies for Scrapy 2026 cover

Scrapy 是一款面向生产级网页抓取的 Python 框架,速度快、支持异步,并为大规模爬取而设计。但若使用单个数据中心 IP 抓取真实网站,几分钟内就可能遭遇限速或封锁。解决方法是让 Scrapy 通过代理转发请求,最好使用住宅代理,使请求看起来更像真实用户发起的访问。好消息是:Scrapy 通过 request.meta['proxy'] 内置了代理支持,而且使用轮换网关时,你甚至无需管理 IP 列表。本指南将详细说明如何在 Scrapy 中使用代理(按请求设置、用于所有请求的中间件以及轮换),然后评选出 2026 年适用于 Scrapy 的 8 个最佳代理。DataImpulse 以 $1/GB 成为性价比基准。

我是 Andrii Byzov,一名 AI-Native Fractional CMO,日常会运行 Scrapy 爬虫。下文提供可直接复制粘贴的配置、中间件顺序的关键注意事项,以及值得纳入预算的服务商。


关键事实

  • 使用 request.meta['proxy'] 设置代理,Scrapy 内置的 HttpProxyMiddleware 会读取它,并根据代理 URL(http://user:pass@host:port)处理身份验证。
  • 使用一个轻量的 DownloaderMiddleware 将其应用到每个请求,或在 start_requests 中按请求设置。
  • 使用轮换网关就无需维护 IP 列表。meta['proxy'] 指向轮换住宅端点(如 DataImpulse),每个请求都会自动从新的 IP 发出。
  • 对于静态 IP 列表,请使用 scrapy-rotating-proxiesROTATING_PROXY_LIST),它会轮换、检测封禁,并在顺序上位于 before HttpProxyMiddleware(默认优先级已满足这一要求)。
  • Scrapy 原生支持 HTTP/HTTPS 代理(不支持 SOCKS5),请使用 HTTP 端点(DataImpulse 端口 823)。住宅代理为 $1/GB,数据中心代理为 $0.50/GB,移动代理为 $2/GB,IP 池覆盖 195 个国家/地区,规模超过 90M。

如何在 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 的轮换住宅代理网关时,你通常不需要这样做,因为单个端点便会为每个请求分配新的 IP。只有在管理大量独立会话或需要内置封禁检测时,才需要使用 scrapy-rotating-proxies。注意:Scrapy 的代理支持仅限 HTTP/HTTPS,因此请使用 HTTP 端点(端口 823),而不是 SOCKS5;会话参数请参见 DataImpulse 教程


Scrapy 最佳代理一览

服务商 最适合 Scrapy 的场景 住宅代理价格 协议 亮点
DataImpulse 性价比最佳,适合自有爬虫团队 $1/GB PAYG HTTP/HTTPS 90M+ 池,轮换网关,永不过期
Bright Data 企业级 + 托管服务 促销价约 $4/GB;常规价 $8/GB 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 住宅 + 移动组合 Starter 套餐 $3.60/GB HTTP/HTTPS 155M+ 住宅,33M+ 移动
Webshare 预算型自助服务 住宅代理起价 $3.50/mo;数据中心代理起价 $2.99/mo HTTP/SOCKS5 免费层,最便宜的数据中心
NetNut ISP-住宅稳定性 起价 $3.53/GB HTTP/HTTPS 消费者 ISP 静态 IP

Best proxies for Scrapy 2026: raw residential per-GB pricing vs managed scraping API per-1,000-requests pricing (heterogeneous units)


简要推荐

DataImpulse 是 Scrapy 爬虫中极具性价比的基准选择, 住宅代理按量付费 $1/GB(数据中心 $0.50/GB,移动 $2/GB),覆盖 195 个国家/地区的 90M+ IP,提供轮换 HTTP/HTTPS 网关,可为每次请求分配一个新 IP,并支持在用户名中设置国家/城市/ASN 定向。流量永不过期,因此开发和测试不会占用订阅周期。公开成功率为 99.51%;G2 评分 4.8/5;24/7 真人支持。对于大规模内部抓取,其单次成功请求的成本很低。

Bright Data 是企业级首选(住宅代理常规约 $8/GB,促销约 $4),提供 Web Unlocker、SERP API 和数据集。Oxylabs(起价 $6/GB,175M+ 池)则提供 SLA 级保障和爬虫 API。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 在整个流程中保持不变,并保持 cookies 开启(Scrapy 的 cookies 中间件默认开启)。大多数 Scrapy 抓取任务覆盖范围广且无状态,因此轮换代理是常见默认选择;粘性代理则保留给需要身份验证或多步骤流程的目标。

常见的 Scrapy 代理错误

  • 中间件顺序。自定义代理中间件或 scrapy-rotating-proxies 必须在内置 HttpProxyMiddleware 之前运行(优先级数字更低),否则你的代理不会被应用。
  • 误以为 SOCKS5 可直接使用。Scrapy 的代理支持仅限 HTTP/HTTPS,请使用 HTTP 端点,而不是 SOCKS URL。
  • 抓取过于激进。启用 AUTOTHROTTLE_ENABLED,并设置合理的 CONCURRENT_REQUESTS/DOWNLOAD_DELAY,以免即使使用轮换 IP 也因请求过于频繁而触发限制。
  • 在防护严密的网站上使用数据中心 IP: 它们很快会被封锁;对于反机器人防护较重的网站,请使用住宅代理。
  • 没有封禁处理。添加重试/封禁检测(scrapy-rotating-proxies 的 BanDetectionMiddleware 或自定义 RETRY_HTTP_CODES),这样被拦截的响应会使用新 IP 重试,而不是被当作数据解析。

Scrapy 应选择哪种代理类型:住宅、数据中心还是移动?

  • 住宅 ($1/GB),适用于有防护网站的默认选择(电商、SERPs、社交)。如果只选一种,就选它。
  • 移动 ($2/GB),使用真实运营商 IP,适用于最难抓取的目标和移动 Web 场景。
  • 数据中心 ($0.50/GB),适合无防护的抓取、API 和自有基础设施,成本最低且速度最快;不要把它用于反机器人防护很重的网站。

DataImpulse 在一个按量付费账户中提供这三种代理,因此单个 Scrapy 项目可以通过用户名和端点将每个请求路由到合适的层级。

如何开始使用 DataImpulse + Scrapy

步骤 1. 创建 DataImpulse 账户并获取住宅代理凭据。$5 / 5GB 入门套餐永不过期,适合用于实际测试。

步骤 2. 为每个请求设置 request.meta["proxy"] = "http://YOUR_LOGIN__cr.us:[email protected]:823",或添加一行代理中间件以全局应用。将国家/地区代码附加到用户名中以进行地理定位。

步骤 3. 启用 AUTOTHROTTLE,添加重试/封禁处理,并让轮换网关为每个请求提供新的 IP。请参阅 DataImpulse 教程住宅代理页面。


常见问题

如何在 Scrapy 中使用代理?

在请求中设置 request.meta['proxy'] = 'http://user:pass@host:port', Scrapy 内置的 HttpProxyMiddleware 会读取它,并根据 URL 处理身份验证。对于整个项目,可以添加一个小型 DownloaderMiddleware,在每个请求上设置 request.meta['proxy']。对于 DataImpulse:http://YOUR_LOGIN__cr.us:[email protected]:823

Scrapy 最适合使用哪种代理?

面对防护严密的网站时,应使用住宅代理。 DataImpulse 以 $1/GB 的价格是高性价比之选(90M+ IP、轮换 HTTP/HTTPS 网关、永不过期流量)。Bright Data 和 Oxylabs 是企业级选项;Webshare 入门成本最低。它们都可配合 Scrapy 的 meta['proxy'] 使用;选择取决于价格、IP 池质量,以及你是否需要托管 API。

如何在 Scrapy 中轮换代理?

最简单的方法是将 meta['proxy'] 指向轮换住宅网关(DataImpulse), 每个请求都会自动获得一个新 IP,无需管理列表。对于静态代理列表,安装 scrapy-rotating-proxies,设置 ROTATING_PROXY_LIST,并将其中间件放在内置 HttpProxyMiddleware 之前。它还会检测封禁,并在新 IP 上重试。

Scrapy 支持 SOCKS5 代理吗?

原生不支持。 Scrapy 的 HttpProxyMiddleware 仅支持 HTTP 和 HTTPS 代理。住宅代理请使用 HTTP 端点(DataImpulse 端口 823)。SOCKS5 需要自定义下载处理器,但通常并不需要,因为 HTTP 网关已经覆盖 Scrapy 爬取场景。

为什么我的 Scrapy 代理无法工作?

最常见的原因是中间件顺序: 自定义代理或 scrapy-rotating-proxies 中间件必须在内置 HttpProxyMiddleware 之前运行(更低的优先级数字)。其他原因包括:使用了 SOCKS URL(请使用 HTTP)、代理 URL 中缺少凭据,或在防护严密的网站上使用了被封锁的数据中心 IP(切换到住宅代理)。可通过 https://httpbin.org/ip 检查出口 IP。

Scrapy 代理费用是多少?

住宅代理原始流量按 GB 计费: DataImpulse $1/GB(性价比基准)、NetNut 起价 $3.53、SOAX $3.60、Decodo $3.75、Oxylabs 起价 $6、IPRoyal $7.35;Webshare 提供起价 $3.50/mo 的预算订阅。一个已爬取页面只占 GB 的很小一部分,因此对于高容量 Scrapy 爬取,按 GB 计费的住宅代理远比按记录计费的托管 API 便宜;托管选项更适合最难处理的目标。



Share article: