Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >接口测试平台代码实现153:加密算法更新

接口测试平台代码实现153:加密算法更新

作者头像
我去热饭
发布于 2022-05-19 02:18:54
发布于 2022-05-19 02:18:54
25000
代码可运行
举报
文章被收录于专栏:测试开发干货测试开发干货
运行总次数:0
代码可运行

继续更新接口测试平台:

  1. 先来改一系列的小bug:(admin后台数据的展示None时报错)

这个bug是什么意思呢?就是当我们删除一个数据时,结果报错说,返回的必须是str 而非None。这个问题的原因在于我们的models.py中的 返回展示部分:

返回的self.name, 而创建的时候,默认又是空的None。所以这里会报错。所以为了以防同类情况再次出现。我们先把所有的这种全加上str() 包裹。就算是None,也会显示 字符串的"None" ,而不会再报错了。

好,然后开始既进入正文:【加密算法的继续更新】

首先,先让我们回忆一下当前进度。

我们说要做一个函数,来接受url,body,project_id, 进行加密计算后 把加好的url和body 返回回去。

当前函数如下:

注意,我们已经对函数进行步骤划分,且完成到了从url中提取需要处理的字段名。

打印的效果如下,算法目前可识别出来最终的加密字段名为sign,需要有三个变量,token,userid,time, 其中token 我们成功找到值123abc,userid 和 time暂时为空。

让我们开始从body中取:

body一共我们支持俩种类型,也就是form-data/x-www-form-urlencoded的 二维列表字符串,还有raw-json的字典字符串。

不论哪种我们都直接用正则取即可,又快又方便。

不过这里我们要注意,正则的值有可能是被""包裹起来,也有可能非包裹,比如某数字。所以我们最好是直接全拿,然后忠实替换最好。

如图,分别对俩种格式进行了正则提取。结果如下:

注意,在userid作为i的循环时,成功拿到了值。

然后我们做个简单的判断,意思是url和body中 只要任意一次提取成功便不再继续提取 浪费时间。然后顺便直接给替换到 我们的加密表达式中,最后打印一下表达式:

