《Fiddler調試權威指南》——第1章 引言 1.1 起源
本節書摘來自異步社區《Fiddler調試權威指南》一書中的第1章,第1.1節,作者:【美】Eric Lawrence著,更多章節內容可以訪問雲棲社區“異步社區”公眾號查看
第1章 引言
1.1 起源
首先,坦白地說,開發Fiddler Web調試器時,並沒有什麼偉大的願景或期望—要做一個全世界最受歡迎的調試代理。它隻是由具體需求觸發,應運而生。我從未打算構建一個功能如此靈活而強大的複雜平台。因為它的複雜性,我不得不花費九個月的時間來寫這本書,為的就是介紹如何充分利用Fiddler。我們真的做到了!
在深入介紹技術細節之前,首先分享一下Fiddler背後的故事。
1999年春天,我還是馬裏蘭大學的學生,得到了微軟的一個新團隊的程序經理(Program Manager)職位的麵試機會。在最後一輪麵試中,麵試官的第一個問題是“HTTP是如何工作的?”我對此隻是略知皮毛,因此給了個不完整也不太準確的回答,但還不至於讓自己很難堪。從那個暑假開始,我的工作是參與第一版SharePoint的開發。我偶爾會使用Microsoft Network Monitor (NetMon)查看網絡數據流。Microsoft Network Monitor(NetMon)是一個功能強大的數據包探嗅器(packet sniffer),但很原始很難用。2001年暑假剛開始,我正式加入微軟公司,工作職位是Office Clip Art organizer客戶端和網站的程序經理。
當時,我所在團隊的大多數開發和測試人員都不熟悉Web開發,他們之前主要是用C和C++實現本地運行的應用。很快,調試過程過於繁瑣這個問題就凸顯出來—很多同事都不願意使用NetMon。我甚至看到一些開發人員用如下方式調試HTTP請求—把鼠標停留在Visual Studio的某些變量上,查看十六進製形式的原始數據流,如圖1-1所示。
圖1-1
在過去幾年,我編寫了一些小工具,因此有信心實現一個使得Web調試變得簡單的工具。最初的方案是基於已有的C++代理服務器,對其做些修改,從而可以把HTTP流輸出到係統控製台,如圖1-2所示。
圖1-2
這種方案說它多差都不為過—這個代理無法處理安全數據流或認證協議。非文本形式的內容的顯示也是個問題——可笑的是,該工具還會把二進製內容當成ASCII碼顯示。老式控製台用戶可能還記得八進製的0x07代表的是字符“bell”,因此當控製台顯示0x07時,係統就會發出聲響。因此,這個調試代理發布後,由於測試人員使用時會遇到二進製數據流,Office Online團隊的走廊就會不斷響起像拉斯維加斯的賭場那樣的聲響。
雖然有煩人的缺陷,但這個工具還是很受歡迎,這激發我開始考慮下一個版本。我使用Borland Delphi快速實現了一個小演示程序,Borland Delphi是我當時工作時最常用的開發工具。其彩色UI界麵是Fiddler的最終外觀的基礎,如圖1-3所示。
圖1-3
然而,在考慮了使用本地代碼編寫代理服務器所涉及的安全和內存管理問題後,我決定使用C#語言來實現新版本,該語言是由Visual Studio團隊開發的,我一個很好的朋友加入了該團隊。於我而言,通過.NET從零開始實現HTTP代理服務器麵臨兩大挑戰:一是我不是很了解HTTP是如何工作的;二是我不會用C#。
幸運的是,花錢買幾本書,以及利用大量的周末閑餘時間,我很快克服了這兩個不足。其中有兩本書是我的良師益友:《HTTP: The Definitive Guide》和《C# Cookbook》。通過一章章的學習,我了解了HTTP是如何工作,以及如何用C# .NET編程,也開始慢慢地實現Fiddler。大約半年後,我完成了Fiddler的第一個版本,如圖1-4所示。
圖1-4
同樣,這個版本也存在很多不足(錯誤也是不計其數),但是同事們都積極采用了它,因為之前的版本不斷地發出蜂鳴聲,他們電腦的音箱都快崩潰了。
隨後幾年,Fiddler有了很大改進,它包含兩個擴展模塊,一是自動生成和修改響應的機製,二是支持加密的(HTTPS)數據流、FTP和HTML5 WebSockets。
最後更新:2017-06-06 07:33:36