自己的開發環境是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