首页 > 解决方案 > 在 Jmeter 中获取 CSRF 令牌以进行 Salesforce 负载测试

问题描述

我正在尝试对 salesforce.com 进行负载测试。我正在通过 test.salesforce.com 登录,它将我重定向到控制台 url。现在,后续的 post 请求接受以下 post 参数。

但是这个帖子请求失败并出现“无效会话”错误消息。我猜这是因为 CSRF 令牌。我正在尝试提取(Jmeter 中的后处理器)CSRF 令牌,但我无法在先前请求的响应/cookie 中的任何位置找到此令牌。在其中一个 HTML 响应中,我可以找到几个 CSRF 令牌(例如:runApexCsrfToken、consoleAjaxCsrfToken 等)。我已经尝试了所有这些但没有结果。

总结一下我的问题:我需要在登录后请求中传递 csrf 令牌,但我无法在之前的回复中找到这个令牌。

你能帮我解决这个问题吗?

PS:登录后我尝试在“ https://c.salesforce.com/libs/granite/csrf/token.json ”上获取请求,但没有找到任何响应令牌。

标签: performancejmetersalesforcecsrfload-testing

解决方案


  1. 确保将HTTP Cookie 管理器添加到您的测试计划中
  2. 确保检查所有响应字段,因为令牌可以是 URL 的一部分或作为HTTP 标头出现
  3. 您不仅需要关联ViewStateCSRF所有其他动态参数,还需要关联

如果您在识别动态参数值的来源时遇到问题,您可以尝试使用基于云的代理服务记录您的场景,它能够以“SmartJMX”模式导出记录的脚本,并自动检测和关联动态参数。有关更多详细信息,请参阅如何将 JMeter 脚本时间缩短 80%文章


推荐阅读