JMeter介面測試-HTTPS驗證登入
阿新 • • 發佈:2019-01-09
1.從網上copy一份MD5加密方法,當然一些細節地方需要自己修改,比如要加密的具體內容(我的是ChallengeString:GDS3710IZpRsFzCbM:admin),然後從eclipse中匯出md5.jar包
2.eclipse的工程截圖
3.匯出jar包
4.將匯出的jar包放到JMeter安裝目錄下的lib資料夾下
5.開啟JMeter,新建測試計劃,新增執行緒組,新建BeanShell Sampler,並寫入以下測試內容
新增監聽器->檢視結果樹,執行測試,可以看到JMeter控制檯中輸出了加密後的字串
檢測加密結果是否正確,在百度上搜索“md5線上加密”
我加密的資料是5c1110a935c062e1ee672d9f98e7be56:GDS3710IZpRsFzCbM:admin
String param="${ChallengeString}";
String pass=MD5Util.getMD5(param);
System.out.println(pass);
你們在測試的時候可以將這一段修改為:
String pass=MD5Util.getMD5("hello");
System.out.println(pass);
然後你的加密資料是hello:GDS3710IZpRsFzCbM:admin
因為我的ChallengeString是從上一個http請求的返回資料中獲取到的,所以如果是僅僅測試加密是否成功的話,給param賦一個定值就行了
與上述視窗列印的資料是一致的,說明md5.jar包匯入正確,並且對資料成功加密。
2.JMeter如何將上一個請求的結果作為下一個請求的引數---使用正則表示式提取器
正則表示式提取器是一個後置處理器,作用是在請求完成後,從響應資料中擷取一部分字串儲存到變數中,以便下一個請求使用,下面我們就來做一個簡單的例子吧(有些地方也是參考一個大神部落格寫的,如有冒犯,請多原諒!)
1.在第一個HTTP請求下新增正則表示式提取器
2.在第一個HTTP請求新增好IP地址,路徑,埠號,協議,方法,如果有引數,還需要新增引數
3.點選綠色箭頭啟動,檢視第一個HTTP請求完成後的響應資料
4.第一個HTTP請求完成後的響應資料的ChallengeCode是隨機變化的,每次HTTP請求完成後的響應資料的ChallengeCode是不同的,現在需要獲取第一個HTTP請求完成後的響應資料的ChallengeCode作為BeanShell Sampler的加密引數,這個時候就需要用到正則表示式提取器,正則表示式提取器是一個後置處理器,作用是在請求完成後,從響應資料中擷取一部分字串儲存到變數中,以便下一個請求使用。
5.現在編輯正則表示式提取器
6.說明:
(1)引用名稱:作為下一個請求要用的引數名稱,如填寫ChallengeString,則可用${ChallengeString}引用它來作為BeanShell Sampler的引數
(2)正則表示式用<ChallengeCode></ChallengeCode>包起來,如第一個HTTP請求完成後的響應資料<?xml version="1.0" encoding="UTF-8" ?><Configuration><ResCode>0</ResCode><ChallengeCode>5c1110a935c062e1ee672d9f98e7be56</ChallengeCode><LoginType>0</LoginType><RetMsg>OK</RetMsg></Configuration>,我們只需要ChallengeCode,所以正則表示式為<ChallengeCode>(.+?)</ChallengeCode>,()表示括起來的部分就是要提取的。
.表示匹配任何字串。
+表示一次或多次。
?表示不要太貪婪,在找到第一個匹配項後停止。
(3)模板:用$$引用起來,如果在正則表示式中有多個正則表示式,則可以是$2$,$3$等,表示解析到第幾個值給ChallengeString。如:$1$表示解析到的第1個值,我們這裡只有一個正則表示式,所以是$1$。
(4)匹配數字:0代表隨機取值,1代表全部取值,通常情況下填1。
(5)預設值:如果引數沒有取得值,那預設給一個值讓它取,通常情況下為空。
7.正如我前面寫到的BeanShell Sampler程式中有一句程式碼:String param="${ChallengeString}";這句程式碼的意思就是使用第一個HTTP請求返回的資料。點選執行。
注:如果是要獲取第一個HTTP的響應資料的URL地址的後面數字作為第二個HTTP的引數,做法也是一樣的,只是正則表示式不一樣。 如第一個HTTP請求完成後的響應資料{"status":"ok","message":"建立房間成功","data":{"url":"https://www.pp2pp.xyz/room/58ff022f5cd4c32ae9a7f457"}} 如果我們只需要URL後面的數字58ff022f5cd4c32ae9a7f457,那麼正則表示式為 "url":"https://www.pp2pp.xyz/room/(.+?)"
最終HTTPS驗證登入成功
3.JMeter如何實現session保持
既然都驗證登入成功了,那我們總得搞點事情吧?所以光登入成功還不行,還要繼續下一步的操作。這就要用到HTTP Cookie管理器。
新增HTTP Cookie管理器後,那麼現在就可搞事情啦!!!!!!!!!
package com.cjh.md5; import java.security.MessageDigest; import java.util.Scanner; /* * message-digest algorithm 5(資訊摘要演算法) * md5的長度預設是128bit * 128/4=32,換成16進製表示後為32位了 * */ public class MD5Util { //測試方法 /*public static void main(String[] arg) { Scanner scan=new Scanner(System.in); String ChallengeString,pwd1; System.out.println("請輸入ChallengeString"); ChallengeString=scan.next(); pwd1 = ":GDS3710lZpRsFzCbM:admin"; System.out.println("加密前: "+ChallengeString+pwd1); System.out.println("加密後: "+MD5Util.getMD5(ChallengeString+pwd1)); } */ /*生成md5 * */ public static String getMD5(String message) { String md5str=""; String pwd=":GDS3710lZpRsFzCbM:admin"; String pwd2=message+pwd; try { //1.建立一個提供資訊摘要演算法的物件,初始化為md5演算法物件 MessageDigest md=MessageDigest.getInstance("MD5"); //2.將訊息變成byte陣列 byte[] input=pwd2.getBytes(); //3.計算後獲得位元組陣列,得到的是128位的字串 byte[] buff=md.digest(input); //4.把陣列每一位元組(一個位元組佔8位)轉換成16進位制的字串 md5str=bytesToHex(buff); } catch (Exception e) { e.printStackTrace(); } return md5str; } /* * 二進位制轉換十六進位制 * * / */ public static String bytesToHex(byte[] bytes) { StringBuffer md5str=new StringBuffer(); //把陣列每一位元組轉換成16進位制連城md5字串 int digital; for (int i = 0; i < bytes.length; i++) { digital=bytes[i]; if(digital<0){ digital+=256; } if (digital<16) { md5str.append("0"); } md5str.append(Integer.toHexString(digital)); } return md5str.toString().toLowerCase(); } }
2.eclipse的工程截圖
3.匯出jar包
4.將匯出的jar包放到JMeter安裝目錄下的lib資料夾下
5.開啟JMeter,新建測試計劃,新增執行緒組,新建BeanShell Sampler,並寫入以下測試內容
//匯入jar包 import com.cjh.md5.MD5Util; //呼叫md5Hex方法生成最終的加密串 String param="${ChallengeString}"; String pass=MD5Util.getMD5(param); System.out.println(pass); //將生成的加密串賦值給變數authcode,這樣可以便於後續的使用 vars.put("code",pass);
新增監聽器->檢視結果樹,執行測試,可以看到JMeter控制檯中輸出了加密後的字串
檢測加密結果是否正確,在百度上搜索“md5線上加密”
我加密的資料是5c1110a935c062e1ee672d9f98e7be56:GDS3710IZpRsFzCbM:admin
String param="${ChallengeString}";
String pass=MD5Util.getMD5(param);
System.out.println(pass);
你們在測試的時候可以將這一段修改為:
String pass=MD5Util.getMD5("hello");
System.out.println(pass);
然後你的加密資料是hello:GDS3710IZpRsFzCbM:admin
因為我的ChallengeString是從上一個http請求的返回資料中獲取到的,所以如果是僅僅測試加密是否成功的話,給param賦一個定值就行了
與上述視窗列印的資料是一致的,說明md5.jar包匯入正確,並且對資料成功加密。
2.JMeter如何將上一個請求的結果作為下一個請求的引數---使用正則表示式提取器
正則表示式提取器是一個後置處理器,作用是在請求完成後,從響應資料中擷取一部分字串儲存到變數中,以便下一個請求使用,下面我們就來做一個簡單的例子吧(有些地方也是參考一個大神部落格寫的,如有冒犯,請多原諒!)
1.在第一個HTTP請求下新增正則表示式提取器
2.在第一個HTTP請求新增好IP地址,路徑,埠號,協議,方法,如果有引數,還需要新增引數
3.點選綠色箭頭啟動,檢視第一個HTTP請求完成後的響應資料
4.第一個HTTP請求完成後的響應資料的ChallengeCode是隨機變化的,每次HTTP請求完成後的響應資料的ChallengeCode是不同的,現在需要獲取第一個HTTP請求完成後的響應資料的ChallengeCode作為BeanShell Sampler的加密引數,這個時候就需要用到正則表示式提取器,正則表示式提取器是一個後置處理器,作用是在請求完成後,從響應資料中擷取一部分字串儲存到變數中,以便下一個請求使用。
5.現在編輯正則表示式提取器
6.說明:
(1)引用名稱:作為下一個請求要用的引數名稱,如填寫ChallengeString,則可用${ChallengeString}引用它來作為BeanShell Sampler的引數
(2)正則表示式用<ChallengeCode></ChallengeCode>包起來,如第一個HTTP請求完成後的響應資料<?xml version="1.0" encoding="UTF-8" ?><Configuration><ResCode>0</ResCode><ChallengeCode>5c1110a935c062e1ee672d9f98e7be56</ChallengeCode><LoginType>0</LoginType><RetMsg>OK</RetMsg></Configuration>,我們只需要ChallengeCode,所以正則表示式為<ChallengeCode>(.+?)</ChallengeCode>,()表示括起來的部分就是要提取的。
.表示匹配任何字串。
+表示一次或多次。
?表示不要太貪婪,在找到第一個匹配項後停止。
(3)模板:用$$引用起來,如果在正則表示式中有多個正則表示式,則可以是$2$,$3$等,表示解析到第幾個值給ChallengeString。如:$1$表示解析到的第1個值,我們這裡只有一個正則表示式,所以是$1$。
(4)匹配數字:0代表隨機取值,1代表全部取值,通常情況下填1。
(5)預設值:如果引數沒有取得值,那預設給一個值讓它取,通常情況下為空。
7.正如我前面寫到的BeanShell Sampler程式中有一句程式碼:String param="${ChallengeString}";這句程式碼的意思就是使用第一個HTTP請求返回的資料。點選執行。
注:如果是要獲取第一個HTTP的響應資料的URL地址的後面數字作為第二個HTTP的引數,做法也是一樣的,只是正則表示式不一樣。 如第一個HTTP請求完成後的響應資料{"status":"ok","message":"建立房間成功","data":{"url":"https://www.pp2pp.xyz/room/58ff022f5cd4c32ae9a7f457"}} 如果我們只需要URL後面的數字58ff022f5cd4c32ae9a7f457,那麼正則表示式為 "url":"https://www.pp2pp.xyz/room/(.+?)"
最終HTTPS驗證登入成功
3.JMeter如何實現session保持
既然都驗證登入成功了,那我們總得搞點事情吧?所以光登入成功還不行,還要繼續下一步的操作。這就要用到HTTP Cookie管理器。
新增HTTP Cookie管理器後,那麼現在就可搞事情啦!!!!!!!!!