jmeter通过BeanShell 脚本,实现对http请求参数的加密
jmeter一直是一款很好的接口和性能测试工具,它是开源的,不需要为此支付任何费用,而且可以下载源码,可以在修改源代码并在此基础上拓展自己的功能或插件,它可以跟ant和jenkins结合起来搭建自己的自动化接口测试框架。它的好还在于它是纯JAVA开发的,因此,它可以更好的跟JAVA对接,通过引入自己封装的jar文件,可以方便的实现对jmeter各种个性化需求的功能的拓展,下面以一个实际例子来说明jmeter怎么引入自己开发的java工具类来实现对http请求参数的加密处理。
在此之前,我们假设有这么一个场景:我们打算对一个http请求做接口测试,但是该请求的一些参数或http头文件信息里包含了一些加密的参数,在实际的应用中,这些加密处理是由前端或app客户端来实现的,其他接口也不会返回给我们这些加密数据。那就问题就来了,前端把参数加密传给后端,后端接口用加密的数据去做校验或其他处理,那么使用jmeter做脚本的时候,这些加密的参数该怎么办?jmeter没有提供给我们现成的加密功能,而且每个数据的加密方式可能都不一样,我们要怎么才能实现对jmeter请求的这些参数加密呢?这就需要我们使用到Beashell 脚本了。
说到jmeter 的Beanshell使用,这里我们可能会用到jmeter的这些组件:取样器中的BeanShell Sampler,配置元件:前置处理器中的BeanShell PreProcessor,后置处理器中的BeanShell PostProcessor,断言中的BeanShell断言。
接下来回到刚才的场景,http请求里的一些参数是加密的,为了使用jmeter正常发送带加密参数的http请求来测试这个http接口,我们可以给该http请求添加一个BeanShell PreProcessor,通过在BeanShell PreProcessor里实现对参数的加密。下面上具体的实例:
假设有这么一个app应用的HTTP接口,接口文档如下:
接口名称:XXX登录
接口协议:HTTP
请求方式:POST
参数类型:JSON
路径参数:phonenumber,用户手机号码
请求体参数:
device 设备信息,JSON格式
password 用户密码,密码SHA-256编码加密串数据的大写
首先,我们需要用java代码来实现SHA-256加密功能:
项目结构为com.Base64
SHA256加密代码主体:
ok,加密算法写好后,把其打包成jar文件,这里我打包的文件为:Base64URLSafe.jar ,把Base64URLSafe.jar 放到jmeter lib/ext目录下,接下来就可以在jmeter里引入这个jar包了。
jmeter脚本做法如下:
1、测试计划里引入外部jar包:
2.添加一个http取样器:
3. 给这个http取样器添加一个 前置处理器:BeanShell PreProcessor,其内容如下
接下来就可以在需要用到变量的地方引用即可,应用方法:${PASSWORD_SHA256}
运行结果如下:
可以看到, 密码123456 已结经过SHA256加密并全部转化为大写字母了。OK,相信大家可以从这个简单的例子中联想到它的很多用法,了解了这个特性,那么足够你用jmeter和java来做很多事情了,最后要说的是,本例中之所以是通过引入外部jar包的形式,是想通过它说明,我们可以把很多复杂的、公用的工具类的代码都封装在jar里这样方便我们精简和重用代码。
jmeter通过BeanShell 脚本,实现对http请求参数的加密的更多相关文章
- 用 Python 脚本实现对 Linux 服务器的监控
目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...
- 用 Python 脚本实现对 Linux 服务器的网卡流量监控
*这篇文章网上已经有相关代码,为了加深印象,我做了相关批注,希望对朋友们有帮助 工作原理:基于/proc文件系统 Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新 ...
- C#代码实现对HTTP POST参数进行排序
private static string GetSortedParas(Dictionary<string, string> dic) { dic = dic.OrderBy(key = ...
- 【转】js生成接口请求参数签名加密
js生成接口请求参数签名加密 签名算法规则: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=v ...
- js生成接口请求参数签名加密
js生成接口请求参数签名加密 定义规则:将所有参数字段按首字母排序, 拼接成key1 = value1 & key2 = value2的格式,再在末尾拼接上key = appSecret, 再 ...
- 通过脚本实现对web的健康检查
前面的文章中(https://www.cnblogs.com/zyxnhr/p/10707932.html),通过nginx的第三方模块实现对web端的一个监控,现在通过一个脚本实现对第三方的监控 脚 ...
- 从零开始设计SOA框架(三):请求参数的加密方式
第二章中说明请求参数有哪些,主要是公共参数和业务参数,服务端需要对参数进行效验,已验证请求参数的合法性 参数效验前先解释下以下参数: 1.参数键值对:包括公共参数.业务参数 1.公共参数:按 ...
- 前端请求参数MD5加密校验,参数串解密
首先引入MD5加密库:=>https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js; 步骤:=>1.请求前对参数进行字典升序排序,排 ...
- python完成数组格式的请求参数的加密计算
#输入 '''order_id:31489 join_course[0][join_tel]:13130999882 join_course[0][join_name]:任学雨 join_course ...
随机推荐
- asp.net core MVC 过滤器之ActionFilter过滤器(二)
本系类将会讲解asp.net core MVC中的内置全局过滤器的使用,将分为以下章节 asp.net core MVC 过滤器之ExceptionFilter过滤器(一) asp.net core ...
- Tomcat修改端口
当在服务器上运行报错说端口已占用的时候,需要修改Tomcat的端口,步骤如下: 一.找到Tomcat的安装目录 二.进入conf目录,找到server.xml文件,记事本打开 此时文件中有三个地方可以 ...
- 一款轻量级前端框架Avalon.Js
avalon2是一款基于虚拟DOM与属性劫持的 迷你. 易用. 高性能 的 前端MVVM框架, 拥有超优秀的兼容性, 支持移动开发, 后端渲染, WEB Component式组件开发, 无需编译, 开 ...
- Andrew Ng机器学习课程笔记--week3(逻辑回归&正则化参数)
Logistic Regression 一.内容概要 Classification and Representation Classification Hypothesis Representatio ...
- 谈谈Golang中goroutine的调度问题
goroutine的调度问题,同样也是我之前面试的问题,不过这个问题我当时并不是很清楚,回来以后立马查阅资料,现整理出来备忘. 有一些预备知识需要说明,就是操作系统中的线程.操作系统中的线程分为两种: ...
- 云计算之路-阿里云上-容器难容:自建docker swarm集群遭遇无法解决的问题
我们从今年6月开始在生产环境进行 docker 容器化部署,将已经迁移至 ASP.NET Core 的站点部署到 docker swarm 集群上.开始我们选用的阿里云容器服务,但是在使用过程中我们遭 ...
- Sql Server数据库使用触发器和sqlbulkcopy大批量数据插入更新
需要了解的知识 1.触发器 2.sqlbulkcopy 我的用途 开发数据库同步的工具,需要大批量数据插入和数据更新. 方式 使用SqlBulkCopy类对数据进行数据批量复制,将需要同步数据的表新建 ...
- 有了 indexOf,为什么 ECMAScript 7 还添加了 Array.prototype.include
ECMAScript 7 中新增了用于检测数组中是否包含某个元素 Array.prototype.includes() API,想到了 Array 其实有很多相关 API 可以检测到是否包含某个元素, ...
- Idea下载后初始配置(windows环境下)
专业版的intellij可以免费试用30天.为了以后开发方便,咱们需要下载专业版进行破解. 一.破解 安装过程中有个界面如下,咱们选择License server填上http://idea.itebl ...
- java通过freemarker导出包含富文本图片的word文档
废话不多说,进入正题! 本文重点在于:对富文本图片的导出(基础的freemarker+word模板导出这里不做详细解说哈) 参考文章:http://www.cnblogs.com/liaofeifig ...