如何在JMeter中从GET请求捕获reCaptcha响应值用于POST请求
JMeter 捕获并传递reCaptcha关联参数操作方法
按以下步骤配置即可完成参数的自动捕获与传递:
- 调整请求顺序:确认返回reCaptcha值的GET请求,在提交联系表单的POST请求之前,请求层级、间隔时间和真实业务操作路径保持一致,避免因请求顺序异常触发站点反爬规则。
- 选择对应后置处理器提取参数:
选中上述GET请求,根据响应格式选择后置处理器:- 若响应为非结构化文本/HTML格式,添加正则表达式提取器,通用配置参考:
- 引用名称:
recaptcha_val(自定义变量名,后续传参调用使用) - 正则表达式:根据实际响应内容编写,例如响应中reCaptcha字段为
<input type="hidden" name="recaptcha" value="(.*?)">,则正则填该段内容,将捕获组()对准需要提取的token值 - 模板:
$1$ - 匹配数字:
1(取第一个匹配结果) - 缺省值:
extract_fail(调试阶段用于快速定位提取失败问题)
- 引用名称:
- 若响应为标准JSON格式,添加JSON提取器,通用配置参考:
- 引用名称:
recaptcha_val - JSON Path表达式:按照reCaptcha字段的JSON层级填写,例如响应为
{"result":{"captchaToken":"xxx"}}则填$.result.captchaToken - 匹配数字:
1
- 引用名称:
- 若响应为非结构化文本/HTML格式,添加正则表达式提取器,通用配置参考:
- 验证提取结果:在GET请求后添加调试取样器,配合查看结果树运行单次脚本,确认调试取样器响应中
recaptcha_val变量的值,和GET响应返回的reCaptcha值完全一致,再进行后续配置。 - 传递参数到POST请求:
打开联系表单POST请求的配置面板,根据接口的提交格式填入提取到的变量:- 表单提交(
application/x-www-form-urlencoded/multipart/form-data):在参数列表新增对应reCaptcha参数,参数名以抓包得到的实际字段名为准(常见字段名包括g-recaptcha-response、recaptchaToken等),参数值填${recaptcha_val} - JSON提交:在请求体JSON的对应字段位置填入
"recaptchaToken": "${recaptcha_val}"即可
- 表单提交(
注意:上述关联方式仅适用于测试环境关闭reCaptcha服务端校验、或站点自研测试专用验证码的场景。官方版本的Google reCaptcha v2/v3自带人机校验逻辑,无法通过简单参数提取绕过正式环境校验,压测前请提前在测试环境配置验证码白名单、专用测试密钥,避免触发拦截。
内容的提问来源于stack exchange,提问作者Everest
相关产品推荐
相关产品推荐