注意这里,运用了 str(eval( 的方式 进行解析和拼接,以便数字、字符串、列表等格式均可以正确插入。

可以看到,已经成功拼接到表达式中了。

然后还有个#time#没有处理好,也就是当所有地方都不存在这个需要解析的字段时,我们直接运用我们的预置处理办法。

注意,这个最后的判断我们是可以写很多预置字段的。

结果如下:

可以看到,加密字段已经如我们所期望的那样,成功替换到了加密表达式中。所以我们接下来,就是对这个加密字段求值。

首先导入base64的包 或者 md5等等之后用到的:

注意,我之前写的加密表达式是伪代码,真正的base64并不是这么简单的。

所以我们现在来把之前的假表达式,换成真的可以求值的一个表达式:

如图:

base64内部的各种方法,里面的参数必须是encode() utf-8的,且最终的结果需要再次decode() 才能使用。 括号里若是utf-8 则可以省略不写:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sign=base64.b32encode(("token=#token#"+"userid=#userid#"+"#time#").encode()).decode()

复制到平台保存好。代码改成如下:

打印了最终加密结果:

然后我们最后一步,就是插入到url/或body中。

首先是url:

进行了各种判断:结果如下:

可以看到是成功了

然后是body,body这个比较复杂,需要判断类型,并且在之后还要恢复字符串格式。

好了,到此为最后一步了,然后我们打印下各种情况的body看看。

发现都可以成功塞进去。

本节内容到此结束。下一节课,我们讲在 普通调试、登录态节课、用例模块 三处进行调用该功能。且对一些异常情况做好处理工作。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
接口测试平台代码实现148:加密算法的设计与实现
我会坦然的回答: 结束?结束了我还水什么?结束了你在公司部署好之后吃老本么?下季度OKR怎么办?什么APP 什么系统不是天天迭代 天天有新需求 新设计,都结束了,程序员去要饭么?
我去热饭
2022/05/19
3270
接口测试平台代码实现148:加密算法的设计与实现
接口测试平台代码实现153:加密算法继续实现
(注意调用位置一定要放到 替换全局变量的后面!最好是在真正发送请求代码部分之前紧贴!)
我去热饭
2022/05/19
1930
接口测试平台代码实现153:加密算法继续实现
接口测试平台代码实现149:加密算法的增删改查
我们目前要做的加密算法是一个实体,或者说一个表达式。那么它就自然而然的要考虑下面几点:
我去热饭
2022/05/19
3630
接口测试平台代码实现149:加密算法的增删改查
接口测试平台代码实现150:加密算法继续实现
name必须是一样的,value是要获取的值当然不一样,id是由前面相同后面不同。
我去热饭
2022/05/19
6010
接口测试平台代码实现150:加密算法继续实现
接口测试平台代码实现151:加密算法后台函数实现
好的,在这大家也跟了150期了,对于这个算法的实现,能否知道从哪下手呢?觉得难么?
我去热饭
2022/05/19
2340
接口测试平台代码实现52: 自动异常测试-5
找到这个error_play函数,我们已经替换好了请求体,那么接下来就把新请求体和接口id传递给后台即可
我去热饭
2022/05/19
8850
接口测试平台代码实现52: 自动异常测试-5
聊聊爬取某团数据
正所谓:民以食为先,食以安为先,今天我们来爬取某团的美食店家数据,看看有什么好吃的,有哪些优惠套餐。
我被狗咬了
2022/01/05
1K0
聊聊爬取某团数据
接口测试平台代码实现152:加密算法继续更新
这里要注意,因为我们后添加的这个字段,所有之前的数据,很可能这里都是空字符串或None。
我去热饭
2022/05/19
2710
接口测试平台代码实现152:加密算法继续更新
接口测试平台代码实现80: 多接口用例-20
然后是form-data和x-www,这里我为了尽快结束本模块,暂时写成一样的处理方式。等到本模块结束,后续对整个平台进行细化优化的时候,会重新更标准的处理这块底部请求。
我去热饭
2022/05/19
2980
接口测试平台代码实现80: 多接口用例-20
接口测试平台代码实现78: 多接口用例-18
我们需要先思考一下。如何进行提取和持久化的设计,也就是说不能光提取就行,需要存放到哪,以便后续接口进行调用:
我去热饭
2022/05/19
2910
接口测试平台代码实现78: 多接口用例-18
接口测试平台代码实现79: 多接口用例-19
准备俩个步骤接口,第一个仍然是昨天例子那个可以通的x度接口。第二个可以不通,不是真接口,主要验证在url/header/body中 是否能成功接收并代入第一个接口的返回值qid和en:
我去热饭
2022/05/19
3330
接口测试平台代码实现79: 多接口用例-19
Crack App | 某练习平台 App 第 5 题参数 Token 加密逻辑分析
下拉刷新可以看到token是不断变化的,现在用jadx反编译看看,找找token的逻辑
咸鱼学Python
2022/04/27
5400
Crack App | 某练习平台 App 第 5 题参数 Token 加密逻辑分析
接口测试平台代码实现112:登录态接口-8
本节我们要搞定普通接口调试时自动加入登陆态接口返回参数到请求头/体中的后台实现。
我去热饭
2022/05/19
4590
接口测试平台代码实现112:登录态接口-8
接口测试平台代码实现51: 自动异常测试-4
我们在catch中已经对不可替换的请求体类型做了处理。现在要开始进行try中符合规则的请求体类型了。
我去热饭
2022/05/19
4920
接口测试平台代码实现51: 自动异常测试-4
接口测试平台代码实现54:首页重构-2
好,虽然绝大多数同学还未追上最新进度进行投票,但是已投情况来看,大部分还是支持首页做成接口快速调试功能。
我去热饭
2022/05/19
5880
接口测试平台代码实现54:首页重构-2
接口测试平台代码实现81: 多接口用例-21
本节开始之前,需要改正一个小bug,是群内同学提出的。就是正则断言的时候,提取的都是字符串,那么预期值就也写字符串就好了,没必要进行求值类型的设计。 这里我觉得也可以,所以先改一下我们的正则断言的规则 如下:
我去热饭
2022/05/19
2520
接口测试平台代码实现81: 多接口用例-21
接口测试平台代码实现50: 自动异常测试-3
本节开始之前,先解决下关于调试层遗漏的一个设计缺陷。就是当已经打开了一个接口的调试层后,如果直接点击其他接口的调试层便会出现显示错误。这类的问题非常多,我们最好是直接根本上绕过去。
我去热饭
2022/05/19
5170
接口测试平台代码实现50: 自动异常测试-3
RSA加密算法获取Token
https://blog.csdn.net/u010048119/article/details/126049523
打铁读书郎
2024/05/06
3890
postman接口测试
postman提供功能强大的 Web API 和 HTTP 请求的调试,它能够发送任何类型的HTTP 请求 (GET, POST, PUT, DELETE...),并且能附带任何数量的参数和 Headers.不仅如此,它还提供测试数据和环境配置数据的导入导出,付费的Post Cloud用户还能够创建自己的Team Library用来团队协作式的测试,并能够将自己的测试收藏夹和用例数据分享给团队.
测试加
2022/03/24
1.1K0
postman接口测试
接口测试平台代码实现39:接口数据全部保存
我们之前的章节已经解决了各种接口的数据的提取问题,本节的任务就是把这些传给后端,然后保存成功。
我去热饭
2022/05/19
6820
接口测试平台代码实现39:接口数据全部保存
推荐阅读
相关推荐
接口测试平台代码实现148:加密算法的设计与实现
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档