如何使用 RegEx 捕获安全令牌以在 JMeter 中使用?
How can I use RegEx to capture a security token for use within JMeter?
我正在使用 JMeter 的正则表达式提取器从第一个 HTTP 响应 header 中捕获安全令牌,以在以后的请求中使用。
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*"([^"]*)"
结果
输入
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNVE8iLCJpYXQiOiIxNTEyMDcxNTg1Iiwic3ViIjoiOTEzNjQ0NCIsInV0ayI6InUvenBESVBzOCtUSlZUaW5tYVBaUjBqd2xyd2lJU1lSRVJ1ZnphNUVzS2s9IiwidmVyIjoiMi4wLjguNjIiLCJuYmYiOjE1MTIwNzEyODV9.4y__KpTFSgkdD_dMAuMiClbSfcmnvdtr0IEoVHFB_Fw","sessionTimeoutSeconds":1800,"profileRequirements":null}
输出
下面的输出是捕获组 1
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNVE8iLCJpYXQiOiIxNTEyMDcxNTg1Iiwic3ViIjoiOTEzNjQ0NCIsInV0ayI6InUvenBESVBzOCtUSlZUaW5tYVBaUjBqd2xyd2lJU1lSRVJ1ZnphNUVzS2s9IiwidmVyIjoiMi4wLjguNjIiLCJuYmYiOjE1MTIwNzEyODV9.4y__KpTFSgkdD_dMAuMiClbSfcmnvdtr0IEoVHFB_Fw
说明
"token"
字面匹配
\s*
匹配任意数量的空白字符
:
字面匹配
\s*
匹配任意数量的空白字符
"
字面匹配
([^"]*)
捕获除 "
之外的任何字符到捕获组 1
"
字面匹配
请注意,自从 JMeter 3.0 以来,您拥有 JSON Extractor which is designed for fetching values from JSON using JsonPath 比正则表达式更快、更简单和更稳定的语言。
相关配置为:
- 变量名称:任何有意义的名称,即
token
- JSON 路径表达式:
$.token
就是这样,您可以在需要时将提取的值引用为 ${token}
。
演示:
我正在使用 JMeter 的正则表达式提取器从第一个 HTTP 响应 header 中捕获安全令牌,以在以后的请求中使用。
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*"([^"]*)"
结果
输入
{"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNVE8iLCJpYXQiOiIxNTEyMDcxNTg1Iiwic3ViIjoiOTEzNjQ0NCIsInV0ayI6InUvenBESVBzOCtUSlZUaW5tYVBaUjBqd2xyd2lJU1lSRVJ1ZnphNUVzS2s9IiwidmVyIjoiMi4wLjguNjIiLCJuYmYiOjE1MTIwNzEyODV9.4y__KpTFSgkdD_dMAuMiClbSfcmnvdtr0IEoVHFB_Fw","sessionTimeoutSeconds":1800,"profileRequirements":null}
输出
下面的输出是捕获组 1
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNVE8iLCJpYXQiOiIxNTEyMDcxNTg1Iiwic3ViIjoiOTEzNjQ0NCIsInV0ayI6InUvenBESVBzOCtUSlZUaW5tYVBaUjBqd2xyd2lJU1lSRVJ1ZnphNUVzS2s9IiwidmVyIjoiMi4wLjguNjIiLCJuYmYiOjE1MTIwNzEyODV9.4y__KpTFSgkdD_dMAuMiClbSfcmnvdtr0IEoVHFB_Fw
说明
"token"
字面匹配\s*
匹配任意数量的空白字符:
字面匹配\s*
匹配任意数量的空白字符"
字面匹配([^"]*)
捕获除"
之外的任何字符到捕获组 1"
字面匹配
请注意,自从 JMeter 3.0 以来,您拥有 JSON Extractor which is designed for fetching values from JSON using JsonPath 比正则表达式更快、更简单和更稳定的语言。
相关配置为:
- 变量名称:任何有意义的名称,即
token
- JSON 路径表达式:
$.token
就是这样,您可以在需要时将提取的值引用为 ${token}
。
演示: