python:urllib.error.URLError: urlopen error [SSL: CERTIFICATE_VERIFY_FAILED]

一、问题描述

fine_tune  时提示如下:

urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)

       产生这个问题的原因在于python本身,pyhon升级到2.7.9以后,引入了一个新特性,当使用urllib打开https的链接时,会检验一次ssl证书。而当目标网站使用的是自签名证书时,就会抛出urllib2.URLError的错误。

二、问题解决

那么,解决方案如下两种方式:

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()

这样就解决了ssl:certificate_verify_failed这个问题

 

参考链接https://blog.csdn.net/yixieling4397/article/details/79861379

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章