在項目中有一地址需要摘要認證訪問方式,但是腳本一直提示 證書驗證失敗,如下細心
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)>
但是使用其他同事的ubuntu就可以,最終發現是python 版本不同 導致,網上找到了一個大神的方法 記錄一下
Python 升級到 2.7.9 之后引入了一個新特性,當使用urllib.urlopen打開一個 https 鏈接時,會驗證一次 SSL 證書。
而當目標網站使用的是自簽名的證書時就會拋出一個 urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)> 的錯誤消息,詳細信息可以在這里查看(https://www.python.org/dev/peps/pep-0476/)。
解決方案包括下列兩種方式:
1. 使用ssl創建未經驗證的上下文,在urlopen中傳入上下文參數
-
import ssl
-
import urllib2
-
context = ssl._create_unverified_context()
-
print urllib2.urlopen("https://www.12306.cn/mormhweb/", context=context).read()
2. 全局取消證書驗證
-
import ssl
-
import urllib2
-
ssl._create_default_https_context = ssl._create_unverified_context
-
print urllib2.urlopen("https://www.12306.cn/mormhweb/").read()
原文鏈接如下:
https://blog.csdn.net/moonhillcity/article/details/52767999