自己的開發環境是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瀏覽器預設就是使用系統代理設定,截圖為證:
而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