接口測試-處理經過加密的返回數據的方法


疑問:若接口返回的數據經過加密或格式發生改變,如何處理

進行一層封裝,顯示轉換

  • 將獲得的數據進一步判斷數據格式,根據條件進行轉換。如以下demo
class TestEncode:
   def test_api(self):
       req = ApiRequest()
       req_data = {
           "schema": "http",
           "encoding": "base64",  # 這個字段根據數據格式而定
           "method": "get",
           "url": "http://1.1.1.1/topics.txt",
           "headers": None
       }
       r = req.send(req_data)  # 將數據發送到已封裝的函數,返回一個json格式的數據
       assert len(r["topics"]) == 2


class ApiRequest:
   """對數據進行相應的封裝,進行格式轉換"""
   def send(self, data: dict):
       if data["schema"] == "http":
           res = requests.request(data["method"], data["url"], headers=data["headers"])
           if data["encoding"] == "base64":  # 判斷數據的編碼格式
               # 使用base64進行解密,將解密后的數據轉換成json結構體的數據
               return json.loads(base64.b64decode(res.content))
           else:
               return json.loads(res.content)  # 若數據格式不是base64,將原生內容進行json格式化
       elif data["schema"] == "dubbo":
           pass
       elif data["schema"] == "websocket":
           pass
       else:
           pass
  • 修改requests 加入hook,隱式轉換數據。修改底層庫的方法將數據轉換
  • 若是以base64進行加密,則可以使用base64.b64decode(keyword)函數進行解密后,在轉換為json格式或其他格式。
  • 若是不知道加密的算法,可與開發商討,給定一個接口,向接口請求數據,返回所要的具有相應格式的數據
  • 加解密不要體現在測試用例中

加密方法

  • 請求加密:摘要加密 把原文或者原始請求中的部分字段做摘要算法的加密,把加密后的結果也放到原始請求中發送。
  • 響應加密:返回的整個響應或者響應中的部分字段被加密,我們需要找到解密辦法,還有一個名字叫摘要算法。

解密方式

  • 自己解決通用解密算法
  • 需要研發提供加解密的lib
  • 需要加密方提供遠程解析服務,這樣算法仍然是保密的。

加密與簽名的區別

  • 加密通常代表是對稱加密,這種加密是可以解密的。比如base64,主要用於的數據傳輸。
  • 簽名通常代表是非對稱加密,這種加密不可逆不可解密。比如rsa、md5。通常用於認證內容未被篡改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM