HttpProxyMiddleware 属于 Scrapy 内置的下载器默认值。它不必出现在项目自己的 DOWNLOADER_MIDDLEWARES 字典中也能生效。

有两个彼此独立的开关需要检查:

  • HTTPPROXY_ENABLED 控制内置组件是否启用。
  • 在 DOWNLOADER_MIDDLEWARES 中把它的类路径设为 None,会把它从合并后的中间件链中移除。

例如,下面这段就显式禁用了默认条目:

DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': None,
}

需要让内置组件回来时,删掉这条覆盖即可。不要仅仅为了恢复一个条目就把旧的 DOWNLOADER_MIDDLEWARES_BASE 表复制进项目;Scrapy 会把默认值与项目覆盖合并。

启用中间件后仍需要一条路由,来自受支持的环境变量或请求的代理元数据。它出现在启动日志里本身并不等于给请求分配了代理。

很老的 Scrapy 版本在缺少代理环境变量时何时加载该组件上有所不同。诊断时请记录已安装的版本,而不是把 1.3 时代的历史观察当作当前的启用规则。

相关文章