為什么要保存請(qǐng)求堡距?
做這件事最重要的目的之一就是,最近我需要實(shí)現(xiàn)一個(gè)簡(jiǎn)單的驗(yàn)證服務(wù)器接口正確性的這么一個(gè)測(cè)試工具(腳本)班缰,順便把這(保存會(huì)話)記錄下來(lái)分享給大家光酣。
有時(shí)間我會(huì)把我初步的想法整理好分享出來(lái)厦瓢,大家一起來(lái)探討它的可行性高镐,它不一定適用你們的業(yè)務(wù)溉旋,但是非常適合我項(xiàng)目的業(yè)務(wù)。雖然它也可能難產(chǎn)嫉髓,但是我想盡力去做观腊、去完成,也算鞏固一下自己的知識(shí)算行,應(yīng)用到項(xiàng)目中去梧油。
保存單個(gè)請(qǐng)求
選中某個(gè)請(qǐng)求,右鍵就能看到菜單中的Save
![單個(gè)請(qǐng)求](https://testerhome.com/photo/2016/4cec983f2b216f3dce3e1a9c96426594.png)
- Selected Sessions
- in ArchiveZIP 保存為saz文件州邢,其實(shí)就是一個(gè)zip格式文件
- as Text 以txt文件形式保存整個(gè)會(huì)話包括Headers/Request/Response
- as Text (Headers only) 僅保存頭部
- Request 保存請(qǐng)求信息
- Response 保存響應(yīng)體儡陨,即服務(wù)器返回的數(shù)據(jù)
- and Open as Local File 保存Response信息,并打開(kāi)文件
打開(kāi)保存的請(qǐng)求文件
- POST類型
![POST](https://testerhome.com/photo/2016/cbdf5ed962728c64a06cb067fd9426a6.png)
- GET類型
![GET](https://testerhome.com/photo/2016/0503b503a85f4afea77a6d2388671700.png)
亂碼的解決方法
相信細(xì)心的你也注意到了量淌,前面POST類型的請(qǐng)求迄委,Response body是亂碼,這并不是我們希望看到的类少。那樣怎么做呢?下面貼張圖渔扎,你就秒懂了硫狞。
![Decode](https://testerhome.com/photo/2016/ae5990c0482045962a76e45f1c23f9f2.png)
沒(méi)錯(cuò),就是Response body Fiddler默認(rèn)采用了GZIP壓縮晃痴,只要我們勾選None残吩,再導(dǎo)出就不是亂碼了
![Not decode](https://testerhome.com/photo/2016/9f535f2728208123e42365cdd23836ec.png)
保存所有請(qǐng)求
菜單File >> Save >> All Sessions,文件將以saz的形式保存下來(lái)(實(shí)際就是一個(gè)ZIP文件倘核,也可以加密保存)
SAZ是一種以.SAZ為后綴的文件格式泣侮。SAZ是Session Archive Zip的縮寫。 SAZ文件用于保存HTTP請(qǐng)求的信息紧唱。 在Fiddler軟件使用SAZ格式用來(lái)保存和讀取HTTP請(qǐng)求信息活尊。
_index.htm : 一個(gè)可選文件,便于用戶直接閱讀漏益。這個(gè)文件在SAZ文件被加載時(shí)不會(huì)被處理蛹锰,僅僅用于手工檢查。
raw文件夾:包含所有的記錄了網(wǎng)絡(luò)Sesison信息的文件绰疤。
在raw文件夾內(nèi)铜犬,對(duì)于每一個(gè)網(wǎng)絡(luò)Sesison,會(huì)有三個(gè)文件:
sessid#_c.txt:包含客戶端請(qǐng)求
sessid#_s.txt : 包含服務(wù)器端請(qǐng)求
sessid#_m.txt:包含一些元數(shù)據(jù),比如:Session標(biāo)志位癣猾,socket重用信息敛劝,等等。
![Save All Sessions](https://testerhome.com/photo/2016/786ce00472128acefea9be90bd2c8cbd.png)
自動(dòng)保存請(qǐng)求的猜想
- 過(guò)濾掉無(wú)關(guān)的請(qǐng)求纷宇,只關(guān)注自己想要的請(qǐng)求
- 利用Fiddler的Customize Rules實(shí)現(xiàn)過(guò)濾(也可利用Filters功能實(shí)現(xiàn)過(guò)濾 >> 簡(jiǎn)便夸盟、快捷),自動(dòng)保存
- js 實(shí)現(xiàn)過(guò)濾時(shí)呐粘,如果已經(jīng)保存過(guò)的請(qǐng)求满俗,可以考慮不再保存(可選)
自動(dòng)保存已實(shí)現(xiàn)
2016.07.21 14:20更新
經(jīng)過(guò)一上午的踩坑,終于把自動(dòng)保存功能實(shí)現(xiàn)了作岖,下面分享給大家唆垃。
先來(lái)看一張自動(dòng)保存的請(qǐng)求片段
![Session](https://testerhome.com/photo/2016/b722c20b1f1d92fdaeac499a0085735b.png)
重點(diǎn)來(lái)了,下面是實(shí)現(xiàn)的js代碼
操作步驟
- Fiddler菜單 >> Rules >> Customize Rules
- 如果提示沒(méi)有下載Fiddler ScriptEditor則按提示下載后進(jìn)入下一步操作
- 安裝好Fiddler ScriptEditor后痘儡,就能打開(kāi)Customize Rules.js文件
- 編輯Customize Rules.js文件辕万,并保存
- 重啟fiddler
保存Request
把下面代碼貼在OnBeforeRequest()
方法末尾
//過(guò)濾無(wú)關(guān)請(qǐng)求,只關(guān)注特定請(qǐng)求
if (oSession.fullUrl.Contains("szhome.com"))
{
var fso;
var file;
fso = new ActiveXObject("Scripting.FileSystemObject");
//文件保存路徑沉删,可自定義
file = fso.OpenTextFile("D:\\Fiddler Sessions\\Sessions.txt",8 ,true, true);
file.writeLine("Request url: " + oSession.url);
file.writeLine("Request header:" + "\n" + oSession.oRequest.headers);
file.writeLine("Request body: " + oSession.GetRequestBodyAsString());
file.writeLine("\n");
file.close();
}
保存Response
把下面代碼貼在OnBeforeResponse()
方法末尾
//過(guò)濾無(wú)關(guān)請(qǐng)求渐尿,只關(guān)注特定請(qǐng)求
if (oSession.fullUrl.Contains("szhome.com"))
{
oSession.utilDecodeResponse();//消除保存的請(qǐng)求可能存在亂碼的情況
var fso;
var file;
fso = new ActiveXObject("Scripting.FileSystemObject");
//文件保存路徑,可自定義
file = fso.OpenTextFile("D:\\Fiddler Sessions\\Sessions.txt",8 ,true, true);
file.writeLine("Response code: " + oSession.responseCode);
file.writeLine("Response body: " + oSession.GetResponseBodyAsString());
file.writeLine("\n");
file.close();
}