由于公司的接口返回数据是加密的,而我们最近要使用Jmeter进行压测,因此首先要将Jmeter的返回结果进行解密处理;本文主要讲解的是使用Python语言来进行解密。
累累累,这个问题断断续续解决了一周
没有解决前,接口的响应结果是这样的
解决后,响应结果是这样展示的
解决步骤:
1、安装Jython
首先是由于Jmeter中使用的是Jython,因为Jython更适合集成到 Java 环境中,因此我们需要下载Jython。网址:https://www.jython.org/download
将jython-standalone-2.7.3.jar文件放至F:\app\apache-jmeter-5.6.3\lib位置下
2、在Jmeter中添加后置处理器
在线程组中添加后置处理器:JSR223 PostProcessor,
语言选择为:Jython
3、编写解密代码
最重要的来啦。我们使用python语言编写解密代码时会用到一些python的第三方库,但是Jmeter中使用的是Jython,而python中有的库,Jython中并不一定有,例如我使用的Crypto就没有,因此我们需要将python编写的解密代码转换为Jython的。
但是我并不了解Jython,因此我使用的方法就是使用ChatGPT将python代码转换为Jython的😅
虽然。。但是解决了问题
ChatGPT网址:https://chat.openai.com/ 3版本可以免费使用哦
你只需要这样告诉ChatGPT:
它就会帮你写出来:
我们只需要粘贴到这个地方就可以了
运行线程组,你就可以得到解密后的响应结果啦。
我的解密代码大概是这样的,解密函数根据加密规则而定,不了解可以问开发同志。
import json
import base64
import re
from javax.crypto import Cipher, SecretKey, SecretKeyFactory
from javax.crypto.spec import DESKeySpec
import java
# 解密类
class ChametDESCrypt:
def __init__(self, key=""):
......
# 解密函数
def decrypt(self, data):
......
# 获取HTTP请求的加密的响应结果
encrypted_response = prev.getResponseDataAsString()
# 调用解密类,创建 ChametDESCrypt 实例
des = ChametDESCrypt()
# 将加密的响应结果解密为字符串
decrypted_response = des.decrypt(encrypted_response)
# 将解密后的字符串转换为 JSON 对象
decrypted_response_json = json.loads(decrypted_response)
# 将解密后的响应结果设置回查看结果数的响应数据中
prev.setResponseData(json.dumps(decrypted_response_json))
好了,问题到此就解决了。。。