JMETER 记录控制器,从重定向中获取始终相同的状态和随机数值 URL

JMETER Recording Controller, getting always same state and nonce values from redirect URL

我用 Azure 云的记录控制器捕获了一个 JMeter 场景,使用 Oauth2 + openId 即席安全层配置,并在最终重定向登录网页之前进行了 2 次重定向。

检查根 URL 路径 (https://example.com/),使用 linux“wget”和 nodeJS+Puppetter 获取重定向,我检查了重定向的值“来自 URL 的“state”和“nonce”参数(使用 Javascript 从根站点计算)始终是相同的值,从记录场景步骤中捕获(我的意思是,使用 [= 访问根 DNS 31=],我在每次调用主根 URL 时获取“state”和“nonce”URL 参数的动态值,但是来自 JMeter JMX 记录的脚本,“state”和“nonce” params,不像浏览器那样是动态的,并且总是具有相同的值,尽管我已经一步一步地检查了 HTTP 请求以查看我可以在记录的场景中设置它们的方式以避免“静态”相同的值。

在第 1 步中,我正在访问 url:https://example.com/

此 url 计算发送到服务器的值,将我重定向回 https://example.com/login?state=[dynamic_calculated]&nonce=[dynamic_calculated],另一个重定向(第二次)为我提供登录 Web 访问权限。

在我的 JMeter 脚本中,state 和 nonce 参数不会在每次 JMX 脚本执行时计算,它们的值始终与 Record Controller 最初捕获的值相同。

你能帮我检查一下如何根据浏览器导航行为动态计算 URL 中的状态和随机数参数值吗?

提前致谢。

JMX capture for static values

JMeter 的HTTP(S) Test Script Recorder记录 请求,方法是从使用 JMeter 作为代理的应用程序中捕获请求。任何应该是动态的值都将硬编码并与记录的请求中的值相对应。

JMeter 不会自动 detect/substitute 动态内容,您必须:

  1. 确定动态值的来源(响应正文,headers 或 URL),它们很可能来自先前的请求之一
  2. 使用合适的 JMeter 提取它们 Post-Processor and store them into JMeter Variables
  3. 用步骤 2 中引用的变量替换记录的硬编码值

该过程称为 correlation

有一些以半自动方式执行关联的解决方案,如 JMeter Correlation Recorder Plugin or fully-automated via BlazeMeter Proxy Recorder 能够以“SmartJMX”模式导出记录的请求,自动检测和关联动态内容。