91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python3中怎么使用Requests測試帶簽名的接口

發布時間:2022-02-14 09:43:00 來源:億速云 閱讀:219 作者:iii 欄目:開發技術

今天小編給大家分享一下python3中怎么使用Requests測試帶簽名的接口的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

使用Requests測試帶簽名的接口

部分業務為了安全需要,需要對接口請求數據做簽名校驗,

一般制定一下規則

1、業務方接入系統,需申請業務ID以及加密秘鑰,二者成對出現,并且為面向服務端的,不能在前端或者客戶端傳遞。

2、所有值非空的參數必須參與簽名

3、簽名算法:

a. 對所有參數按參數名的字典升序排序

b. 將所有排好序的參數按照key1=value1&key2=value2&key3=value......的格式拼接成一個字符串,記為signStr

c. 在signStr后,繼續添加 &key=加密密鑰

d. 對signStr進行MD5簽名

針對某一get接口做實例說明

#!/usr/bin/env python#coding:utf-8
import hashlib
import json
import requests
 
#測試的域名
domain= "http://******/***/vip2.ldo?"
#get 傳遞的非sign參數
url_params = {
    'type':'orderList',
    'userId':'198049148',
    'country':86,
    'typeGroup':'',
    'status':'',
    'rows':'20',
    'page':'1',
    'businessId':'2',
}
sign ="sign=###################"
#刪除空值的參數,以用來簽名
for key in list(url_params.keys()):
    if not url_params.get(key):
        del url_params[key]
 #按照升序排列,得到的是一個列表,列表的元素為元組       
url_params1 = sorted(url_params.items(),key=lambda d:d[0], reverse=False)
 
values =[]
for li in url_params1:
    newsmbol =('=',)
    #元組中增加一個新元素
    li = li[:1]+newsmbol+li[1:]
    #元組轉化為字符串,整型不能轉化,list包含數字,不能直接轉化成字符串
    value = "".join('%s' %id for id in li)
    values.append(value)
#列表復制不能用= 需要用copy 或者list[:]
values1 = values[:]
values1.append(sign)
sign1 = "&".join(values1)
#md5 調用庫函數
sign2 = hashlib.md5(sign1.encode('utf-8')).hexdigest()
sign = 'sign='+sign2
values.append(sign)
para = "&".join(values)
url = domain+ para
print(url)
 
res = requests.get(url)
print('***---***---***')
print(res.content)
print('***---***---***')
print(res.headers)
print('***---***---***')
print(res.status_code)
if res.status_code == 200:
    print('請求成功')
print('***---***---***')
#json 格式打印
print(json.dumps(res.json(),indent=4))
print('***---***---***')
#兩種方法
if json.loads(res.text)['msg']=='success':
    print('True')
else:
    print('error')
if res.json()['msg']=='success':
    print('True')
else:
    print('error')

在for循環中,相當于對鏈表的操作,它會自動調用next方法! 字典的迭代器會遍歷它的鍵,在這個過程中,

不能改變這個字典!不能刪除、添加數據 要先記錄要刪除的元素的索引,遍歷完后再刪除,url_params.keys()在python2中

是一個獨立的列表,python3中是迭代器,需要我們list轉換生成一個獨立的列表。

for key in list(url_params.keys()):
    if not url_params.get(key):
        del url_params[key]

使用內置的sorted()函數可以將字典按照鍵或者值來進行升序或者降序的排列,其排序結果,將字典轉化為一個列表,其中字典的元素變為了一個元組。

按照鍵 升序

url_params1 = sorted(url_params.items(),key=lambda d:d[0], reverse=False)

按照值 倒敘

url_params1 = sorted(url_params.items(),key=lambda d:d[1], reverse=True)

Python 簽名接口測試

在之前的隨筆中,我們已經學過了如何使用使用JMeter和Postman實現sign簽名接口校驗的接口測試,今天我們來學習一下如何寫Python腳本實現簽名接口的接口測試。

簽名接口

地址:http://localhost:8080/pinter/com/userInfo

參數為:

{"phoneNum":"123434","optCode":"testfan","timestamp":"1211212","sign":"fdsfdsaafsasfas"}

其中,sign字段是按照特定算法進行加密后的數據

本接口的簽名算法為 sign=Md5(phoneNum+ optCode+ timestamp)

代碼如下

import time
import random
import hashlib
import requests
import json
#1.生成5位隨機數
phone=random.randint(10000,99999)
#2.生成13位數字的時間戳
timeStamp=int(round(time.time()*1000))
print(timeStamp)
optCode="testfan"
#3.隨機數和時間戳拼接
t=str(phone+timeStamp)
#4.sign=隨機數phoneNum+optCode
sign=t+optCode
#5.實例化一個md5對象
md5=hashlib.md5()
#6.sign字段進行md5加密
md5.update(sign.encode("utf-8"))
print(md5.hexdigest())
 
def md5_sign():
   url ="http://localhost:8080/pinter/com/userInfo"
   header={"Content-Type":"application/json" }
   body={"phoneNum":phone,"optCode":"testfan","timestamp":timeStamp,"sign":md5.hexdigest()}
   respon = requests.post(url=url, headers=header,data=body)
   return respon.json()
 
if __name__ == '__main__':
      print(md5_sign())

以上就是“python3中怎么使用Requests測試帶簽名的接口”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

萍乡市| 元江| 诸城市| 林芝县| 临沧市| 邹城市| 济宁市| 长治市| 苍溪县| 许昌县| 元谋县| 榆社县| 台山市| 岗巴县| 张北县| 泉州市| 板桥市| 呼玛县| 郯城县| 乐平市| 临朐县| 常宁市| 铜梁县| 大新县| 秭归县| 阳东县| 九龙坡区| 高要市| 余干县| 建昌县| 土默特左旗| 阳曲县| 邢台县| 邢台市| 文登市| 彰武县| 营山县| 崇仁县| 苍梧县| 墨竹工卡县| 贵州省|