根据我的经验,看到后面的Max retries exceeded with..... 之类的我都大概知道啥原因,就是请求重试量太多了,可是此时此刻我就一段同步代码啊,后面没内容了,而且也只请求了一次,headers里的Connection也是close而非keep-alive,verfiy也设置的false,
这咋回事呢
在测试某api时,偶然的发现一个很奇怪的现象
报的啥错呢:
requests.exceptions.ProxyError: HTTPSConnectionPool(host='www.xxxx.com', port=443): Max retries exceeded with url: / (Caused by ProxyError('Cannot connect to proxy.', timeout('_ssl.c:1108: The handshake operation timed out')))
根据我的经验,看到后面的
Max retries exceeded with.....
之类的我都大概知道啥原因,就是请求重试量太多了,可是此时此刻我就一段同步代码啊,后面没内容了,而且也只请求了一次,headers里的Connection也是close而非keep-alive,verfiy也设置的false,
这咋回事呢
我又把https改成http:
fiddler,卧槽,就是它了,关闭fiddler之后确实可以正常处理了,这就很骚了。
但是不对啊,我之前测试的时候,为了对比实际请求和爬虫请求的差异,开上fiddler抓包来对比参数,不是可以的吗,为啥这里就是不行。
最后我发现了,
fiddler版本问题
,之前我重装了系统,然后网上随便找了个安装包装上我就不管了,也没测试有没有问题
终极解决方案
别用最新版的requests和urllib3,其实核心的问题主要是urllib3导致的,最新的urllib3有更严格ssl的校验,所以,用以下方案解决
pip uninstall requests urllib3 # 先卸载
pip install requests==2.27 urllib3==1.25.8 -i https://pypi.doubanio.com/simple # 指定版本安装,不然默认会装最新版