requests介面測試-https證書
阿新 • • 發佈:2020-08-15
一,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)