You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JSR223预处理器获取Web应用动态生成的GOP值

如何用JSR223预处理器获取动态生成的GOP值

针对你遇到的场景,有两种可靠的实现方式,取决于你能否拿到生成函数的源码或者已经获取到页面响应:

方式一:直接调用生成函数生成GOP值

如果能拿到getbrowserSecurityPrint函数的完整代码,直接在JSR223预处理器中执行该函数生成值,步骤如下:

  1. 在JMeter中添加JSR223预处理器,选择语言为JavaScript
  2. 将原函数的完整代码复制到预处理器中,然后调用函数并保存结果到JMeter变量:
// 粘贴原getbrowserSecurityPrint函数的完整逻辑
function getbrowserSecurityPrint() {
    // 这里替换成实际的函数代码,比如原逻辑可能包含浏览器信息、屏幕参数等
    var browserInfo = navigator.userAgent;
    var screenInfo = screen.width + "_" + screen.height;
    var securityPrint = browserInfo + screenInfo;
    // 假设原函数会做编码处理,比如base64
    return btoa(securityPrint);
}

// 模拟浏览器环境的对象(如果原函数依赖这些)
var navigator = {
    userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/114.0.0.0 Safari/537.36"
};
var screen = {
    width: 1920,
    height: 1080
};

// 生成GOP值并存入变量
var gopValue = getbrowserSecurityPrint();
vars.put("GOP_VALUE", gopValue);
  1. 后续请求中直接用${GOP_VALUE}引用这个值即可

方式二:从页面响应中提取已生成的GOP值

如果已经通过HTTP请求获取了包含GOP元素的页面,可以用正则解析响应内容提取值:

  1. 在HTTP请求的子节点添加JSR223预处理器,语言选择JavaScript
  2. 编写代码解析响应并提取:
// 获取HTTP请求的响应文本
var responseText = prev.getResponseDataAsString();

// 用正则匹配id为GOP的元素值,根据实际元素类型调整正则(比如input的value或者div的文本)
var regex = /<input[^>]*id="GOP"[^>]*value="([^"]+)"/;
var matchResult = regex.exec(responseText);

if (matchResult) {
    var gopValue = matchResult[1];
    vars.put("GOP_VALUE", gopValue);
} else {
    log.error("未在响应中找到GOP元素的值");
}

注意:如果GOP是普通文本元素(比如<div id="GOP">xxx</div>),需要把正则改成/<div[^>]*id="GOP"[^>]*>([^<]+)<\/div>/

关键注意事项

  • 若原函数依赖浏览器专属对象(如navigator、screen),JMeter的JSR223环境默认没有这些对象,必须手动模拟对应属性值,确保和浏览器环境一致
  • 优先选择调用原函数的方式,因为从页面提取可能受页面结构变化影响,稳定性差一些

内容的提问来源于stack exchange,提问作者itsme017

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 14:30:54