我正在尝试运行 JMeter 脚本,但登录时失败。原因是,密码是使用 RSA 算法加密的,那就是使用 javascript。所以录制时保存的密码不起作用,我无法获得加密密码的动态值,因为它是使用 JMeter 不支持的 javascript 加密的。由于在运行时使用 javascript,我不能使用正则表达式来查看响应数据,因为这不是响应的一部分。
我正在尝试登录 Tableau 报告服务器。
我正在尝试运行 JMeter 脚本,但登录时失败。原因是,密码是使用 RSA 算法加密的,那就是使用 javascript。所以录制时保存的密码不起作用,我无法获得加密密码的动态值,因为它是使用 JMeter 不支持的 javascript 加密的。由于在运行时使用 javascript,我不能使用正则表达式来查看响应数据,因为这不是响应的一部分。
我正在尝试登录 Tableau 报告服务器。
我在使用 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 是否相同,但希望这可以帮助您了解您需要做什么。
我也没有找到并回答这个问题,但我所做的是每次运行测试时将tableau_online_id和workgroup_session_id cookie 放入用户变量中。
所以我首先使用浏览器登录,并使用变量将这些 cookie 设置为 JMeter cookie。
您可以使用 JMeter 中的类似方法即时加密密码,例如JSR223 Sampler通过Mozilla Rhino或Oracle Nashorn提供 JavaScript 语言支持,因此您可以使用与应用程序相同的 JavaScript 代码来加密密码。
但是从性能的角度来看,JavaScript 语言不是很有效,如果您需要模拟数百个并发用户,因此您必须每秒执行数百次加密 JavaScript 可能会成为瓶颈,最好考虑使用带有 JSR223 Sampler 的 groovy 语言. 请参阅Beanshell 与 JSR223 与 Java JMeter 脚本:您一直在等待的性能下降!详细说明指南,有关 groovy 引擎安装和脚本最佳实践的说明。