0

我正在尝试运行 JMeter 脚本,但登录时失败。原因是,密码是使用 RSA 算法加密的,那就是使用 javascript。所以录制时保存的密码不起作用,我无法获得加密密码的动态值,因为它是使用 JMeter 不支持的 javascript 加密的。由于在运行时使用 javascript,我不能使用正则表达式来查看响应数据,因为这不是响应的一部分。

我正在尝试登录 Tableau 报告服务器。

4

3 回答 3

1

我在使用 NEOLOAD 时遇到了同样的问题,所以我在 Auth POST 之前包含了以下脚本。

// Get variable value from VariableManager
var doLoginIDString = context.variableManager.getValue("doLoginID");
if (doLoginIDString==null) {
    context.fail("Variable 'doLoginID' not found");
}

logger.debug("doLoginIDString="+doLoginIDString);

var rsa = new RSAKey();
rsa.setPublic(doLoginIDString,'10001');
var res = rsa.encrypt('<USER_PASSWORD>');
logger.debug("encrypted_var= "+res);
if (res) {
     context.variableManager.setValue("crypted_Password",res);
}

VariableManager 是一个 NEOLOAD 变量管理器 :)

“doLoginID”是我根据服务器传递的字符串创建的变量,供您使用密码进行加密。这个字符串可以在 LoginPage 的源代码中找到。

“crypted_Password”是我为 POST 加密参数创建的变量。

RSAKey()、setPublic() 和 encrypt() 包含在您访问登录页面时从服务器下载的 .js 文件中。我只是将这些文件包含到我的项目库中,它就可以工作了。

我不知道 JMeter 是否相同,但希望这可以帮助您了解您需要做什么。

于 2014-06-17T16:09:07.277 回答
0

我也没有找到并回答这个问题,但我所做的是每次运行测试时将tableau_online_idworkgroup_session_id cookie 放入用户变量中。

所以我首先使用浏览器登录,并使用变量将这些 cookie 设置为 JMeter cookie。

于 2014-05-26T17:05:50.763 回答
0

您可以使用 JMeter 中的类似方法即时加密密码,例如JSR223 Sampler通过Mozilla RhinoOracle Nashorn提供 JavaScript 语言支持,因此您可以使用与应用程序相同的 JavaScript 代码来加密密码。

但是从性能的角度来看,JavaScript 语言不是很有效,如果您需要模拟数百个并发用户,因此您必须每秒执行数百次加密 JavaScript 可能会成为瓶颈,最好考虑使用带有 JSR223 Sampler 的 groovy 语言. 请参阅Beanshell 与 JSR223 与 Java JMeter 脚本:您一直在等待的性能下降!详细说明指南,有关 groovy 引擎安装和脚本最佳实践的说明。

于 2016-01-02T06:38:24.447 回答