Fiddler使用技巧及常见问题
一、会话列表中添加显示服务器IP和应用服务器:
1>.点击 Rules -> CustomRules,编辑Fiddler的配置脚本
2>.找到 static functionMain()
3>.在方法最后加入几行代码,点击保存
代码:
//显示服务器web环境
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP",120,"X-HostIP");
//显示服务器IP地址
FiddlerObject.UI.lvSessions.AddBoundColumn("Server",120,"@response.server");
4>.重启 Fiddler ,拖到滚动条,可以在显示结果的最后方看见服务器IP和应用服务器信息。
二、无法代理本地web服务器的访问请求
使用fiddler的时候,我们更多的是基于本地程序的调试,可惜fiddler捕捉不了本地(localhost或127.0.0.1)的http请求。难道fiddler就束手无策了吗?当然不是。 一般我们访问安装在本地的服务器程序时,使用的localhost或127.0.0.1,默认会绕过代理,直接访问目标服务器,通过fiddler特有的请求方式,可以使本地请求及响应都被fiddler拦截。
方法一:在localhost后增加.fiddler
比如请求http://localhost:8080改为http://localhost.fiddler:8080即可
方法二:更简单,在localhost或127.0.0.1后增加一个点即可
比如http://localhost.:8080
三、fiddler模拟限速
Fiddler的模拟限速是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和上传速度,从而达到限速的效果。
1>.自定义速度 Rules—>Customize Rules
计算公式:(1KB/下载速度)*1000 = 需要delay的时间(毫秒),比如50kB/s 需要delay20毫秒来接收数据,所以根据你需要的网络速度来修改上述值。
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150";
}
2>.开启限速 Rules—>Performances,勾选SimulateModem Speeds
3>.不同网络上下行速度设置可以参考NetworkLink Conditioner
2G:上行440msdelay(1000/440=2.3KBps=18kpbs),下行400ms delay(1000/400=2.5KBps=20kpbs)
四、解决HTTPS请求显示“Tunnelto 443”
一般来说,出现“Tunnel to 443”的情况有两种。
第一种是手机没有安装Fiddler证书,解决的方法就是安装证书。具体的方法看上面的介绍。
第二种就是Fiddler作为代理服务器在发送Https请求的时候,进行的连接认证。是Fiddler Connect的信息,表明Fiddler在进行转发的时候,使用了Tunnel(隧道)技术。原文介绍如下:
The selected session is a HTTP CONNECT Tunnel. This tunnel enables aclient to
send raw traffic (e.g. HTTPS-encrypted streams or WebSocket messages)through
a HTTP Proxy Server (like Fiddler)
这种情况是不会影响到Fiddler抓包的,如果你觉得看着别扭,可以这样设置一下Fiddler,勾选
Rules
>
Hide Connects
五、Fiddler安装证书
具体步骤如下,以android手机为例:
1.打开浏览器,输入http://[FIDDLERSERVER]:[Port],点击页面的FiddlerRoot.cer下载链接(以我的情况为例,输入http://192.168.191.1:8888 ,要保证PC端的fiddler打开)。此时会下载fiddlerRoot.cer文件
2.下载完成后,进入设置 > 安全 > 从存储设备安装证书> 选择刚刚下载的fiddlerRoot.cer文件,点击安装,提示安装成功。
3.再次打开fiddler进行抓包,抓包解析成功
4.部分浏览器点击下载链接的时候会自动弹窗提示安装,点击安装即可。
5.苹果手机安装证书的时候,需要使用自带的safari浏览器。
六、测试HTTPS协议,使不同协议请求显示不同颜色
2、在Fiddle中,点击Rules
> CustomRules
,在弹出的脚本文件中选择第一个方法 OnBeforeRequest
3、在该方法中添加如下脚本(其中的“yuming”是指你要测试的域名,可以是完整的域名,也可以是一部分),保存并关闭脚本文件;
static function OnBeforeRequest(oSession: Session){
if(oSession.isHTTPS && oSession.url.indexOf("yuming ")> -1){
oSession["ui-color"] = "green";
}
if(!oSession.isHTTPS && oSession.url.indexOf("yuming ")> -1){
oSession["ui-color"] = "red";
}
}
这时手机与代理相连;就可以看到所有“yuming”的Https请求;均被标记为绿色;Host中带有“yuming”的非HTTPS请求;均显示为红色;
这样就比较方便的看出哪些接口没有走https协议了。
这样就比较方便的看出哪些接口没有走https协议了。 PS : 可结合Filters功能,过滤掉不关心的url;
以上就是Fiddler一些常用的功能介绍,更多功能请参考Fiddler使用手册,欢迎指正补充。