在 Scrapy shell 中,构造你希望下载器执行的请求:

from scrapy import Request

fetch(Request(
    "https://www.example.com/",
    meta={"proxy": "http://proxy.example:8080"},
))
response.status

HttpProxyMiddleware 会从该 Request 的元数据中读取代理值。它必须在当前生效的下载器中间件配置中启用。之后的 response 变量属于本次抓取。对于这个公开 URL,如果允许使用公共中转,请从 HTTP 代理列表 中选择一个无需认证的 HTTP 地址,然后将其 URL 放入该请求的代理元数据中。

从 Scrapy 项目启动 shell 可以让它加载该项目的配置。这会选择中间件和其他设置;它本身并不会选择某个特定的代理端点。上面的请求元数据直接提供了这一选择。

对于使用 Basic 凭据的代理,Scrapy 会在代理 URL 中记录用户信息。在构造之前,请对账户部分中的保留字符进行编码。该账户无需再添加网站的 Authorization 请求头。

Scrapy 还可以从其支持的环境变量中发现代理。请求中显式的代理元数据优先。对于有意直连的请求,将代理值设为 None 会为该请求禁用该中间件基于环境变量的选择。

相关文章