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