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

JMeter中随机返回两种Token格式的提取处理方案咨询

JMeter 提取两种随机格式Token的解决方案

方法一:正则提取器配合脚本处理分支逻辑

  1. 添加正则表达式提取器,配置如下:

    • 引用名称:raw_token
    • 正则表达式:%(.*?)%3d|%3d(%2?.*?)%3d
    • 模板:$1$$2$
    • 匹配数字:1(取第一个匹配到的结果)
    • 缺省值:TOKEN_NOT_FOUND

    这个正则会同时匹配两种格式:

    • 第一种格式:捕获%与%3d之间的内容
    • 第二种格式:捕获%3d与%3d之间的内容(包含可能的%2前缀)
  2. 添加JSR223 PostProcessor,选择Groovy语言,写入以下脚本:

    def rawToken = vars.get("raw_token")
    def finalToken = rawToken
    
    // 处理第二种格式:去除开头的%2
    if (finalToken.startsWith("%2")) {
        finalToken = finalToken.substring(2)
    }
    
    vars.put("final_token", finalToken)
    

    执行后,final_token就是处理好的可用Token。

方法二:直接用JSR223脚本解析响应(更灵活)

如果需要更精准的控制,直接在JSR223 PostProcessor里读取响应内容并处理:

def responseBody = prev.getResponseDataAsString()
def finalToken = ""

// 匹配第一种Token格式
def firstPattern = (responseBody =~ /%(.*?)%3d/)
if (firstPattern.find()) {
    finalToken = firstPattern.group(1)
} 
// 匹配第二种Token格式并处理%2前缀
else {
    def secondPattern = (responseBody =~ /%3d(%2?.*?)%3d/)
    if (secondPattern.find()) {
        finalToken = secondPattern.group(1).replaceFirst(/^%2/, "")
    }
}

vars.put("final_token", finalToken)

注意事项

  • 可以添加Debug Sampler查看raw_token和final_token的取值,验证逻辑是否正确
  • 如果响应中有多个匹配项,需要给正则添加更具体的上下文约束(比如结合Token前后的固定字符串),避免匹配到无关内容
  • JSR223组件优先选择Groovy语言,性能比BeanShell等其他语言更优

内容的提问来源于stack exchange,提问作者Nhan Vu Hoang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:05:22