Jmeter HTTP COOKIE Manager

參考網址:

http://smilejay.com/2013/04/login-wordpress-with-jmeter/

http://wangsheng14591.blog.163.com/blog/static/327797102012829101351887/

早期的JMeter版本(2.3.2或更早)對與cookie的管理是支持跨域的,也就是說不同域名的網站都可以使用cookie manager中 的cookie,2.3.2版本之後,這個就不可以了,必須同源,才能共用cookie,如果你想讓JMeter的cookie manager支持跨域, 修改bin/JMeter.properties

CookieManager.check.cookies=false

接受到的cookie會被自動存儲在線程變量中,但是從Jmeter2.3.2版本後,默認不再存儲,如果你想要manager自動存儲收集到的cookie,

你需要修改bin/JMeter.properties

CookieManager.save.cookies=true

存儲的時候,cookie的key會以“COOKIE_”爲前綴命名(默認情況),如果你想自定義這個前綴,修改bin/JMeter.properties
CookieManager.name.prefix=
這個配置如果未啓用(也就是維持默認),我們可以通過一下方式獲取到cookie的值:${COOKIE_name},其中name爲cookie的名稱

除了自動收集,我們還可以手動添加cookie,儘量不要一個一個手動去填寫,我們可以結合firefox的插件firebug,直接將cookie導入

點擊紅色框中的,下拉框中有個導出本站點的cookie,就可以將cookie信息保存爲一個cookies.txt文件,接着打開jmeter的cookie manager

Cookie Manager中的參數說明
Name	                         自定義該cookie的描述,例如:tuan.qq.com的cookie
###########################################################################################################
Clear Cookies each Iteration	 每次線程組運行前,都會清楚cookie,但是如果是手動添加的cookie,不會被清除
###########################################################################################################
Cookie Policy                    選擇cookie的管理策略,建議選擇compatibility,兼容性強
<pre name="code" class="java">###########################################################################################################
User-Defined Cookies 用戶自定義cookie
###########################################################################################################




深入瞭解Jmeter的Cookie管理首先,設置是否檢查Cookie的有效性,代碼在:apache-jmeter-2.9/src/protocol/http/org/apache/jmeter/protocol/http/controlCookieManager.java
public class CookieManager 
{
...
    private static final boolean CHECK_COOKIES =
        JMeterUtils.getPropDefault("CookieManager.check.cookies", true);// $NON-NLS-1$
...
}
然後在 HC3CookieHandler.java 中調用CookieSpec類的validate方法來檢查Cookie,如下:
public void addCookieFromHeader(CookieManager cookieManager,
                boolean checkCookies,String cookieHeader, URL url) {
...
                if (checkCookies) {
                    cookieSpec.validate(host, port, path, isSecure, cookie);
                }
...
}
最後在HttpClient中的檢查Cookie的validate()方法的判斷邏輯如下:
src/java/org/apache/commons/httpclient/cookie/CookieSpecBase.java
(在線代碼瀏覽:http://hc.apache.org/httpclient-3.x/xref/org/apache/commons/httpclient/cookie/CookieSpecBase.html)
public void validate(String host, int port, String path, 
        boolean secure, final Cookie cookie) {
..
         if (!path.startsWith(cookie.getPath())) {
             throw new MalformedCookieException(
                 "Illegal path attribute \"" + cookie.getPath() 
                 + "\". Path of origin: \"" + path + "\"");
         }
...
}







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章