SSL认证失败
一、问题描述:
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)>
二、解决方案
1.全局取消证书验证
import ssl
try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else:
# Handle target environment that doesn't support HTTPS verification
ssl._create_default_https_context = _create_unverified_https_context
2.使用ssl创建未经验证的上下文,在urlopen中传入上下文参数
import ssl
import urllib
context = ssl._create_unverified_context()
print urllib.urlopen("https://www.baidu.com/", context=context).read()
三、测试案例
创建code.py
import ssl
try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else:
# Handle target environment that doesn't support HTTPS verification
ssl._create_default_https_context = _create_unverified_https_context
# 导入模块
import urllib.request
url = 'https://www.baidu.com/'
# 发送请求获取响应
response = urllib.request.urlopen(url)
# 获取响应数据
# print(response.read()) # bytes
with open('01.baidu.html', 'wb') as f:
f.write(response.read())