起因
问题出现在windows电脑上,我用mac执行程序的时候并不会报错,但是如果在windows上的时候,大部分windows电脑会报错,而有些版本低的windows电脑又不会报错。
异常栈信息
HTTPSConnectionPool, Cannot connect to proxy, no such file or directory
如果你也遇到上面类似的问题可以参考下面的解决办法:
问题原因
现在 urllib3 要支持 https 代理了,那么既然配置代理是 https 就尝试用 https 的方式去连接,但是由于代理服务器其实只支持 http,所以没法处理请求,ssl 握手阶段就出错了。
以前的 urllib3 其实并不支持 https 代理,也就是说代理服务器的地址虽然大家配置的是 https,但是一直都是悄无声息地就按照 http 连接的,刚好代理服务器确实也只支持 http,所以皆大欢喜。
也就相当于是你的代理一直都是用的http,而后来urllib3 支持起https后,反而代理服务器无法正常使用,所以我们有两种解决办法:
如何解决
方案1 降低urllib3 版本:
pip install urllib3==1.25.11
方案2 重新设置代理
proxy = {
"http": "http://127.0.0.1:7890",
"https": "http://127.0.0.1:7890"
}
params = {'wd': '爬虫'}
response = requests.get('https://www.baidu.com/s', params=params, headers=headers, proxies=proxy)
proxy_host和proxy_port可以去系统设置里的代理看。
参考文章:
记录 python request ProxyError报错
Python request代理错误提示“HTTPSConnectionPool, Cannot connect to proxy, no such file or directory”