最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3如何使用Requests測試帶簽名的接口

 更新時(shí)間:2022年02月12日 10:38:21   作者:qianmo0417  
這篇文章主要介紹了python3如何使用Requests測試帶簽名的接口,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用Requests測試帶簽名的接口

部分業(yè)務(wù)為了安全需要,需要對(duì)接口請求數(shù)據(jù)做簽名校驗(yàn),

一般制定一下規(guī)則

1、業(yè)務(wù)方接入系統(tǒng),需申請業(yè)務(wù)ID以及加密秘鑰,二者成對(duì)出現(xiàn),并且為面向服務(wù)端的,不能在前端或者客戶端傳遞。

2、所有值非空的參數(shù)必須參與簽名

3、簽名算法:

a. 對(duì)所有參數(shù)按參數(shù)名的字典升序排序

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

c. 在signStr后,繼續(xù)添加 &key=加密密鑰

d. 對(duì)signStr進(jìn)行MD5簽名

針對(duì)某一get接口做實(shí)例說明

#!/usr/bin/env python#coding:utf-8
import hashlib
import json
import requests
 
#測試的域名
domain= "http://******/***/vip2.ldo?"
#get 傳遞的非sign參數(shù)
url_params = {
    'type':'orderList',
    'userId':'198049148',
    'country':86,
    'typeGroup':'',
    'status':'',
    'rows':'20',
    'page':'1',
    'businessId':'2',
}
sign ="sign=###################"
#刪除空值的參數(shù),以用來簽名
for key in list(url_params.keys()):
    if not url_params.get(key):
        del url_params[key]
 #按照升序排列,得到的是一個(gè)列表,列表的元素為元組       
url_params1 = sorted(url_params.items(),key=lambda d:d[0], reverse=False)
 
values =[]
for li in url_params1:
    newsmbol =('=',)
    #元組中增加一個(gè)新元素
    li = li[:1]+newsmbol+li[1:]
    #元組轉(zhuǎn)化為字符串,整型不能轉(zhuǎn)化,list包含數(shù)字,不能直接轉(zhuǎn)化成字符串
    value = "".join('%s' %id for id in li)
    values.append(value)
#列表復(fù)制不能用= 需要用copy 或者list[:]
values1 = values[:]
values1.append(sign)
sign1 = "&".join(values1)
#md5 調(diào)用庫函數(shù)
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循環(huán)中,相當(dāng)于對(duì)鏈表的操作,它會(huì)自動(dòng)調(diào)用next方法! 字典的迭代器會(huì)遍歷它的鍵,在這個(gè)過程中,

不能改變這個(gè)字典!不能刪除、添加數(shù)據(jù) 要先記錄要?jiǎng)h除的元素的索引,遍歷完后再刪除,url_params.keys()在python2中

是一個(gè)獨(dú)立的列表,python3中是迭代器,需要我們list轉(zhuǎn)換生成一個(gè)獨(dú)立的列表。

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

使用內(nèi)置的sorted()函數(shù)可以將字典按照鍵或者值來進(jìn)行升序或者降序的排列,其排序結(jié)果,將字典轉(zhuǎn)化為一個(gè)列表,其中字典的元素變?yōu)榱艘粋€(gè)元組。

按照鍵 升序

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 簽名接口測試

在之前的隨筆中,我們已經(jīng)學(xué)過了如何使用使用JMeter和Postman實(shí)現(xiàn)sign簽名接口校驗(yàn)的接口測試,今天我們來學(xué)習(xí)一下如何寫Python腳本實(shí)現(xiàn)簽名接口的接口測試。

簽名接口

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

參數(shù)為:

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

其中,sign字段是按照特定算法進(jìn)行加密后的數(shù)據(jù)

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

代碼如下

