Scrapy 的 HTTP 代理中间件从请求元数据中读取代理:

yield scrapy.Request(
    'https://example.com/',
    callback=self.parse,
    meta={'proxy': 'http://203.0.113.10:8080'},
)

替换文档中的端点并让中间件保持启用。HTTP 代理列表为这个请求 URL 提供公开候选。这会选择请求的路由;代理池需要单独的挑选逻辑。

认证跟随所选端点

内置中间件处理通过其支持的代理 URL 及相应授权头提供的凭据。转义 URL 保留字符,并避免记录该 URL。

端点改变后,单独的中间件不应再为之前的代理保留 Basic 头。让同一层同时管理路由及其凭据。

选择顺序与默认值

如果自定义下载器中间件选择代理,请让它在内置代理中间件处理请求之前运行。检查所安装版本的顺序和 API;过时的 scrapy.contrib 导入属于较旧版本。

进程环境也可以提供按方案区分的默认值。对于有意直连的请求,请使用有文档记载的 proxy 元数据特殊行为:缺少键不一定意味着直接访问。

检查实际结果。407 与代理认证有关,而网站的速率限制或访问拒绝可能在路由正常之后才出现。

相关文章