一,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)