mock接口返回加密值

1.flask:flask是使用python语言编写的web测试框架

如果报错: Could not fetch URL https://pypi.org/simple/flask/: There was a problem confirming the ssl certificate   -----因为pip是国外网站,因此用国内镜源就行。

 pip install flask -i http://pypi.douban.com/simple --trusted-host pypi.douban.com  

2.最基础的代码逻辑:(默认methods=['GET'])          

#初始化一个flask对象
from flask import Flask

app= Flask(__name__)

#创建一个函数,并把这个函数装饰成一个mock server

@app.route('/')  #把创建的函数,放在flask对象的route装饰器里面,用来生成返回值的地址
def test1():
    return "测试1"   #返回值

#运行mock服务
if __name__=="__main__":
    app.run()

示例:

 结果:

在postman中也可以实现

 如果要修改html路径,在route里面修改,如:

3.进阶一:既可以返回get方法,又可以返回post方法,同时返回值是json格式。(#用bejson可将json处理和格式化)

#初始化一个flask对象
from flask import Flask

go = Flask(__name__)

#创建一个函数,并把这个函数装饰成一个mock server

@go.route('/xinzi',methods=['GET','POST'])  #把创建的函数,放在flask对象的route装饰器里面,用来生成返回值的地址
def test2():
    return {
	"sites": [{
			"name": "cainiao",
			"url": "www.runoob.com"
		},
		{
			"name": "google",
			"url": "www.google.com"
		},
		{
			"name": "web",
			"url": "www.weibo.com"
		}
	]}

#运行mock服务
if __name__=="__main__":
    go.run()

结果:用get和post的方法都能返回json值:

4.进阶2:需求:有参数并且这个参数是需要经过加密处理的---比如在电商中,为防止用户信息被抓包泄露,程序员会写加密算法。常见的五种加密:(MD5\SHAX\Base64\RSA\SIGN)

 以MD5加密为例,传入一个值,返回MD5加密后的32位大写的值。 

(1)在代码里加密,看结果是否和数据库中一致:

#初始化一个flask对象
from flask import Flask,request
import hashlib
go = Flask(__name__)

#创建一个函数,并把这个函数装饰成一个mock server

def MD5(value):  #对value做md5加密
    value_change=str(value).encode('utf-8')#先将value转化为字符串,再做编码处理
    value_final= hashlib.md5(value_change).hexdigest()        #用hash算法加密
    return value_final.upper()   #返回32位加密大写

@go.route('/md5',methods=['GET','POST'])  #把创建的函数,放在flask对象的route装饰器里面,用来生成返回值的地址
def md5_login():
    user=request.values.get("username")  #不是requests,requests是做接口自动化的,在flask中导入request表示请求,先取得username和password的值(参数),再和加密后的数据库中的数据做对比。
    pwd=request.values.get("password")
    #查询数据库中的用户名和密码(数据库中一般是已经加密的,在传值时,也得是加密过的)
    db_user="21232F297A57A5A743894A0E4A801FC3"
    db_pwd="0192023A7BBD73250516F069DF18B500"
    if MD5(user)==db_user and MD5(pwd)==db_pwd:    #调用前面写的加密函数
        return "登陆成功"
    else:
        return "登录失败"
#运行mock服务
if __name__=="__main__":
    go.run()

 (2)在postman的前置脚本(pre-request script)中加密:

python脚本代码:

#初始化一个flask对象
from flask import Flask,request
import hashlib
go = Flask(__name__)

#创建一个函数,并把这个函数装饰成一个mock server

def MD5(value):  #对value做md5加密
    value_change=str(value).encode('utf-8')#先将value转化为字符串,再做编码处理
    value_final= hashlib.md5(value_change).hexdigest()        #用hash算法加密
    return value_final.upper()   #返回32位加密大写

@go.route('/md5',methods=['GET','POST'])  #把创建的函数,放在flask对象的route装饰器里面,用来生成返回值的地址
def md5_login():
    user=request.values.get("username")  #不是requests,requests是做接口自动化的,在flask中导入request表示请求,先取得username和password的值(参数),再和加密后的数据库中的数据做对比。
    pwd=request.values.get("password")
    # print(user,pwd)
    #查询数据库中的用户名和密码(数据库中一般是已经加密的,在传值时,也得是加密过的)
    db_user="admin"
    db_pwd="admin123"
    if user==MD5(db_user) and pwd==MD5(db_pwd):    #调用前面写的加密函数
        return "登陆成功"
    else:
        return "登录失败"
#运行mock服务
if __name__=="__main__":
    go.run()

postman前置中的代码:

 

var username=CryptoJS.MD5('admin').toString();
// 先加密,再转化为字符串
var password=CryptoJS.MD5('admin123').toString();
console.log(username);  
// 类似于print
console.log(password)
pm.environment.set("user", username.toUpperCase());
// 将加密字符串大写,并设为变量
pm.environment.set("pwd", password.toUpperCase());

 Base64加密:

python代码端:

#初始化一个flask对象
import base64

from flask import Flask,request
import hashlib
go = Flask(__name__)

#创建一个函数,并把这个函数装饰成一个mock server

def base_64(value):  #对value做base_64加密,用base64加密的方法
    value_change=str(value).encode('utf-8')#先将value转化为字符串,再做编码处理
    value_final= base64.b64encode(value_change).decode(encoding='utf-8')    #先用base64加密,最后结果为二进制的字符串;再用decode转化为utf8格式
    return value_final.upper()   #返回32位加密大写

@go.route('/base_64',methods=['GET','POST'])  #把创建的函数,放在flask对象的route装饰器里面,用来生成返回值的地址
def base64_login():
    user=request.values.get("username")  #不是requests,requests是做接口自动化的,在flask中导入request表示请求,先取得username和password的值(参数),再和加密后的数据库中的数据做对比。
    pwd=request.values.get("password")
    # print(user,pwd)
    #查询数据库中的用户名和密码(数据库中一般是已经加密的,在传值时,也得是加密过的)
    db_user="admin"
    db_pwd="admin123"
    if user==base_64(db_user) and pwd==base_64(db_pwd):    #调用前面写的加密函数
        return "登陆成功"
    else:
        return "登录失败"


#运行mock服务
if __name__=="__main__":
   go.run()

postman前置中的代码:

 

var utf8_username=CryptoJS.enc.Utf8.parse("admin");
var base64_username=CryptoJS.enc.Base64.stringify(utf8_username);
// 先base64加密,再转化为utf8格式
var utf8_password=CryptoJS.enc.Utf8.parse("admin123");
var base64_password=CryptoJS.enc.Base64.stringify(utf8_password);
console.log(base64_username);  
console.log(base64_password);
pm.environment.set("user", base64_username.toUpperCase());
pm.environment.set("pwd", base64_password.toUpperCase());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340