Python3 打開 https 鏈接,異常:“SSL: CERTIFICATE_VERIFY_FAILED”
一、問題
Python2.7.9 之后,當使用urllib.urlopen打開一個 https 鏈接時,會驗證一次 SSL 證書。而當目標網站使用的是自簽名的證書時就會拋出如下異常:
<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)>
二、解決方案
1,方案一
使用ssl創建未經驗證的上下文,在urlopen中傳入上下文參數:
import ssl context = ssl._create_unverified_context() urllib.request.urlopen(req,context=context)
2,方案二
全局取消證書驗證:
import ssl ssl._create_default_https_context = ssl._create_unverified_context urllib2.urlopen("https://www.12306.cn/mormhweb/").read()
3,方案三
使用的是requests模塊,將方法中的verify設置位False即可:
requests.get(url, headers=Hostreferer,verify=False)