进无止境

Python网络爬虫时出现SSL验证报错的解决办法


最近在使用秋大的LAMP一键安装包搭建网站服务器时,在其中.py文件的验证过程中遇到了以下的报错:

File "/usr/lib64/python2.7/urllib2.py", line 1197, in do_open raise URLError(err)
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)>

经了解,Python 升级到 2.7.9 之后引入了一个新特性,当使用urllib.urlopen打开一个 https 链接时,会验证一次 SSL 证书,而当目标网站使用的是自签名的证书时就会抛出此异常。解决办法:
在urllib2.py文件末尾加入以下代码:

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 

重试即可解决问题 : )

发表评论

电子邮件地址不会被公开。