Python语言之python使用requests时报错requests.exceptions.SSLError: HTTPSConnectionPool
小标 2018-08-09 来源 : 阅读 10687 评论 0

摘要:本文主要向大家介绍了Python语言之python使用requests时报错requests.exceptions.SSLError: HTTPSConnectionPool,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言之python使用requests时报错requests.exceptions.SSLError: HTTPSConnectionPool,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

阅读目录(Content)报错信息过程测试1测试2分析验证结论解决方法方法1:方法2:附件

回到顶部(go to top)报错信息

Traceback (most recent call last):
File "", line 1, in 
File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\api.py", line 72, in get
return request('get', url, params=params, **kwargs)
File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\sessions.py", line 508, in request
resp = self.send(prep, **send_kwargs)
File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\sessions.py", line 640, in send
history = [resp for resp in gen] if allow_redirects else []
File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\sessions.py", line 218, in resolve_redirects
**adapter_kwargs
File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\sessions.py", line 618, in send
r = adapter.send(request, **kwargs)
File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\adapters.py", line 506, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'),))

 
 
回到顶部(go to top)过程
测试1
不指定headers时GET:

?12345678910>>> import requests>>> requests.get('//www.baidu.com/')>>> requests.get('//www.baidu.com/')>>> requests.get('//www.baidu.com/')>>> header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1',}>>> requests.get('//www.baidu.com/', headers = header)

  


测试2
当指定headers的User-Agent为火狐浏览器时:

?123456789101112131415161718192021>>> header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1',}>>> requests.get('//www.baidu.com/', headers = header)>>> requests.get('//www.baidu.com/', headers = header)Traceback (most recent call last):File "", line 1, in File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\api.py", line 72, in getreturn request('get', url, params=params, **kwargs)File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\api.py", line 58, in requestreturn session.request(method=method, url=url, **kwargs)File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\sessions.py", line 508, in requestresp = self.send(prep, **send_kwargs)File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\sessions.py", line 640, in sendhistory = [resp for resp in gen] if allow_redirects else []File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\sessions.py", line 218, in resolve_redirects**adapter_kwargsFile "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\sessions.py", line 618, in sendr = adapter.send(request, **kwargs)File "D:\python\lib\site-packages\requests-2.18.3-py2.7.egg\requests\adapters.py", line 506, in sendraise SSLError(e, request=request)requests.exceptions.SSLError: HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'),))

  


分析
现象:第一次GET时正常,第二次GET时,会报错.
不同点:User-Agent不相同
分析:由于报错SSL证书验证失败,所以这次的访问应该是https协议.但是我们明明使用的是http,所以,猜测访问该网站后,被重定向到了https://www.baidu.com/
回到顶部(go to top)验证
首先,进行GET时,关闭证书验证.因为,如果不关闭,请求总是失败,不能获取到重定向的信息.

?1234567>>> response = requests.get('//www.baidu.com/', headers = header, verify=False)D:\python\lib\site-packages\urllib3\connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warningsInsecureRequestWarning)>>> response.history[]>>> response.urlu'https://www.baidu.com/'

 

当不指定User-Agent时

?12345>>> response = requests.get('//www.baidu.com/', verify=False)>>> response.history[]>>> response.urlu'//www.baidu.com/'



回到顶部(go to top)结论
当指定headers的User-Agent时,baidu的服务器会重定向到https的网址.因此报出SSL验证失败的错误.
回到顶部(go to top)解决方法
方法1:
在进行GET时,指定SSL证书.详情见附件
方法2:
关闭证书验证. 详情见附件
 
回到顶部(go to top)附件
[各浏览器的User-Agent] 
//www.useragentstring.com/pages/useragentstring.php
[SSL 证书验证] 
//docs.python-requests.org/zh_CN/latest/user/advanced.html#ssl
 

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 6
看完这篇文章有何感觉?已经有6人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程