学习python的过程中,发现和博主一样的代码,我的却运行失败,报出如下的错误:
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)
经过多方查询,产生这个问题的原因在于python本身,当使用urllib打开https的链接时,会检验一次ssl证书。
解决方法两种:
1.全局取消证书验证(当项目对安全性问题不太重视时,推荐使用,可以全局取消证书的验证,简易方便)
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2.使用ssl创建未验证的上下文,在url中传入上下文参数(当项目整体非常重视安全问题时,推荐这种方式,可以局部取消证书验证)
import ssl
context = ssl._create_unverified_context()
将context传入url函数的context参数中,比如
urllib2.urlopen('目标网址',context=context).read()