【问题标题】:How can I use RegEx to capture a security token for use within JMeter?如何使用 RegEx 捕获安全令牌以在 JMeter 中使用?
【发布时间】:2018-05-14 23:10:47
【问题描述】:

我正在使用 JMeter 的正则表达式提取器从第一个 HTTP 响应标头中捕获安全令牌,以便在以后的请求中使用。

HTTP 响应如下:

{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNVE8iLCJpYXQiOiIxNTEyMDcxNTg1Iiwic3ViIjoiOTEzNjQ0NCIsInV0ayI6InUvenBESVBzOCtUSlZUaW5tYVBaUjBqd2xyd2lJU1lSRVJ1ZnphNUVzS2s9IiwidmVyIjoiMi4wLjguNjIiLCJuYmYiOjE1MTIwNzEyODV9.4y__KpTFSgkdD_dMAuMiClbSfcmnvdtr0IEoVHFB_Fw","sessionTimeoutSeconds":1800,"profileRequirements":null}

所以我试图捕获我写 RANDOMCHARS 的所有字符

{"token":"RANDOMCHARS","sessionTimeoutSeconds":1800,"profileRequirements":null}

我打算用这个网站来测试任何建议:https://regexr.com/

任何帮助都将不胜感激! =)

【问题讨论】:

  • "token"\s*:\s*"([^"]*)"?您的标题与问题没有多大关系。
  • 好我跑内JMeter的正则表达式,其结果是:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNVE8iLCJpYXQiOiIxNTEyMDgwMDQ3Iiwic3ViIjoiOTEzNjQ0NCIsInV0ayI6IjJjb1pjRU0ramQzT3ArNkxTb2pvODhlaVVHdWl5NGM4aVArZC84L2orUjA9IiwidmVyIjoiMi4wLjguNjIiLCJuYmYiOjE1MTIwNzk3NDd9.DY69755kQ8dhODtPiuzuGe6vBS3jgLwXCIsUatjFsZU 跨度>
  • 这就是你要找的东西吗?
  • 是的,先生!那完美!非常感谢您传授知识!!!! =) =) =)
  • 我已经在下面发布了我的答案。这是接受答案的唯一方法哈哈

标签: regex security jmeter token csrf


【解决方案1】:

请注意,从 JMeter 3.0 开始,您拥有 JSON Extractor,它是为使用 JsonPath 语言从 JSON 中获取值而设计的,它比正则表达式更加快速、简单和稳定。

相关配置为:

  • 变量名称:任何有意义的名称,即token
  • JSON 路径表达式:$.token

就是这样,您可以在需要时将提取的值称为${token}

演示:

更多信息:API Testing With JMeter and the JSON Extractor

【讨论】:

    【解决方案2】:

    代码

    See regex in use here

    "token"\s*:\s*"([^"]*)"
    

    结果

    输入

    {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNVE8iLCJpYXQiOiIxNTEyMDcxNTg1Iiwic3ViIjoiOTEzNjQ0NCIsInV0ayI6InUvenBESVBzOCtUSlZUaW5tYVBaUjBqd2xyd2lJU1lSRVJ1ZnphNUVzS2s9IiwidmVyIjoiMi4wLjguNjIiLCJuYmYiOjE1MTIwNzEyODV9.4y__KpTFSgkdD_dMAuMiClbSfcmnvdtr0IEoVHFB_Fw","sessionTimeoutSeconds":1800,"profileRequirements":null}
    

    输出

    下面的输出是捕获组 1

    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNVE8iLCJpYXQiOiIxNTEyMDcxNTg1Iiwic3ViIjoiOTEzNjQ0NCIsInV0ayI6InUvenBESVBzOCtUSlZUaW5tYVBaUjBqd2xyd2lJU1lSRVJ1ZnphNUVzS2s9IiwidmVyIjoiMi4wLjguNjIiLCJuYmYiOjE1MTIwNzEyODV9.4y__KpTFSgkdD_dMAuMiClbSfcmnvdtr0IEoVHFB_Fw
    

    说明

    • "token" 按字面意思匹配
    • \s* 匹配任意数量的空白字符
    • : 从字面上匹配这个
    • \s* 匹配任意数量的空白字符
    • " 从字面上匹配这个
    • ([^"]*) 捕获除" 之外的任何字符到捕获组 1
    • " 匹配这个字面意思

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 2021-10-20
      • 2022-01-19
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      相关资源
      最近更新 更多