fiddler使用文档.
fiddler使用手册
一、fiddler介绍
二、使用fiddler代理,使手机链接绑定host的无线网络
三、抓取移动端app数据包
四、抓包 截包伪造提交包
五、修改请求的返回数据(mock)
六、查看接口响应时间
七、模拟2G、3G、4G网络参数
八、接口动态转发
九、fiddler常用命令
一、fiddler介绍
简介:Fiddler(中文名称:小提琴)是一个HTTP的调试代理,以代理服务器的方式,监听系统的Http网络数据流动,Fiddler可以也可以让你检查所有的HTTP通讯,设置断点,以及Fiddle所有的"进出"的数据(一般用来抓包)工作原理:Fiddler是以代理WEB服务器的形式工作的,浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,浏览器默认通过自己发送HTTP请求到服务器,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler开启会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序
二、使用fiddler代理,使手机链接绑定host的无线网络
1、设置本地host
2、打开工具-设置-链接,设置默认端口号
3、使用手机链接公司无线网络:Trucmk1,并且设置代理
三、抓取移动端https的请求
1、设置fiddler:在工具-设置中勾选对应项
2、下载证书:完成链接fiddler代理后,访问本地链接,并在本地链接地址后添加默认端口号,即(:8888)。注:ios要使用苹果自带浏览器
注:IOS安装完证书后需要去关于本机-证书信任设置中去信任证书
四、抓包 截包伪造提交包
1、未避免其他请求混淆先使用ctrl + X清空页面,将手机填好信息,准备提交
2、点击页面底部位置开启劫包,修改完信息后,释放请求
五、修改返回数据(mock)
俗话说,没图说个**!来,直接上图
步骤
1.选择要修改返回数据的请求
2.点击AUtoResponder
3.点击Add Rule
4.选择本地想要的返回数据的文件
常见问题:
1.修改完成之后发现没有走本地的返回数据或不是想要的返回数据
答:
1)Enable rules未勾选
2)选择的文件错误或者文件中返回数据有问题
3)Add Rule之后 Rule Editor中多出EXACT: 手动删除保存即可
六、查看接口响应时间
有时候,某些接口访问过慢,我们需要测试接口查看响应时间,从而进行优化。(由于fiddler自带的没有进行响应时间的统计,所以我们需要给他添加新的规则)
首先打开Fiddler,在菜单栏上面找到Rules→CustomRules
crtl+f 查找class Handlers
我们把下面的代码复制到 class Handlers中,如上图所示(我已经复制进去了)
function BeginRequestTime(oS: Session) { if (oS.Timers != null) { return oS.Timers.ClientBeginRequest.ToString(); } return String.Empty; } public static BindUIColumn("Time Taken") function CalcTimingCol(oS: Session){ var sResult = String.Empty; if ((oS.Timers.ServerDoneResponse > oS.Timers.ClientDoneRequest)) { sResult = (oS.Timers.ServerDoneResponse - oS.Timers.ClientDoneRequest).ToString(); } return sResult; }
然后退出Fiddler,再重启就可以了,
如图所示:现在多了一列Time Taken(响应时间)
七、模拟2G、3G、4G网络参数
2G:150Kbps,折合下载速度15-20K/s;
3G:1-6Mbps,折合下载速度120K/s-600K/s
4G:10-100Mbps,折合下载速度1.5M/s-10M/s
限速原理
Fiddler限速是以网络延迟的方式实现的,网络延迟时间*网速=传输字节数。
- 点击Rules – Customize Rules(快捷键Ctrl + R)打开Fiddler ScriptEditor,或者直接点开右侧主页签的FiddlerScript。
image.png
- 打开该文件后,Ctrl + F 查找m_SimulateModem标志位,可以看到如下代码:
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"; }
注释说明:
request-trickle-delay
中的值代表每KB的数据被上传时会被延时多少毫秒;response-trickle-delay
则对应下载时每KB的数据会被延时多少毫秒。比如你要模拟上传速度100KBps的网络,那上传延迟就是1KB/100KBps=0.01s=10ms,就改成10。
当勾选了Simulate Modem Speeds时,request-trickle-delay
与response-trickle-delay
就会被设置,如果本身网速已经相当快的话,
这里设置的值就可以近似地推算出开启模拟后的上传和下载带宽了,比如默认设置下上传延时为300ms下载延时为150ms,可以推算出大致的模拟带宽为:
上传带宽 = 1KB/300ms = (1 * 8/1000) /0.300 ≈ 0.027Mbps
下载带宽 = 1KB/150ms = (1 * 8/1000) /0.150 ≈ 0.053Mbps
(1MB = 1024 KB ≈ 1000 KB 这里为了运算简便就用了1000的倍数,忽略误差)
实际情况下得到的带宽可能会有误差,受各种外因影响不会这么精确。
由此可见下载带宽是上传的两倍,也就是延时越小,带宽越大。带宽和这里的延时是成反比的。
公式换算:https://www.jianshu.com/p/492a1564d16d和https://www.jianshu.com/p/f417d328e0df
八、接口动态转发
regex:https://didi.360che.com/wxhelp(?<name>.+)$
https://didi.360che.com/wxhelp:原域名
https://didi.360che.com/wxhelp2:要转发的域名
用起来非常方便,适用于app多环境测试;后端服务整体升级优化,而前端没有变动,此时可以直接做接口转发就可以了
九、fiddler常用命令
1.查找对应响应码的数据包或请求类型的数据包:
输入“=post”将选择post的数据包并用蓝色底标色
2.匹配指定字符的请求包
输入 ?xx 这里百度为例,?360che.com
3.@
@ Host 高亮所有该主机的会话
4.bpafter
bpafter 字符串 再请求结束得到响应前中断所有包含该字符串的会话
5.bps
bps Http状态码中断所有该状态的会话
6.bpv 或 bpm
bpv 或 bpm后边跟的是HTTP方法表示中断所有该方法的会话
7.bpu
bpu 字符串 在请求到服务器之前中断包含该字符串的会话