本文章轉(zhuǎn)載于搜狗測試
背景
江湖傳言,F(xiàn)iddler是捕獲客戶端與服務(wù)器之間的所有HTTP(S) 請求的利器币厕,但是在具體使用過程中曹宴,發(fā)現(xiàn)使用Fiddler進行抓包時有一部分請求總是沒到,多方苦尋之下發(fā)現(xiàn)客戶端使用WinINET這套API發(fā)送的請求都能正常抓到揪利,而使用WinHTTP這套API發(fā)送的請求都沒有抓到态兴,遂搜索了一下,發(fā)現(xiàn)Fiddler對各種HTTP(s) stacks都是能支持的疟位,只是默認(rèn)啟動時只是接管了WinINET代理設(shè)置瞻润。
分析
為了讓Fiddler能夠抓取WinHTTP的包,需要做的就是讓W(xué)inHTTP的代理設(shè)置改為與WinINET一致,因為WinINET在Fiddler啟動后使用Fiddler作為代理绍撞。這些通過windows自帶命令就可以做到:
在XP下: proxycfg -u
在Win7下(使用管理員權(quán)限的命令行):netsh winhttp import proxy ie
注:在Win7 64位系統(tǒng)下需要將Synstem32 目錄和SysWOW64目錄下的netsh命令各執(zhí)行一次正勒,下方將給出的腳本已覆蓋這種情況。
但是如果使用頻繁楚午,每次都還要去手動敲命令行還是挺痛苦的昭齐,作為能偷懶的地方絕不多放過的少年,一勞永逸的方法當(dāng)然是讓它隨Fiddler的啟動與關(guān)閉自動執(zhí)行這些命令
實現(xiàn)
這可以通過修改CustomRules.js實現(xiàn)矾柜。操作方法:打開Fiddler > 點擊菜單Rules > 點擊Customize Rules...
打開CustomRules.js文件后阱驾,尋找到OnAttach與OnDetach函數(shù),可以將Fiddler啟動后與關(guān)閉前需要定制的一些自動動作分別填寫在它們里頭怪蔑,為實現(xiàn)讓Fiddler能抓取WinHTTP發(fā)送的請求的目的而修改后的代碼如下里覆,添加了 UpdateWinHTTPSettings函數(shù),在OnAttach和OnDetach里添加了對它的調(diào)用缆瓣,修改完后保存喧枷,重新啟動Fiddler即可生效:
注:UpdateWinHTTPSettings函數(shù)里做的事情其實很簡單,就是使用管理員權(quán)限執(zhí)行文章前面說到的命令