1. 程式人生 > 實用技巧 >requests介面測試-https證書

requests介面測試-https證書

一,Https協議

Https協議即超文字傳輸安全協議(Hypertext Transfer Protocol Secure,縮寫:HTTPS)是一種網路安全傳輸協議。HTTP協議以明文方式傳送內容,不提供任何方式的資料加密,因此使用HTTP協議傳輸敏感資訊非常不安全。HTTPS在HTTP的基礎上用SSL/TLS來加密資料包,SSL/TLS依靠證書來驗證伺服器的身份,併為瀏覽器和伺服器之間的通訊加密。HTTP使用80埠,而HTTPS佔用443埠。HTTPS開發的主要目的,是提供對網路伺服器的身份認證,保護交換資料的隱私與完整性。

二,Https證書認證問題

我們在進行介面測試的時候,傳送https請求常常會報Https證書認證失敗警告提示資訊,如:
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.juhe.cn', port=443): Max retries exceeded with url: /login/login (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108)'))),如圖:

解決辦法通常有兩種,一種是傳送https請求時忽略證書,證書的引數為Verify,預設為True,可以在程式碼中設定為False,忽略證書。這種方式也是比較常用的方法。另外一種就是在Verify中新增證書的路徑。

"""
介面名稱:聚合資料網站登入介面
目標:Https證書認證失敗解決方案
介面URL:https://www.juhe.cn/login/login
請求方法:post
請求引數:username,password
"""
import  requests
#URLd地址;
url="https://www.juhe.cn/login/login"
#data引數為字典
data={
"username":18xxxxxxxx,
"password": "xxxxxxxx"
}
#第一種解決辦法:傳送請求時忽略證書,verify預設為為True,設定為False
r=requests.post(url,data=data,verify=False)
#第二解決辦法:傳送請求時忽略證書,verify預設為為True,設定為False
r=requests.post(url,data=data,verify='證書路徑')
print(r.text)
print(r.status_code)
print(r.headers)