一个请求可以退出自定义代理中间件,却仍然在元数据里带着有效的代理 URL。Scrapy 的 内置 HttpProxyMiddleware 读取 meta["proxy"];它不会解释通用的 dont_proxy 标志。

对于打算直连的请求,应显式设置:

request.meta["proxy"] = None

显式的 None 会阻止内置中间件为该请求从其环境设置中选择代理。仅删除该键则会重新允许这种自动选择。

如果另一个已安装的中间件使用 dont_proxy,也应为它文档所述的用途保留该标志。安排中间件顺序,使后续组件不会再次分配代理 URL。在最后一个可能选择路由的组件之后检查元数据。

在设置自定义绕过标志后仍出现 407,与仍存在代理路由相符,但仅凭状态码无法确定是哪个中间件选择了它。应沿该请求的处理过程追踪实际生效的 proxy 字段,而不要假定所有组件共用同一套退出词汇。

相关文章