1. 程式人生 > >Fiddler大師之路系列(一)

Fiddler大師之路系列(一)

wow detach field font rul col 打開 時有 情況

江湖傳言,Fiddler是捕獲客戶端與服務器之間的所有HTTP(S) 請求的利器,但是在具體使用過程中,發現使用Fiddler進行抓包時有一部分請求總是沒到,多方苦尋之下發現客戶端使用WinINET這套API發送的請求都能正常抓到,而使用WinHTTP這套API發送的請求都沒有抓到,遂搜索了一下,發現Fiddler對各種HTTP(s) stacks都是能支持的,只是默認啟動時只是接管了WinINET代理設置。


分析


為了讓Fiddler能夠抓取WinHTTP的包,需要做的就是讓WinHTTP的代理設置改為與WinINET一致,因為WinINET在Fiddler啟動後使用Fiddler作為代理。這些通過windows自帶命令就可以做到:


在XP下: proxycfg -u

在Win7下(使用管理員權限的命令行):netsh winhttp import proxy ie

註:在Win7 64位系統下需要將Synstem32 目錄和SysWOW64目錄下的netsh命令各執行一次,下方將給出的腳本已覆蓋這種情況。

但是如果使用頻繁,每次都還要去手動敲命令行還是挺痛苦的,作為能偷懶的地方絕不多放過的少年,一勞永逸的方法當然是讓它隨Fiddler的啟動與關閉自動執行這些命令

實現

這可以通過修改CustomRules.js實現。操作方法:打開Fiddler > 點擊菜單Rules > 點擊Customize Rules...

打開CustomRules.js文件後,尋找到OnAttach與OnDetach函數,可以將Fiddler啟動後與關閉前需要定制的一些自動動作分別填寫在它們裏頭,為實現讓Fiddler能抓取WinHTTP發送的請求的目的而修改後的代碼如下,添加了 UpdateWinHTTPSettings函數,在OnAttach和OnDetach裏添加了對它的調用,修改完後保存,重新啟動Fiddler即可生效:

技術分享
註:UpdateWinHTTPSettings函數裏做的事情其實很簡單,就是使用管理員權限執行文章前面說到的命令

Fiddler大師之路系列(一)