前言
有些web項目是前后端不分離的,返回的內容不是那種純進口返回json格式,返回的是一個HTML頁面。
並且有些參數是隱藏在html里面的,需要先從html頁面中取出隱藏參數,如:csrfmiddlewaretoken
場景案例
我這里有個django項目的admin后台頁面為案例

輸入賬號和密碼登錄成功后,抓包發現除了賬號和密碼參數,還有一個參數csrfmiddlewaretoken,並且這個參數每次都是動態的,不是固定值

所以在請求這個login接口的時候,需要先獲取csrfmiddlewaretoken參數,那么這個參數哪來的呢?
csrfmiddlewaretoken是每次在瀏覽器上打開登錄首頁的時候,會自動生成一個隱藏(hidden)的參數csrfmiddlewaretoken

那么接下來就先把這個值提取出來
獲取csrfmiddlewaretoken
先訪問首頁http://127.0.0.1:9000/admin/

保證返回的結果里面能看到csrfmiddlewaretoken對應的值

返回的結果里面有了這個值后,接下來用 XPath 提取器提取出來
XPath 提取器
后置處理器添加 XPath 提取器

使用 xpath 表達式提取html頁面數據,先在谷歌瀏覽器上定位調試,保證能正確定位到

用 XPath 表達式提取

XPath 表達式提取參數說明:
-
Use Tidy:當需要處理的頁面是HTML格式時,必須選中該選項,當需要處理的頁面是XML或XHTML格式(例如,RSS返回)時,取消選中該選項。
-
引用名稱:參數的變量名稱
-
XPath query:用於提取值的XPath表達式: //*[@name='csrfmiddlewaretoken']/@value
-
缺省值:取不到的時候默認值
APPly to:作用范圍(返回內容的斷言范圍)
- Main sample and sub-samples:作用於父節點的取樣器及對應子節點的取樣器
- Main sample only:僅作用於父節點的取樣器
- Sub-samples only:僅作用於子節點的取樣器
- JMeter Variable:作用於jmeter變量(輸入框內可輸入jmeter的變量名稱)
參數關聯
登錄請求fiddler抓包參數如下

jmeter照着寫請求參數就可以了,csrfmiddlewaretoken對應的值使用上面一步提取出來的變量${csrftoken}

添加頭部管理器,參數類型為:Content-Type: application/x-www-form-urlencoded

查看結果
查看請求結果,從結果里面可以看出csrfmiddlewaretoken這個值已經傳過來了

最后的結果失敗403 Forbidden,是因為缺少cookies,無權限訪問

關於cookies的管理器后面再講 https://www.cnblogs.com/yoyoketang/p/11963342.html
上海-悠悠,QQ交流群:750815713
