在Scrapy的request.meta中设置HTTPS代理的正确方法是什么?
Scrapy HTTPS代理的正确配置方式
针对你的场景,正确配置规则如下:
- 绝大多数商用/公开HTTPS代理都是支持HTTPS隧道转发的HTTP代理,本身监听HTTP端口,仅通过CONNECT协议承载HTTPS请求转发,这类代理的标准配置方式为:
你测试时写http前缀仍能正常运行,就是因为你的代理属于这类,Scrapy自带的request.meta['proxy'] = 'http://[代理IP]:[代理端口]'HttpProxyMiddleware会自动处理后续的HTTPS隧道建立逻辑,和你访问的目标站点是否为HTTPS没有关联。 - 只有当代理本身要求你先和代理服务建立TLS连接(这类代理多为企业内部高安全级别的专属代理,会提供专门的HTTPS接入地址),才需要使用https前缀配置:
request.meta['proxy'] = 'https://[代理IP]:[代理端口]'
补充说明
你当前的两种写法都能生效,是Scrapy代理中间件做了兼容处理,但建议优先根据代理服务商提供的接入说明填写前缀,避免遇到部分严格校验代理协议的服务出现连接失败的问题。
你当前的中间件配置顺序没有问题,自定义代理中间件优先级高于Scrapy自带的HttpProxyMiddleware,会正常覆盖代理配置。
内容的提问来源于stack exchange,提问作者SMTH
相关产品推荐
相关产品推荐

