两个设置就能让 Scrapy 的代理中间件失效
在再复制一份 Scrapy 内置代理中间件之前,先检查合并后的下载器中间件列表和 HTTPPROXY_ENABLED。
HttpProxyMiddleware 属于 Scrapy 内置的下载器默认值。它不必出现在项目自己的 DOWNLOADER_MIDDLEWARES 字典中也能生效。
有两个彼此独立的开关需要检查:
- HTTPPROXY_ENABLED 控制内置组件是否启用。
- 在 DOWNLOADER_MIDDLEWARES 中把它的类路径设为 None,会把它从合并后的中间件链中移除。
例如,下面这段就显式禁用了默认条目:
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': None,
}
需要让内置组件回来时,删掉这条覆盖即可。不要仅仅为了恢复一个条目就把旧的 DOWNLOADER_MIDDLEWARES_BASE 表复制进项目;Scrapy 会把默认值与项目覆盖合并。
启用中间件后仍需要一条路由,来自受支持的环境变量或请求的代理元数据。它出现在启动日志里本身并不等于给请求分配了代理。
很老的 Scrapy 版本在缺少代理环境变量时何时加载该组件上有所不同。诊断时请记录已安装的版本,而不是把 1.3 时代的历史观察当作当前的启用规则。