LOADRUNNER/JMeter未记录动态数据,JMeter如何处理隐藏搜索参数?
在JMeter中处理无法捕获车牌号搜索参数的问题
如果搜索车牌号(比如5555)时,浏览器开发者工具看不到对应的参数,大概率是参数被隐藏或做了特殊处理,下面是具体的排查方向和JMeter解决方案:
先排查参数隐藏的常见场景
- 参数被加密/编码:系统可能对车牌号做了加密(如AES、RSA)或自定义编码(如Base64),开发者工具里显示的是加密后的值,不是原始输入的5555。
- 非HTTP协议传输:如果用的是WebSocket、GRPC这类协议,普通HTTP抓包工具(包括浏览器开发者工具)默认不显示这类请求的内容。
- 参数存在本地缓存:车牌号可能先存在localStorage、sessionStorage或Cookie里,请求时直接读缓存发送,不是输入后直接提交。
- 请求体是二进制格式:比如用Protobuf、自定义二进制结构传参,开发者工具没法解析成明文。
- 参数藏在请求头里:有些系统会把关键参数放在自定义请求头中,不是URL或Form Data里,容易被忽略。
JMeter对应的处理方法
1. 解密/还原参数
- 先在浏览器里找到加密后的对应值,然后扒页面JS代码找加密逻辑:搜索和输入框、提交按钮绑定的函数,找带
encrypt、encode的关键词。 - 在JMeter里加
JSR223 PreProcessor,用Groovy实现相同的加密/编码逻辑,把输入的车牌号(比如${carPlate}变量)转换成系统需要的格式,再传到请求里。
2. 处理非HTTP协议
- WebSocket请求:通过JMeter插件管理器安装WebSocket插件,添加
WebSocket Sampler,抓包并模拟WebSocket的消息格式,把处理后的车牌号参数嵌进去。 - GRPC请求:用JMeter的GRPC插件,导入项目的
.proto文件,配置请求时直接填车牌号对应的字段。
3. 读取本地缓存的参数
- 加
HTTP Cookie Manager自动管理Cookie,如果参数存在Cookie里,JMeter会自动带上。 - 如果在localStorage/sessionStorage里:先在浏览器
Application面板找到对应的键值对,然后在JMeter里用JSR223 Sampler或WebDriver Sampler模拟浏览器读缓存的操作,拿到参数后传到请求。
4. 解析二进制请求体
- 用浏览器开发者工具把请求体复制为Raw格式,在JMeter的
HTTP Request采样器里选Body Data模式,粘贴原始内容,找到对应位置替换成变量(比如${carPlate})。 - 如果是Protobuf格式,用对应的Protobuf插件把明文参数序列化成二进制后传入请求。
5. 检查请求头
- 仔细对比搜索前后的请求头,找出自定义头字段里的差异,看是否有携带车牌号的字段。
- 在JMeter的
HTTP Request采样器的Headers面板里添加这个头字段,填入车牌号参数。
验证环节
- 用JMeter的
View Results Tree查看实际发送的请求内容,确认参数是否正确传入。 - 对比浏览器和JMeter发送的请求细节(头、体、Cookie等),确保完全一致。
内容的提问来源于stack exchange,提问作者naveenreddy b
相关产品推荐
相关产品推荐

