如何在JMeter中从区块链提取Re-captcha Token
在JMeter中提取区块链场景的Re-captcha Token及复用Token ID
一、提取Re-captcha Token
- 先定位返回Re-captcha Token的请求:在JMeter查看结果树中,找到包含该Token的响应(通常是区块链平台的人机验证接口、初始化请求或前置校验请求)
- 根据响应格式选择对应提取器:
- JSON响应场景:使用
JSON Extractor- 变量名填
recaptcha_token - JSON Path表达式根据实际响应结构调整,例如
$.data.recaptchaToken(可在查看结果树的JSON Path测试器中验证表达式有效性) - 匹配数字选
1(取第一个匹配值)
- 变量名填
- HTML响应场景:使用
CSS Selector Extractor或XPath Extractor- CSS选择器示例:
input[name='recaptcha-token']::attr(value) - XPath示例:
//input[@name='recaptcha-token']/@value
- CSS选择器示例:
- JSON响应场景:使用
- 验证提取结果:在后续请求中通过
${recaptcha_token}引用,查看结果树确认Token是否正确带入
二、提取Token ID并应用到GraphQL请求
1. 提取Token ID
- 找到返回Token ID的区块链请求(比如查询Token列表的GraphQL请求、链上数据查询接口)
- 针对GraphQL返回的JSON响应,用
JSON Extractor提取:- 变量名设为
token_id - JSON Path表达式根据实际响应结构调整,例如
$.data.tokens[0].id(取第一个Token的ID,若需其他位置的Token,修改数组下标或路径)
- 变量名设为
2. 在GraphQL请求中复用Token ID
- 打开目标GraphQL请求的HTTP编辑器,在请求体的查询语句中替换Token ID为变量:
原查询示例:
修改后:query GetTokenInfo { token(id: "固定TokenID") { name symbol totalSupply } }query GetTokenInfo { token(id: "${token_id}") { name symbol totalSupply } } - 运行测试,查看结果树中的请求体,确认
${token_id}已被实际提取到的Token ID替换
关键注意事项
- 提取器必须放在目标请求的子节点下,确保作用域正确
- 所有提取表达式需结合实际响应结构调整,可利用JMeter查看结果树的测试工具(JSON Path/XPath tester)验证有效性
- Re-captcha Token通常有有效期,需保证提取和使用的时机在有效期内
- 区块链请求可能需要签名、特定Headers等验证,需确保JMeter请求的参数、Headers与实际业务请求完全一致
内容的提问来源于stack exchange,提问作者Yuvanesh S
相关产品推荐
相关产品推荐

