Python 接口驗籤測試

最近有新的接口要上線,測試通過需滿足以下條件:

1、身份認證 2、驗籤(防篡改、防重放)3、輸入 處理 輸出等。

身份認證使用SSO,直接pass,我們重點放在驗籤:

參數簽名:

將所有參數key的首字母按照accii 從小到大排列 (一對參數的key和value用=號連接,兩個參數之間用&連接)拼接,例如:username=secguard&password=whoami_123!,拼接完成後的對整個字符串進行轉小寫,然後尾部加上&signkey=簽名的key,最後將字符串用MD5加密生成:signature

python剛開始接觸,不太習慣:

# coding = utf8
import requests
import json  
import hashlib
import datetime
url = "http://apitest/supervise/manage/searchInfo"

headers = {"Content-Type":"application/json","User_Agent":"sec_test"}
now_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') #獲取當前日期

data = {
	"accessToken": "efd22965-2d92-46dp-9fa0-17192344a252", #認證後的授權token
	"signtime": now_time, #時間錯
	"cardId": "114"
}

keys = []
for key in data:
	keys.append(key)

keys = sorted(keys)  #參數首字母Ascii升序
aa=[]
for key in keys:
	if isinstance(data[key],int):
		data[key]= str(data[key])
	aa.append(key+'='+data[key])

#print(" ASCII", ord('a'),ord('k'),ord('p'),ord('c'),ord('s'))
str=''
index=0
for s in aa:
	index=index+1
	if index == len(aa):
		str = str+s
	else:
		str = str+s+'&'

str1 = str.lower()+"&signkey=tSPRGaUQg9LUHJdoklKf9XbOs4SlTsaor"
signature = hashlib.md5(str1.encode("utf-8")).hexdigest() #對參數拼接後進行md5

data.update({"signature":signature}) #驗簽字符串加入參數字典
"""
最後生成的請求體json如下:
data = {
	"accessToken": "efd22965-2d92-46dp-9fa0-17192344a252",
	"signtime": now_time,
	"cardId": "114",
    "signature":signature
}
"""
res = requests.post(url=url,data=json.dumps(data),headers=headers)
print(json.loads(res.text))

#print(res.text)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章