<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
部分業務為了安全需要,需要對介面請求資料做簽名校驗,
1、業務方接入系統,需申請業務ID以及加密祕鑰,二者成對出現,並且為面向伺服器端的,不能在前端或者使用者端傳遞。
2、所有值非空的引數必須參與簽名
3、簽名演演算法:
a. 對所有引數按引數名的字典升序排序
b. 將所有排好序的引數按照key1=value1&key2=value2&key3=value......的格式拼接成一個字串,記為signStr
c. 在signStr後,繼續新增 &key=加密金鑰
d. 對signStr進行MD5簽名
#!/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)
在之前的隨筆中,我們已經學過了如何使用使用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())
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45