当前位置: 首页 > 测试知识 > JMeter处理验证码与动态Token的几种思路(正则提取)
JMeter处理验证码与动态Token的几种思路(正则提取)
2026-07-28 作者cwb 浏览次数21

在JMeter中处理动态Token和验证码是解决参数关联问题-从前一个请求的响应里提取变化的值,传给后续请求。正则表达式提取器是最常用的关联工具,不同场景可以有几种思路。


思路一:从响应中直接正则提取动态Token

适用于 CSRF Token、ViewState、JWT、Session ID 等放在响应体或响应头里的动态值。


操作步骤

在需要提取数据的 HTTP 请求上,右键添加 -后置处理器 - 正则表达式提取器。


配置字段:

引用名称:如 token

正则表达式:根据实际响应内容写,比如提取隐藏域值:

<input type="hidden" name="__RequestVerificationToken" value="(.*?)" />

模板:$1$(表示取第一个括号一致的内容)

一致 No.:1

缺省值:NOT_FOUND

后续请求中直接使用 ${token} 引用该值。

如果Token在响应头里(如 Set-Cookie),在提取器中把“要检查的响应字段”选为 响应头 即可。

对于JSON响应,虽可用JSON提取器,但正则也能应对,如 "access_token":"(.*?)"。

思路二:正则提取文本型验证码或隐藏答案

有些测试环境或低安全系统会把验证码答案直接写在响应里,此时正则依然适用。


常见形式:

页面隐藏域:<input type="hidden" id="captchaAns" value="A3B7" />

注释里的答案:<!-- captcha:8888 -->

Cookie 里直接存放明文验证码


正则示例:

<input type="hidden" id="captchaAns" value="(.*?)" />

提取后,登录请求的参数直接传入 ${captchaAns} 即可。


思路三:正则提取算式验证码,并计算答案

如果验证码是简单的算术题(如“3 + 8 = ?”),可先用正则提取算式,再通过函数或脚本计算。

示例: 响应中包含 <span id="mathCaptcha">3+8=?</span>

正则提取算式:<span id="mathCaptcha">(\d+)\+(\d+)=</span>

模板可使用 $1$ 和 $2$ 分别获取两个数字,比如引用名 num1、num2。

计算答案,可以用 JMeter 内置函数 __intSum:

${__intSum(${num1},${num2},answer)} → 得到变量 ${answer},值为 11。

也可用 JSR223 脚本更灵活地处理加减乘除。

将 ${answer} 填入验证码参数提交。


思路四:图形验证码的间接正则提取(提取图片 - OCR 识别 - 再正则提取结果)

对于真正的图形验证码,答案无法直接正则提取,但可以围绕识别流程两次使用正则:


正则提取图片 URL 及必要 Cookie/Token

如:<img id="captchaImg" src="(/getCaptcha\?t=\d+)" />

提取出相对途径,拼接后发送 HTTP 请求获取图片。

将图片传给 OCR 服务(本地 Tesseract 或打码平台),再用正则从OCR响应中提取文本答案

如果使用打码平台(如超级鹰),会返回类似 {"code":"1234"} 的响应,

用正则 "code":"(.*?)" 提取出验证码文本。

把提取到的文本作为验证码参数提交。

这样,整个链条的关联动作仍然由正则提取器完成。


思路五:绕过/固定验证码 + 专注处理动态 Token

性能测试环境中,最推荐的做法是和开发协商屏蔽或固定验证码:

屏蔽:测试环境关闭验证码检查。

固定万能码:统一使用 888888 或从 Redis/数据库预置答案(该答案可直接参数化,无需提取)。

此时脚本只需集中精力用思路一处理好动态 Token,大大降低脚本复杂度,也让测试更稳定。


建议

调试技巧:在脚本中添加调试取样器(Debug Sampler)或通过察看结果树结合RegExp Tester来验证正则是不是正确。

正则转义:JMeter 的正则表达式和 Perl 风格相同,特殊字符 ? . * + [ ] ( ) { } ^ $ | \ 需根据需要加 \ 转义。

提取器选择:如果是 JSON 响应,优先用 JSON 提取器;边界清晰的值可用边界提取器;但正则提取最通用,适合以上所有灵活场景。


结合这几种思路可以根据被测应用的实际验证码/Token 实现方式,灵活组合正则提取器实现自动化参数关联。


文章标签: 软件测试 测试工具
咨询软件测试