简介
Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作。也可以用来检测网络安全。Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并且截取到数据。
安装及使用流程
1.软件下载
Fiddler 下载地址 :https://www.telerik.com/download/fiddler下载并安装。
2.设置代理服务器
打开菜单栏中的 Tools > Fiddler Options,打开“Fiddler Options”对话框,在Fiddler Options”对话框切换到“Connections”选项卡,然后勾选“Allow romote computers to connect”后面的复选框,设置代理端口为“8888”,然后点击“OK”按钮。
3、PC机设置共享wifi热点。
利用移动小WiFi,连接电脑,手机连接此wifi发出的无线网络。
4、在电脑命令提示符窗口中通过输入ipconfig命令来查询IP地址
5.在手机端连接PC的wifi,并且进入更多设置页面来设置代理IP与端口(代理IP就是上图的IP,端口是Fiddler的代理端口8888) 。
6、安装成功后启动Fiddler,设置解密HTTPS的网络数据:Tools –> Options –> HTTPS,勾选Decrypt HTTPS Traffic,点击“OK”。
7、确保File –> Capture Traffic开启的情况下,用手机访问应用,就可以看到截取到的数据包了。(快捷方式点击左下角的位置也是可以进行开关的)
过滤请求的规则
参考: Fiddler请求过滤
断点设置
Fiddler最强大的功能莫过于设置断点了,设置好断点后,你可以修改httpRequest的任何信息包括host, cookie或者表单中的数据。
请求设置断点有两种方法:
第一种:打开Fiddler 点击Rules→ Automatic Breakpoint →Before Requests/After Response(这种方法会中断所有的会话)
如何消除命令呢? 点击Rules→ Automatic Breakpoint →Disabled
第二种: 在命令行中输入命令:
bpuhttp://stage.tuanzicartoon.com/server/wawa/server_stage/user/login(这种方法只会中断http://stage.tuanzicartoon.com/server/wawa/server_stage/user/login请求)
bpuhttp://stage.tuanzicartoon.com/server/wawa/server_stage/user/loginafter (这种方法只会中断http://stage.tuanzicartoon.com/server/wawa/server_stage/user/login响应)
如何消除断点? 在命令行中输入命令 bpu
1.修改请求
以百度搜索为例,修改搜索的关键词
Rules→ Automatic Breakpoint →Before Requests (在请求前进行断点)
打开浏览器,百度搜索AK47,然后打开fiddler会看到这次的请求
我们把wd的值改成 天气 ,在点击 下面的绿色按钮, Run to Completion
可以看到,前面的状态码会变成200, 但是 webView是看不到页面的,需要点击下黄色的进行解码
结果返回的也是天气的信息了,并不是ak47
2.响应打断点
相应打断点其实和请求打断点类似,只是改成 Rules→ Automatic Breakpoint →After Response,其他步骤类似
Fiddler的编码和解码
响应body解码
有时候我们在Fiddler上看到响应数据是几个乱码字符,首先我们可以点击,上方黄色提示区
域直接进行解码。如下面的两个图所示。
请求和响应数据解码
有的时候,基于安全性考虑,开发人员会将请求和响应的body根据一定规则进行解码。如果是普通的编码规则,我们可以直接通过Fiddler操作进行解码。
首先,找到这个参数,选中后右键选择【send to TextWizard】
然后,在【transform】中找到对应解码规则,字段值就被成功解码,我们就可以很清楚的看到里面有哪些参数以及参数的值是什么了。
上面都是解码的例子,编码在实际运用中很少,就不介绍了。
Fiddler弱网测试
Fiddler模拟限速的原理
我们可以通过fiddler来模拟限速,因为fiddler本来就是个代理,它提供了客户端请求前和服务器响应前的回调接口,我们可以在这些接口里 面自定义一些逻辑。Fiddler的模拟限速正是在客户端请求前来自定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和 上传速度,从而达到限速的效果。
他提供了一个功能,让我们模拟低速网路环境…启用方法如下:
Rules → Performances → Simulate Modem Speeds :模拟调制解调器的速度
配置:
1)模拟调制解调器的速度
2)手动设置设置上行,下行速率,模拟网路速度的原理,每上传/下载1KB 要delay 多久
网络取值的算法就是 1000/下载速度 = 需要delay的时间(毫秒),比如50kb/s 需要delay200毫秒来接收数据。
查找代码如下:
if (m_SimulateModem) { // Delay sends by 300ms per KB uploaded. //每延迟300ms发送1kb的数据,也就是每1s发送3kb的数据 oSession["request-trickle-delay"] = "300"; // Delay receives by 150ms per KB downloaded. //每延迟150ms下行1kb的数据 oSession["response-trickle-delay"] = "150"; }
请注意,当你存档之后,原本已经勾选的SimulateModem Speeds 会被取消勾选,要记得再到Rules → Performances → Simulate Modem Speeds 勾选喔!
3)设置完成后,清空原有的log,并使用你的app进行弱网条件下的操作,
选择第一个请求和最后一个请求,可获得整个页面加载所消耗的总体时间。
不同请求耗时多少的图形表,获取那种资源耗时最大,进而进行优化
还没有评论,来说两句吧...