2013-07-26 69 views
0

我想運行一個JMeter腳本,但它在登錄時失敗。原因是,密碼正在使用RSA算法進行加密,並使用JavaScript。所以在錄製時保存的密碼不能正常工作,並且我無法獲得加密密碼的動態值,因爲它使用JMeter不支持的JavaScript進行加密。由於在運行時使用javascript,我不能使用正則表達式來查看響應數據,因爲這不是響應的一部分。如何捕獲在jmeter中使用JavaScript創建的動態值

我正在嘗試登錄到Tableau報表服務器。

回答

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」是基於這是由服務器傳遞給你與你的密碼encript字符串我創建了一個變量。該字符串可以在LoginPage的源代碼中找到。

「crypted_Password」是我爲POST加密參數創建的變量。

RSAKey(),setPublic()和encrypt()包含在您訪問登錄頁面時從服務器下載的.js文件中。我只是將這些文件包含到我的項目庫中,並且工作正常。

我不知道JMeter是否是一樣的,但希望這有助於你理解你需要做什麼。

0

我沒有找到,太回答這個,但我所做的就是把tableau_online_idworkgroup_session_id餅乾用戶變量,每次我運行測試時間。

因此,我首先使用瀏覽器登錄,並使用變量將這些cookie設置爲JMeter Cookie。

0

您可以使用JMeter的類似的方法飛加密的密碼,例如JSR223 Sampler提供JavaScript語言支持通過Mozilla RhinoOracle Nashorn這樣你就可以使用相同的JavaScript代碼的應用程序不加密的密碼。

但是從性能的角度來看,JavaScript語言並不是非常高效,如果您需要模擬數百個併發用戶,那麼您將不得不每秒執行數百次加密JavaScript可能會成爲瓶頸,最好考慮使用groovy語言與JSR223採樣器。有關詳細說明,請參閱Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!指南,有關groovy引擎安裝和腳本最佳實踐的說明。

相關問題