發送請求
在fiddler中也支持發送HTTP請求。就是通過Composer這個功能來進行發送請求
功能入口
功能介紹
- Parsed:解析后的報文.它是已經格式化后的,在這里你只需要按照區域展示把相應的數據填寫后就可以發送HTTP請求了。
- Raw:原始報文 ,在此選項框中輸入的請求必須按照HTTP請求格式輸入,否則會報錯。輸入的HTTP請求也可以發送。
- Scratchpad:可以保存多條原始報文,發送的時候,選中其中一條發送就可以了 。
- Option:Inspector Session:使用同一個 Session 進行連接(同一個域名或者主機的情況下)Fix Content-Length Header: 當你發送 Post,Put 請求時,自動加上或者修正 Header 中的 Content-Length.Follow Redirect:自動跟蹤 HTTP 狀態碼為 3xx 返回帶 Location 的請求。Automatically Authenticate:自動進行身份驗證。Tear Off:將 Composer 變成一個浮動窗口。
案例實現
案例需求:通過fiddler請求禪道登錄頁面,登錄地址:
https://demo.zentao.net/user-login.html。
實現步驟:
- 首先通過抓包找到該地址所需要填寫的請求方法,請求參數,請求地址(已知)
- 打開fiddler,選中Composer,這里以Raw選項為例(備注:填寫到另外兩個框也可以),點擊Execute。
- 查看左側的登錄請求,你會發現剛才通過compose發送的HTTP請求通用也可以在fiddler中看到。
便捷操作
除了通過以上填寫對應的數據請求以外,fiddler還提供了一種更便捷的操作,就是可以直接將抓到的包拖動Composer其中的一個選項卡中,然后進行請求調試后發送。
最后想說的是,雖說這個功能也能發送請求,但是如果說只是為了去發送請求或做接口測試。我們沒理由不去選擇更加專業的postman或者jmeter來完成。那么它的實際使用場景是什么呢 ?我在做接口調試或接口測試時,由于開發編寫的接口文檔并不完善,所以每個接口都需要借助抓包工具來確定其請求參數。只有知道了這些具體參數,我們才能往測試工具中填寫接口請求數據 。那這里面就會涉及到每個接口的請求參數中那些是必填的,那些是非必填的;以及每個參數的數據類型,列表取值等都可以通過Composer這個工具進行快速測試。
性能監控
通過進行性能測試或監控都會用到專業的性能測試工具來完成,如jmeter,loadrunner等。但是在fiddler中其實也可以對每個請求報文的數據做性能分析。比如每個請求的響應時間以及響應時間中各階段的所花時間。
Statistics
打開Statistics會看到一堆的數據展現,其實這些數據就是統計的某一個或多個請求報文的各項指標 。
- Request Bytes,通過這幾個數值,可以看到一個或多個請求的數據大小Request Count : 統計請求的總數,Bytes Sent: 發送字節數Bytes Received:接受的字節數 。
- ACTUAL PERFORMANCE,實際的性能統計,在這一欄里完整地記錄了一個請求從客戶端發送發起經過fiddler,再到服務器再返回的整個過程。指標很多,主要看關鍵的。ClientConnected: 客戶端連接時間 ClientBeginRequest: 客戶端開始請求時間 GotRequestHeaders: 獲取到請求頭時間 ClientDoneRequest: 客戶端完成發送時間 ... ServerConnected: 服務器收到連接時間 FiddlerBeginRequest: fiddler開始發送請求時間 ServerGotRequest: 服務端收到請求時間 ServerBeginResponse: 服務端開始響應時間 GotResponseHeaders: 獲取響應頭時間 ServerDoneResponse: 服務端完成響應時間 ClientBeginResponse: 客戶端開始接受響應時間 ClientDoneResponse: 客戶端完成響應時間
- RESPONSE BYTES (by Content-Type) 響應字節數,數據不再展示
- ESTIMATED WORLDWIDE PERFORMANCE : 世界各地的預估的性能時間
那么通過上面這個圖以及根據我們說的性能時間做個比對,就會知道這個請求的響應時間是0.280s,客戶端發送時間是:11:00:42.194 ;服務端開始返回時間:11:00:42.471,客戶端接收完成時間:11:00:42.474 。
Timeline
在Timeline下,我們可以選擇一個或者多個請求,就會查看到這些請求對應的響應時間。那么通過這些數據你就可以分析你的頁面或接口的性能情況。
除了以上功能,還可以進行如下操作:
- Copy Chart:右擊選擇Copy chart 可以將生成時間線圖拷貝到其它地方 。
- Mode選擇:右擊可以選擇Mode,有三種Mode 分別是:TimeLine ,Client Pipe Map , Server Pipe Map ;
修改請求
標題:通過fiddler的AutoResponder修改請求,實現你的mock測試
有時候我們要測試的功能,因為會調用到第三方系統或接口,測試時就會受到很多限制,比如測試一個賬戶充值功能,如果第三方接口只提供了線上接口,那么我們測試時就需要真的要充值真金白銀。那么有沒有一個辦法可以不需要充值真金白銀也可以完全進行測試呢? 那就是通過mock測試 。 mock的實現方式有很多種,這里來介紹通過fiddler的AutoResponder來完成mock測試 。
功能入口
通過AutoResponder,可以實現將捕獲到的請求進行修改其響應數據,從而來完成我們想要的結果。下面的就是AutoResponder入口。
功能介紹
既然是修改其響應數據,那么就需要添加規則,通過添加規則后,fiddler只要匹配到這些規則后,就會將修改后的數據返回給客戶端。下面介紹其主要功能
選項說明
- Enable Rules : 勾選該復選框,設置的規則生效,反之不會生效 。
- Unmatched requests passthrough : 勾選該復選框 ,不匹配規則的請求會正常發送到服務器 。不勾選此復選框,不匹配的都返回404 。
- Enable Latency : 為請求設置延時時間 ,單位毫秒 。
添加規則
添加規則有多種方式,具體如下:
- 第一種:直接點擊Add Rule ,就會在Rule Editor中生成字符串的規則,此規則是以正則匹配。匹配到此規則后將執行修改后的響應數據 。
- 第二種:從左側選擇一條請求,點擊Add Rule ,也會在Rule Editor中生成一條精確匹配URL的規則 。
- 第三種:從左側拖動一條請求到右側,就會自動生成一條精準匹配的URL規則 。
- 第四種:通過Import請求包后,生成規則 。
以上四種方法,除了第一種是通過正則匹配,其它三種都是精確匹配 。
規則 |
匹配項 |
* |
匹配所有接收的請求 |
string->baidu |
字符串匹配,不區分大小寫,匹配url中含有baidu的請求。 |
EXACT:https://www.baidu.com/ |
精確匹配,匹配url中完全等于https://www.baidu.com/的鏈接 |
修改請求
通過以上的規則添加,我們還需要給其設置返回結果 ,修改返回結果一般也會有以下幾種情況。
- 案例1:修改返回數據,現將請求天氣接口的響應數據修改后返回給給客戶端。
- 實現思路:就是將天氣接口的響應數據保存到一個文件中,然后在規則中引用這個文件即可,具體如下
- 案例2:地址重定向,請求天氣接口后將其重定向到網易地址。
- 實現思路:只需要在請求的天氣接口中將返回修改成網易地址即可。
- 案例3:模擬返回狀態碼,請求天氣接口后使其進行用戶認證。
- 實現思路:用戶認證需要使其狀態碼返回401,故請求天氣接口時將其返回狀態碼設置為401。
除了以上功能外,可以給請求設置延遲,斷點等 。
請求分組
當你要設置的請求很多時,我們還可以多請求進行分組管理 。同時分組后的請求也可以通過unGroup解除分組。
編輯請求
很多情況下當我們要修改的數據比較復雜時,我們也可以通過Edit Response進行操作修改其數據,具體操作如下 。
其它功能:
當添加進來的請求,我們可以右擊對其進行各種操作,如圖:
- Remove : 刪除請求
- Promote : 向上移動
- Demote :向下移動
- Clone : 克隆一條心的請求
- Set Latency : 設置延遲時間 ,點擊后會彈出個輸入框,在輸入框輸入時間后,相應的時間后才會返回請求 。注意時間單位為毫秒
- Set Comment :設置備注
- Edit Response :編輯響應 ,上面我們演示過這個功能
- Generate File : 生成文件
- Edit File With ... :通過其它方式編輯,如通過notepad++編輯都是可以的 。
- Open URL :在瀏覽器中直接打開這個地址
- Group :設置分組
- UnGroup : 取消分組
- Find : 查找
- Export All :導出,通過這個功能可以將修改的請求備份到本地,使用導入即可 。
說在最后,這個功能的使用范圍很廣,它可以修改頁面也可以修改接口,也就是說無論前后端人員的某一端人員沒有按時提交功能時,我們都可以使用其模擬返回數據 。比如當接口不能正常提交前端或測試人員時,我們就可以通過這個功能,模擬其返回值 。 這樣就可以不依賴接口了而進行接口調試或測試了。這正是我們開頭說的mock測試 。
FiddlerScript
在使用fiddler的一些功能中,很少會使用到FiddlerScript這個功能。但經過研究后,發現這個功能實在是強大,不敢說它能實現目前fiddler的全部功能,但是大致過了一遍,主要功能都可以通過它來進行擴展 。那么問題來了,既然fiddler已經提供了很完善豐富的功能,那么我們為什么還會用使用這個功能呢?這就像問使用工具和代碼的區別,使用工具簡單易用,但不易擴展;反之,使用代碼擴展性強,更能滿足我們的需求,但是學習成本高。
功能入口
在fiddler中有兩個入口都可以進入到FiddlerScript中,具體如下:
打開的文件其實是FiddlerScript的Rules文件,通過修改此文件,可以創建一些菜單命令,也可以修改或添加新命令 。
此文件的原始文件名為SampleRules.js,位于...ProgramsFiddlerScripts文件夾下,當我們打開FiddlerScript編輯其內容時,它將在...DocumentsFiddler2Scripts文件夾下創建一個名為CustomRules.js的文件。也就是說我們修改的文件并非是源文件,而是它拷貝出的一個副本。運行時也是這個副本文件(CustomRules.js)
功能介紹
打開的文件,其實就是一個Handlers類,這個類中有很多方法,但主要使用的內容包括四部分,分別是菜單命令以及三個主要方法(OnBeforeRequest,OnBeforeResponse,OnExecAction)。
菜單命令
菜單命令其實就是指在Rules下拉列表中的一些選項,這些選項和代碼中是一一對應的,通過修改代碼,也會影響菜單的顯示。
這些菜單選項中最為常用的就是Performance-Simulate Modem Speeds,通過它進行限速處理,從而進行弱網測試,網絡不穩定的測試。
設置弱網
選擇
Rules-Performance-Simulate Modem Speeds后,下面的這部分代碼將被執行到,我們可以通過修改其后的值來模擬網絡帶寬。
if (m_SimulateModem) {
//每延遲300ms發送1kb的數據,也就是每1s發送3kb的數據
oSession["request-trickle-delay"] = "300";
// 每延遲150ms下載1kb的數據
oSession["response-trickle-delay"] = "150";
}
為了更真實的模擬網絡情況,我們也可以將后面的值設置成動態值。每發送一次數據就獲取一個動態值,從而模擬網絡抖動的情況,這樣就可以進行網絡不穩定的模擬測試 。
//模擬網絡抖動
static function randInt(min, max) {
return Math.round(Math.random()*(max-min)+min);
}
static function OnBeforeRequest(oSession: Session) {
...
if (m_SimulateModem) {
oSession["request-trickle-delay"] = ""+randInt(1,300);
oSession["response-trickle-delay"] = ""+randInt(1,150);
}
}
自定義菜單
若我們想加一個自定義的選項,來實現我們的功能,
那么你可以在此選項自定義你的功能,我這里就以打印Hello Fiddler為例,當選擇Test選項時,你在日志中就會看到有Hello Fiddler輸出。
//把這段代碼放在OnBeforeRequest函數中。
if(m_Test){
//實現你的需求,我這里就打印出"hello fiddler"
FiddlerObject.log("Hello Fiddler");
}
可以想象一下,如果我在這里定義的功能是實現輸出每個請求的自定義請求和響應數據,類似于fiddler的Inspectors功能,是不是很酷啊。
OnBeforeRequest
這個函數中實現的是請求數據,通過修改代碼,就可以實現包括請求url,請求方法,請求頭,請求體的數據進行新增、修改、刪除、顯示等。
請求著色
為了快速查找我們關注的請求,我們經常會給請求標注某種顏色來加以區分,那么接下來就通過修改代碼給每個請求著色。
比如我們想要給url中含有html的請求加紅色,你只需要在OnBeforeRequest函數的開頭加入這么一句代碼后保存,后續符合條件的請求就都會變為紅色
當然你喜歡其它的顏色,你只需把后面的red修改為其它的值就可以了 。具體支持哪些值呢?看下圖
自定義請求數據
若我們要通過自定義方式查看請求數據,就可以是在OnBeforeRequest函數中加個判斷,然后將我們關注的請求數據輸出 。這就類似于Inspectors的查看請求功能。
案例:將url中包含demo.zentao.net的請求輸出其url,method,headers,body等信息。
實現思路:在OnBeforeRequest中加入url中包含demo.zentao.net的判斷,在判斷中編寫輸出信息代碼,保存腳本后 。
if(oSession.uriContains("demo.zentao.net"))
{
FiddlerObject.log("請求url:"+oSession.fullUrl);
FiddlerObject.log("請求方法:"+oSession.RequestMethod);
FiddlerObject.log("請求頭:"+oSession.RequestHeaders)
FiddlerObject.log("請求體數據:"+oSession.GetRequestBodyAsString());
FiddlerObject.log("===============================================");
}
然后在日志上就可以看到輸出信息,具體如下:
修改請求數據
在前面我們學習過,通過斷點可以修改請求數據,那么通過此函數也可以來實現請求數據的修改 。
案例:登錄禪道的正確賬號demo,那么我通過修改其賬號讓其登錄失敗 。
實現思路:獲取到禪道登錄頁面的請求體數據后,將登錄賬號demo替換為其它(如test),保存腳本。
if(oSession.uriContains("https://demo.zentao.net/user-login.html"))
{
//將請求中的demo替換為test
oSession.utilReplaceInRequest("demo","test");
}
替換后,進入到Inspectors中查看輸入賬號的地方,發現賬號已被替換為test了 。且禪道的登錄頁面也返回了登錄失敗的提示。
OnBeforeResponse
這個函數實現的是響應數據,你可以在該函數對狀態行、響應頭以及響應體中的數據進行新增,修改,刪除及查詢等。
自定義響應數據
若我們只想查看所關注請求的響應數據,那么就可以在OnBeforeResponse加個判斷,然后我們把關注的信息數據輸出即可。
案例:將url中包含demo.zentao.net的響應輸出其響應狀態碼和響應體信息。
實現思路:在OnBeforeResponse中加入一個判斷url包含demo.zentao.net,然后判斷實現輸出狀態碼和響應體的輸出信息,保存腳本 。
if(oSession.uriContains("demo.zentao.net"))
{
FiddlerObject.log("響應狀態碼:"+oSession.responseCode);
FiddlerObject.log("響應體數據:"+oSession.GetResponseBodyAsString());
}
同樣的進入日志模塊就會看到響應數據的輸出日志 。
修改響應數據
同樣我們也可以對返回的數據進行修改或者自定義返回數據。
案例:禪道登錄成功后,默認跳轉到了首頁,現將修改其跳轉到‘測試’標簽頁 。
實現思路:禪道登錄后,返回的響應體數據是個json數據:{"result":"success","locate":"index"},其locate對應的值就是控制跳轉到那個頁面,現可以將此值修改為qa就會自動跳轉到測試標簽頁。
if(oSession.uriContains("https://demo.zentao.net/user-login.html"))
{
FiddlerObject.log("修改后的響應體數據:"+oSession.utilReplaceInResponse('index','qa'));
}
替換后,進入到Inspectors中查看響應體數據,發現index已經替換為qa了 。且登錄后的頁面也跳轉到了測試頁面。
OnExecAction
此函數已在QuickExec中做過詳細的介紹,這里不再展開。
1)實現更多擴展
以上介紹了FiddlerScript中最基本常用的一些功能擴展,那如果你需要開發一個更加復雜且要符合你項目的定制功能,那么你就離不開它提供的函數,只有對這些函數非常的熟悉和了解,我們才能更好的應用它。點擊ClassView就可以看到
展開它的任何一個類,下面都有很多的屬性和方法,其作用從其命名上也能猜出其大致含義,或者點擊任一個方法或屬性,在上面都會展示出其功能說明 ,然后我們放在上面的兩個方法中去試,你就能定制針對fiddler個人功能了。
綜上所述,通過FiddlerScript功能,我們可以設置過濾,設置弱網,請求著色,自定義菜單,自定義查看的請求和響應數據,修改請求數據,修改和自定義返回數據 。同樣它也支持導出/導入請求 。
設置斷點
在功能測試時,經常會遇到要輸入不同的數據來驗證不同的輸出 ,這其中有好多的輸入數據是很比較難以構造的,比如我們要測試個購物功能,在購物前系統會自動定位你的位置 ,那么這個位置就相當于已經幫初始化好了,當我們要測試其它位置的話 ,在App或web系統中就很難修改 。怎么辦呢 ? 其中的一種方法就是通過fiddler的斷點功能將其位置數據修改 ,然后讓其返回對應的數據 。
基本原理
在了解該功能的使用前,我們先簡單地來了解下它的大致原理,下面一張圖就是在開啟fiddler的前后,客戶端與服務端的數據交互過程。可以看出,在沒有fiddler接入前,客戶端和服務端交互主要有以下三個步驟
- 客戶端發送請求給服務端
- 服務端處理客戶端的請求數據(在圖中沒有體現)
- 將處理后的結果返回給客戶端
當開啟fiddler以后,客戶端與服務端的交互都會先經過fiddler,這樣發送給服務器的數據或返回給客戶端的數據就都能截取到,從而進行篡改操作 。這基本就是fiddler的斷點原理 。
設置斷點
在fiddler中設置斷點有兩個位置,設置斷點的請求在開頭都有這樣一個標志:
,在fiddler中有兩處可以設置斷點。
其中,第一處就是通過Rules-Automatic Breakpoints設置斷點 。
- Before Request :選擇此選項,所有請求都會被設置斷點,且所有的請求數據都將暫停發送到服務器。暫停的每一條數據都可以進行編輯其請求和響應數據,然后再發送到服務器。
- After Responses :選擇此選項,所有請求也都會被設置斷點,但是它是將服務器返回的數據暫停,暫停的每一條數據都可以編輯其響應數據,然后再發返回給客戶端 。和Before Request所不同的是,After Responses只能修改響應(返回)數據,而Before Request既可以修改請求數據,也可以修改響應數據 。
- Disabled : 取消斷點,
- Ignore Images :忽略給圖片設置斷點 。
需要注意的是,取消斷點除了以上設置外,還可以通過go進行恢復,也可以命令恢復(后續介紹)
第二處是在左下方輸入斷點命令。和上面設置斷點不同的是,在命令輸入框中輸入是針對單個請求設置的斷點。
這個命令輸入框中支持很多命令,其中就包括斷點的命令 ,那么具體都包含哪些斷點命令?我們不妨先輸入個bp試試看。
也就是說設置斷點的命令支持如下四個命令
- bpu :這個命令可以理解為bpurl的縮寫。產生的效果和上面的befor Request是一樣的,也就是說既可以修改請求數據,也可以修改響應數據。當在命令輸入框內輸入:bpu +空格 + 請求的URL + 回車 , 那么符合條件的url相對應的請求就會被中斷 。
- bpm : 這個命令就相當于bpmethod,所以在輸入框輸入:bpm +空格+ 請求方法+ 回車,那么符合條件的請求方法相對應的請求就會被中斷 。
- bps : 這個命令就是bpstatus的縮寫,在輸入框輸入:bps + 空格 + 響應狀態碼 + 回車,符合條件的狀態碼的相對應請求就會被中斷 。
- bpafter :這個命令和上面after responses效果一樣,只能修改響應數據 。 當然這個命令也可以輸入bpa,兩者的效果。在輸入框輸入:bpafter + url + 回車,符合條件的url就會被中斷 。
需要說明的是,以上通過命令設置斷點,也可以通過命令清除斷點,清除斷點只需要輸入關鍵詞就可以了,比如我通過bpu 設置的斷點,那么清除斷點時只需要輸入bpu回車即可 。
修改請求
若按照上面條件設置斷點后,符合條件的請求就會中斷,這時選中一個中斷的請求,點擊Inspectors后,你就看有下面的這個圖
以上這個截圖有三個可操作的按鈕,分別是:
- Break on Response : 點擊后,該請求在返回給客戶端前設置斷點,這時就只能修改響應數據了 。
- Run to Completion : 點擊該按鈕后,不管是否對數據做了修改,都將會返回數據客戶端,如果修改了,客戶端收到的數據也是修改后的數據。
- Choose Response : 除了上面直接修改響應數據外,也可以選擇預定義好的數據作為響應數據 。
案例說明
案例1:在禪道的登錄頁面,將該請求的正確密碼修改為錯誤的密碼,使其返回登錄失敗的提示 。
實現思路:在命令輸入框中輸入bpu
https://demo.zentao.net/user-login.html后回車,將請求數據中的密碼修改成錯誤的密碼即可。
案例2:使用請求方法過濾,在禪道登錄頁面,通過修改響應數據使其跳轉到測試頁面(備注:禪道登錄成功后默認跳轉的是我的地盤頁面)。
實現思路:命令輸入框中輸入: bpm post后回車,修改登錄成功地返回數據,將跳轉路徑指向測試頁面地址即可。
案例3:將接口返回的數據修改為預定義數據后返回。
實現思路:需要在本地新建一份預定義數據,設置打斷點后,加載預定義數據即可 。
綜上案例可以看出,通過fiddler的斷點功能,我們既可以修改發送服務器的請求數據,也可以修改返回給客戶端的響應數據 。那么再回到本文開頭的話題,很多情況下,測試數據難以構造,那么就可以通過這個功能隨便修改各類數據 ,以滿足我們的測試需求 。
快速執行(QuickExec)
當我們使用fiddler進行抓包時,經常會出現大量的請求在窗口滾動出現,這時就很難找到我們所關注的請求。那最好的辦法就是通過篩選條件找到我們想要的請求,在fiddler中也提供了快速查找請求功能 。就是在左下角的快速執行欄中輸入命令進行查詢 。
功能入口
快速執行命令框如下圖所示,在此命令輸入框內可以輸入各種命令,其主要包括請求篩選查詢、設置斷點、以及一些其它命令 。
接下來先介紹兩個快捷設置命令。
- Alt+q : 將焦點快速移動到QuickExec輸入框
- Ctrl+i :選中一個請求,按Ctrl+i所選請求的url就會插入到此命令框中,這個命令很有用,比如我們設置斷點,斷點命令后每次要輸入url太過麻煩,那么通過這個命令快速插入url就非常的方便。
支持命令
在QuickExec中支持很多命令,命令列表如下
分類 |
指令 |
示例 |
說明 |
查詢報文 |
?searchtext |
?demo.zentao.net |
突出顯示URL包含demo.zentao.net的請求 |
|
>size |
>40000 |
突出顯示響應數據大于40kb的請求 |
|
<size |
<5kb |
突出顯示響應數據小于5kb的請求 |
|
=status_code |
=302 |
突出顯示響應狀態碼為302的請求 |
|
=method |
=post |
突出顯示請求方法為post的請求 |
|
@host |
@demo.zentao.net |
突出顯示主機包含demo.zentao.net的請求 |
|
bold text |
bold zentao |
將url中包含zentao的請求加粗顯示 |
|
select response-Content-Type |
select text/html |
突出顯示響應頭Content-type中包含text/html的請求 |
|
allbut response-Content-Type |
allbut text/html |
隱藏所有請求,響應頭Content-Type中包含text/html的請求除外 |
斷點 |
bps status_code |
bps 400 |
中斷所有狀態碼為400的請求 |
|
bpm or bpv method |
bpm post 或bpv post |
中斷所有請求方法為post的請求 |
|
bpu url |
bpu demo.zentao.net |
中斷所有url包含demo.zentao.net的請求,注意請求和響應數據都可以修改。 |
|
bpafter url |
bpafter demo.zentao.net |
中斷所有url包含demo.zentao.net的請求,注意只能修改響應數據。 |
|
g |
g |
恢復所有中斷的請求 |
其它 |
dump file |
dump c:a.saz |
將所有請求保存到c:a.saz文件中 |
|
start |
start |
開啟錄制功能,默認狀態下開啟的 |
|
stop |
stop |
停止錄制功能,注意停止后無法抓包。 |
|
quit |
quit |
退出fiddler |
|
hide |
hide |
隱藏fiddler |
|
show |
show |
打開隱藏的fiddler,此命令需在cmd窗口輸入 |
|
cls or clear |
cls 或 clear |
清除所有請求 |
需要說明的是,以上命令不僅可以在fiddler中QuickExec中執行,同時也支持在cmd窗口中執行 。后面我們會介紹如何在cmd窗口中執行 。
命令解析
以上那么多的命令,我們怎能記得住,難道每次使用時都要查閱文檔? 其實完全不用 ,我們也可以直接在fiddler中更快捷的找到這些命令。那就是到FiddlerScript的OnExecAction函數去查找 。
OnExecAction函數含義
那么這個函數到底有什么用呢 ? 我們先來看下此函數前的注釋是啥意思 ?
// The OnExecAction function is called by either the QuickExec box in the Fiddler window,
// or by the ExecAction.exe command line utility.
翻譯過來大致意思是:
- 通過Fiddler窗口中的QuickExec框調用OnExecAction函數,也就是說我們在左下角使用QuickExec欄執行的命令,其實就是調用的這個函數 。
- 第二句話的意思是它也可以通過ExecAction.exe這個程序執行命令,在那執行呢?就是我們上面說的cmd窗口 。
命令含義
接下來我們通過2個命令來解析下,看看到底啥意思?
- bold 命令解析
case "bold":
if (sParams.Length<2) {uiBoldURI=null; FiddlerObject.StatusText="Bolding cleared"; return false;}
uiBoldURI = sParams[1]; FiddlerObject.StatusText="Bolding requests for " + uiBoldURI;
return true;
此命令的主要作用就是將符合條件的請求設置成粗體展示。那么通過此代碼可以看出,它需要接受2個參數,第一個當然是關鍵字bold,如果第二個參數沒有輸入,那么就將之前設置的粗體清除掉 ,并且將信息“Bolding cleared”打印在fiddler窗體;若接收到了第二個參數,那么就把符合第二個參數(此參數接受的是url)的請求設置成粗體,并將信息打印到fiddler窗體。
- g 命令解析
case "go":
UI.actResumeAllSessions();
此命令的作用就是將所有已設置斷點的請求重新恢復,可以看出它調用的是另外一個函數,這些函數都可以在ClassView找到 。
通過以上兩個命令的解析,我們再去看其它命令,你會發現大多數的命令都是這樣的語法,也就能理解這些命令的具體使用 。
案例說明
案例1:將禪道首頁進行加粗顯示
實現思路:在QuickExec命令行中輸入bold
https://demo.zentao.net/my/回車,然后再次請求該頁面即會被加粗顯示。
案例2:篩選所有請求中包含demo.zentao.net的請求。
實現思路:在QuickExec命令行中輸入?demo.zentao.net回車即可。
案例3:通過在cmd窗口下執行命令,使禪道首頁加粗顯示。
實現思路:在cmd窗口下執行:execaction "bold https://demo.zentao.net/"回車,后續符合條件的請求即被加粗顯示。
通過以上的操作演示,可以看出,通過QuickExec的命令可以完成如下功能,包括且不限于:快速查詢請求、設置/恢復斷點、導出請求、刪除請求等操作。
工具欄功能
本文主要介紹工具欄中的一些小功能,這些功能中多數用處不大,但是也有一些可以幫我們提高效率的功能。
Comment
此功能位于WinConfig后面,類似于消息的圖標。主要作用就是給請求添加備注或評論信息,方便查閱 。
操作步驟:就是選中一條請求,在彈出的對話框中輸入備注信息 。然后就會在列中展示你的備注信息 。此功能和Filters結合起來使用會更加實用,實現后的效果如下圖
Replay
重新回放請求 ,回放和正常接收到的區別主要在于:回放的請求相當于是從fiddler發起請求到服務器端,最后返回給fiddler,跟客戶端沒什么關系。
操作步驟:按住shift選中一條或多條請求,點擊Replay,就會將選中的請求重新請求一次 。
也可以長按shift不松,選中一條或多條,點擊Replay,會彈出一個對話框,可以填寫循環播放的次數 。點擊OK就會循環回放n次。
這個功能有什么實際作用 ?個人覺得主要有這么兩個使用場景。
- 回歸測試,比如被測系統中有個用戶模塊,模塊中可以對用戶進行增、刪、改、查 。作為流程測試,我們就可以進行新增-修改-查詢-刪除的操作序列。當后續進行回歸測試時就可以將這幾條請求回放,從而達到回歸測試的目的 ;
- 穩定性測試,通過它循環播放,讓某幾個請求循環播放 ,已達到此功能穩定性測試 。比如一個支付功能,我們為了驗證其穩定性,就可以通過這個設置進行循環多次支付,已驗證是否每次都可以支付成功。當然,回放過程中可能會有一些技術問題需要解決。
Go
在fiddler中我們會經常使用斷點,當斷點進來后,如何讓斷點恢復呢?選中斷點的請求,點擊Go按鈕,就可以使斷點的請求恢復。
Any Process
選中前面的圖標,移動到某個應用上,那它就只會監控來自此應用的請求數據。但經過實測,當拖放到瀏覽器上的時候,發現并不一定有效,原因是瀏覽器自動會啟動多個進程,拖放時并不能拖動到當前請求頁面的進程上。
Browse
選中一個請求,選擇其支持的瀏覽器,可以直接在瀏覽器中打開,如在fiddler抓取到了百度網頁,那么,如果想再次訪問,直接使用這個功能就可以打卡,無需跳出fiddler。
TextWizard
轉碼小工具,它支持多種格式的轉碼,它也支持將請求數據發送到此工具中。
如下面的這個url有encode編碼,我們需要把它轉化成中文,可以選中此url右擊,選中Send to TextWizard.那么就會自動打開TextWizard并顯示選中的數據 。
那么這個url轉碼后是這樣的 。
還有一種最常見的Unicode編碼轉中文,經過實測,通過TextWizard并不能轉碼成功。比如下面這個接口請求返回的數據為
{"code":0,"data":{"province":"u6c5fu82cf","city":"u8fdeu4e91u6e2f","sp":"u79fbu52a8"}}
現將該數據轉化為中文,但是通過TextWizard是無法轉化成功的,也可能是自己設置的不對 ,現將圖貼出來,可以研究下 。
但是通過在線轉碼工具就可以轉化成功 。
總之,如果可以把unicode進行轉化成功的話,將大大提高我們的效率,因為它支持直接從請求選擇數據發送到該工具中,無需跳出工具。
Tearoff
點擊此按鈕,可以將右側的主功能和請求展示列表分離,方便操作。
其它
工具欄中另外的一些小功能,都是一些簡單的設置
Remove: 刪除所有請求,等效于在QuickExec中執行cls或clear,這個功能經常用,不多說。
Keep:可以選擇保留請求的數量,默認為All Sessions。若選擇一個數量,多余的請求將不再展示。
Find:查詢請求,符合條件的會著色顯示。
Save:保存請求,可以將選中的請求保存為saz格式文件,保存后的請求可以導入 。
Screenshot:截屏,選中的請求點擊此截圖后,截圖會以請求發送fiddler列表中,然后可以點擊此請求可以保存圖片到本地 。
Timer:放在截屏后和瀏覽器之間的一個時鐘圖標,它就是一個簡單的計時器 ,點擊后自動計時,再點擊停止 。右鍵后清空讀秒。
Clear Cache:清除本地緩存