使用requests库请求网址时,发生requests.exceptions.SSLError 错误解决办法

背景

requests库和urlib库一样都是请求网址的python库,只不过requests库是第三方的,用起来感觉比urlib简洁。最近下载数据时,使用requests库报错:
raise SSLError(e, request=request)
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)

网上搜索解决方案后,发现浏览器识别证书不匹配,有个野路子方法最简单,这里就记录下来:

问题

自己代码如下,这里可以参考我前面的博客,使用urlib请求网页的问题解决,两者对比下来,还是requests库好用:

import requests

url = r'https://gdc-api.nci.nih.gov/data/'
UUID = r'7661a652-f22c-4c01-8851-2b9cf6edd739'
url = os.path.join(url, UUID)

req = requests.get(url)

运行上述代码时,就发生了一下错误:

File "D:\Anaconda3\lib\site-packages\requests\adapters.py", line 512, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)

解决方法

一个最简单的野路子的解决方法是让request请求时,就不验证了,一了百了,简单粗暴。
具体代码如下:

import requests

# 屏蔽warning信息
requests.packages.urllib3.disable_warnings()

url = r'https://gdc-api.nci.nih.gov/data/'
UUID = r'7661a652-f22c-4c01-8851-2b9cf6edd739'
url = os.path.join(url, UUID)

req = requests.get(url,verify=False)

注意上述代码必须加屏蔽warning信息那一句,不然一直输出下面异常,也挺难看的。
InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings InsecureRequestWarning)

猜你喜欢

转载自blog.csdn.net/qq_35203425/article/details/80903242
今日推荐