import time
import random
import hashlib
import requests
import json
#1.生成5位隨機(jī)數(shù)
phone=random.randint(10000,99999)
#2.生成13位數(shù)字的時(shí)間戳
timeStamp=int(round(time.time()*1000))
print(timeStamp)
optCode="testfan"
#3.隨機(jī)數(shù)和時(shí)間戳拼接
t=str(phone+timeStamp)
#4.sign=隨機(jī)數(shù)phoneNum+optCode
sign=t+optCode
#5.實(shí)例化一個(gè)md5對(duì)象
md5=hashlib.md5()
#6.sign字段進(jìn)行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())

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python小技巧之批量抓取美女圖片

    python小技巧之批量抓取美女圖片

    學(xué)了python以后,知道python的抓取功能其實(shí)是非常強(qiáng)大的,當(dāng)然不能浪費(fèi),呵呵。我平時(shí)很喜歡美女圖,呵呵,程序員很苦悶的,看看美女,養(yǎng)養(yǎng)眼,增加點(diǎn)樂趣。好,那就用python寫一個(gè)美女圖自動(dòng)抓取程序吧~~
    2014-06-06
  • Python的Socket編程過程中實(shí)現(xiàn)UDP端口復(fù)用的實(shí)例分享

    Python的Socket編程過程中實(shí)現(xiàn)UDP端口復(fù)用的實(shí)例分享

    這篇文章主要介紹了Python的Socket編程過程中實(shí)現(xiàn)UDP端口復(fù)用的實(shí)例分享,文中作者用到了Python的twisted異步框架,需要的朋友可以參考下
    2016-03-03
  • 使用Pandas的ExcelWriter操作excel的方法

    使用Pandas的ExcelWriter操作excel的方法

    這篇文章主要介紹了使用Pandas的ExcelWriter操作excel的方法,ExcelWriter這個(gè)插件有個(gè)坑,就是已經(jīng)設(shè)置好的格式是無法更改的,因此,由pandas轉(zhuǎn)成excel的時(shí)候,必須將格式清除,尤其是表頭的格式需要大家多多注意,本文結(jié)合示例代碼講解的非常詳細(xì),需要的朋友參考下吧
    2023-11-11
  • python入門之語言基礎(chǔ)

    python入門之語言基礎(chǔ)

    這篇文章主要介紹了Python入門之基礎(chǔ)語法詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很大的幫助喲,需要的朋友可以參考下
    2021-10-10
  • Python爬蟲如何應(yīng)對(duì)Cloudflare郵箱加密

    Python爬蟲如何應(yīng)對(duì)Cloudflare郵箱加密

    這篇文章主要介紹了Python爬蟲如何應(yīng)對(duì)Cloudflare郵箱加密,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python基礎(chǔ)之條件控制操作示例【if語句】

    Python基礎(chǔ)之條件控制操作示例【if語句】

    這篇文章主要介紹了Python基礎(chǔ)之條件控制操作,結(jié)合實(shí)例形式分析了Python使用if語句進(jìn)行條件控制的相關(guān)操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2019-03-03
  • Python 將Matrix、Dict保存到文件的方法

    Python 將Matrix、Dict保存到文件的方法

    今天小編就為大家分享一篇Python 將Matrix、Dict保存到文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python流程控制 while循環(huán)實(shí)現(xiàn)解析

    Python流程控制 while循環(huán)實(shí)現(xiàn)解析

    這篇文章主要介紹了Python流程控制 while循環(huán)實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python 執(zhí)行字符串表達(dá)式函數(shù)(eval exec execfile)

    Python 執(zhí)行字符串表達(dá)式函數(shù)(eval exec execfile)

    今天在網(wǎng)上搜尋一些應(yīng)用的例子時(shí),發(fā)現(xiàn)有人用TK僅僅幾行代碼就寫了個(gè)簡易的計(jì)算器,驚為天人。回憶起剛學(xué)軟件技術(shù)基礎(chǔ)時(shí)編寫簡易計(jì)算器的艱辛,頓時(shí)淚流滿面
    2014-08-08
  • 下載安裝好python后想查看python安裝位置的幾種方法

    下載安裝好python后想查看python安裝位置的幾種方法

    這篇文章主要介紹了在Windows系統(tǒng)中查看Python路徑和版本的幾種方法,并提供了一個(gè)清除命令行窗口的技巧,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03

最新評(píng)論

绥德县| 卢龙县| 桓台县| 娱乐| 郴州市| 拜城县| 临漳县| 金湖县| 文昌市| 克拉玛依市| 讷河市| 南康市| 铜梁县| 昭通市| 武威市| 河北省| 景宁| 古田县| 红安县| 固始县| 界首市| 汝阳县| 新郑市| 庄河市| 屏东市| 嘉峪关市| 英吉沙县| 包头市| 昂仁县| 宣汉县| 垫江县| 新巴尔虎右旗| 乃东县| 余干县| 光泽县| 沿河| 仙桃市| 满洲里市| 嵊泗县| 华坪县| 漳浦县|