本身的开发环境是Ubuntu, 对于不少优秀的软件可是又没有Linux版本这件事,仍是有点遗憾的。好比最近遇到一个问题,在分析某个网站的请求路径和cookie时就遇到了问题。原本Chome浏览器自带的开发者工具对我这种后台开发程序来讲足够了,可是有个场景问题难住了:当网页有连接打开一个新的页面,并且这个新打开的页面是在另外一个标签页中打开,那么原来页面的控制台不能记录这个请求数据。我在google找了半天没找到好的办法,有个不是办法的办法是在chrome地址栏里输入chrome://net-internals/#events
,可是用过就知道太很差用了。通常在这个时候才会想起Windows的好来,起码能够用Fiddler啊。哦,对,好像有个什么东西,不是能够跨平台跑.NET的程序应用吗,那个是谁,哦,是Mono。本篇文章介绍下在Linux环境下如何使用Fiddler。chrome
首先,你要有个Mono环境,在Ubuntu环境下安装很简单,输入:浏览器
sudo apt-get install mono-complete
下载一个最新的Fiddler for Mono版本,我写这篇文章时最新版本是这个。下载完成后,解压到你的习惯放置的随便一个目录里。而后cd到目录下,运行:bash
tony@tony:~/devs/fiddler$ mono Fiddler.exe
而后熟悉的界面就看到了,怎么使用的你应该知道了。cookie
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 Monothis