Fiddler是即時(shí)抓包分析工具,對(duì)于測(cè)試WEB程序很有意義。Fiddler的魅力之處是提供了功能強(qiáng)大的基于JScript .NET事件腳本子系統(tǒng),方便用戶(hù)二次開(kāi)發(fā)。
將網(wǎng)絡(luò)訪(fǎng)問(wèn)信息以文本文件形式及時(shí)存儲(chǔ)到硬盤(pán)。網(wǎng)上有現(xiàn)成的代碼記錄請(qǐng)求信息:
由于上述方法存儲(chǔ)的文本文件,不便于檢索操作,更有甚者,如果不對(duì)所有訪(fǎng)問(wèn)記錄進(jìn)行過(guò)濾,則由于文件的打開(kāi)和關(guān)閉過(guò)于頻繁而來(lái)不及響應(yīng)而報(bào)錯(cuò)。
最簡(jiǎn)單的數(shù)據(jù)庫(kù)是ACCESS,但是“.”、“?”等特殊字符無(wú)法存取。可考慮較為通用的SQLServer數(shù)據(jù)庫(kù),可以存取URL所包含的特殊字符。
Fiddler采用代理訪(fǎng)問(wèn)的工作模式,轉(zhuǎn)發(fā)網(wǎng)絡(luò)數(shù)據(jù)包,如果需采集局域網(wǎng)內(nèi)的計(jì)算機(jī)通過(guò)出口訪(fǎng)問(wèn)數(shù)據(jù),需將主機(jī)配置成代理上網(wǎng)服務(wù)器。其它配置方式參考《Fiddler調(diào)試權(quán)威指南+PDF電子書(shū)》4.4配置客戶(hù)端部分。
在主機(jī)上配置SQL Server數(shù)據(jù)庫(kù)服務(wù)器。如:設(shè)置SQL驗(yàn)證訪(fǎng)問(wèn),用 戶(hù) 名 為“fidd”,密碼 為“fiddaccess”。 創(chuàng)建 數(shù) 據(jù) 庫(kù) capture,表recorder, 字 段 ttime,varchar(50)記錄時(shí)間;字段 uurl,varchar(8000) 記錄 Url信 息;字 段hhost,varchar(200)記錄被訪(fǎng)問(wèn)主 機(jī) 名 ;字 段clientip,varchar(20)記錄請(qǐng)求訪(fǎng)問(wèn)主機(jī)IP地址信息;字段rrefere,varchar(2000) 記錄自何頁(yè)面連接的主機(jī)名。
安 裝 Fiddler,打開(kāi)Customize Rules.js就 可寫(xiě)入腳本。如果菜單下沒(méi)有Rules->Customize Ruless,根據(jù)提示下載Fiddler ScriptEditor后,可 打開(kāi)Customize Rules.js文件。
Customize Rules.js中包含OnBeforeRequest(oSession:Session) 和OnBeforeResponse(oSessio n: Session)兩大功能函數(shù)。本文目標(biāo)是采集請(qǐng)求訪(fǎng)問(wèn)的網(wǎng)絡(luò)資源,故只需在OnBeforeRequest(oSession:Session)函數(shù)的最后部分寫(xiě)入代碼即可,代碼如下:
保存腳本文件后,運(yùn)行Filddler。所有通過(guò)代理的訪(fǎng)問(wèn)請(qǐng)求均被捕捉,并且執(zhí)行上述代碼將需要的信息及時(shí)保存到recorder表中。
使用數(shù)據(jù)庫(kù)Express版,連接字符串寫(xiě)成Server=(local)\SQLExpress,若是服務(wù)版直接寫(xiě)計(jì)算機(jī)名或IP地址。對(duì)數(shù)據(jù)表Recorder中的記錄進(jìn)行匯總分析可得到各Http請(qǐng)求訪(fǎng)問(wèn)的相關(guān)信息,可構(gòu)成簡(jiǎn)單、實(shí)用的網(wǎng)絡(luò)監(jiān)控、審計(jì)、分析研判系統(tǒng)。
借助Customize Rules.js可擴(kuò)展很多功能。比如只要添加2行代碼可實(shí)現(xiàn)防火墻功能:
if (oSession.fullUrl.Contains("**.net"))//需阻止訪(fǎng)問(wèn)的網(wǎng)站
oSession.oRequest.pipeClient .EndWithRST()。