Python接口自動化--SSL 3

官方文檔參考地址:html

https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings安全

針對SSL Warnings,urllib3根據不一樣級別的證書校驗有不一樣級別的警告,針對這些不一樣的場景有如下幾種不一樣的解決辦法服務器

1.不安全的請求警告ide

  當在沒有啓用證書驗證的狀況下對HTTPS URL進行請求時,就會發生這種狀況。解決辦法以下:ui

  參考官方地址:https://urllib3.readthedocs.io/en/latest/user-guide.html#sslurl

  urllib3沒有對HTPPS請求作校驗,爲了啓用證書驗證,須要安裝一組root證書,最簡單也最現實的實現方法是用certifi包,包含Mozilla的root證書包spa

  安裝方式:1)、pip install certifi  或者 2)、pip install urllib3[secure]日誌

  安裝好後,當發送請求時,能夠經過建立PoolManager進行證書驗證code

# _*_ encoding:utf-8 _*_

import requests
import urllib3
import certifi

http = urllib3.PoolManager(
    cert_reqs = 'CERT_REQUIRED',
    ca_certs = certifi.where()
)
#無異常
http.request('GET','https://www.baidu.com/')

#有異常
http.request('GET','https://expired.badssl.com')
#urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='expired.badssl.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)'),))

#報錯以下
r = requests.get('https://www.baidu.com/')
#requests.exceptions.SSLError: HTTPSConnectionPool(host='www.baidu.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1,
u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)'),))

 

二、不安全的平臺警告htm

  這種狀況發生在具備過期ssl模塊的Python 2平臺上。這些舊的ssl模塊可能會致使一些不安全的請求,從而在它們失敗的地方得到成功,並在它們應該成功的地方請求失敗。遵循pyOpenSSL指南來解決這個警告。

  官方文檔參考地址:https://urllib3.readthedocs.io/en/latest/user-guide.html#ssl-py2

  pyOpenSSL官方地址:https://pyopenssl.readthedocs.io/en/latest/

三、SNIMissingWarning

  這發生在Python 2版本上,比2.7.9大。這些老版本缺乏SNI的支持。這可能致使服務器顯示客戶認爲無效的證書。遵循pyOpenSSL指南來解決這個警告。

 

注:若是在確認該HTTPS請求是安全的,能夠訪問時,能夠經過如下方法取消警告

import urllib3
urllib3.disable_warnings()#同時能夠經過如下方式抓取日誌logging.captureWarnings(True)
相關文章
相關標籤/搜索