Linux(Ubuntu)環境下使用Fiddler

海鳥發表於2015-05-03

自己的開發環境是Ubuntu, 對於很多優秀的軟體但是又沒有Linux版本這件事,還是有點遺憾的。比如最近遇到一個問題,在分析某個網站的請求路徑和cookie時就遇到了問題。本來Chome瀏覽器自帶的開發者工具對我這種後臺開發程式來說足夠了,但是有個場景問題難住了:當網頁有連結開啟一個新的頁面,而且這個新開啟的頁面是在另一個標籤頁中開啟,那麼原來頁面的控制檯不能記錄這個請求資料。我在google找了半天沒找到好的辦法,有個不是辦法的辦法是在chrome位址列裡輸入chrome://net-internals/#events,但是用過就知道太不好用了。一般在這個時候才會想起Windows的好來,起碼可以用Fiddler啊。哦,對,好像有個什麼東西,不是可以跨平臺跑.NET的程式應用嗎,那個是誰,哦,是Mono。本篇文章介紹下在Linux環境下如何使用Fiddler。

首先,你要有個Mono環境,在Ubuntu環境下安裝很簡單,輸入:

sudo apt-get install mono-complete

下載一個最新的Fiddler for Mono版本,我寫這篇文章時最新版本是這個。下載完成後,解壓到你的習慣放置的隨便一個目錄裡。然後cd到目錄下,執行:

tony@tony:~/devs/fiddler$ mono Fiddler.exe

然後熟悉的介面就看到了,怎麼使用的你應該知道了。

Chrome瀏覽器不用進行任何設定,所有請求都會通過Fiddler自動代理,原理就是:當Fiddler啟動時會執行如下指令碼:

gsettings set org.gnome.system.proxy.https port 8888
gsettings set org.gnome.system.proxy.http port 8888
gsettings set org.gnome.system.proxy.http host '127.0.0.1'
gsettings set org.gnome.system.proxy.https host '127.0.0.1'
gsettings set org.gnome.system.proxy mode 'manual'

就是用gsettings命令修改系統的http和https代理引數值,同時用model 'manual'開啟系統級代理開關。當關閉Fiddler程式時,會把model引數值恢復為none,即不開啟代理(這裡提示有的同學,如果你在命令列裡執行mono Fiddler.exe後,然後直接kill 9掉該程式,或者直接在視窗crtl+D結束,可能使Fiddler不能正常設定model引數,導致瀏覽器開啟什麼網頁都是無法訪問,遇到這個問題你知道怎麼辦了吧)。而Chrome瀏覽器預設就是使用系統代理設定,截圖為證:
chrome proxy
而Firefox瀏覽器沒有預設使用系統代理設定,所以手動設定下就好了:
Click Edit > Preferences > Advanced > Network > Settings and choose "Manual Proxy Configuration", Proxy 127.0.0.1, Port 8888, and tick the "Use this proxy server for all protocols" box.

參考:Fiddler Mono

相關文章