2022自学系列🚀Fiddler抓包教程(6) HTTP断点实战+弱网测试 🦞 (图文汇总)

485 阅读8分钟

作者:极客小俊
把逻辑思维转变为代码的技术博主

Fiddler 断点(breakpoints)实战

所谓断点功能就是将你的请求或者响应截获下来,但是不发送也不返回,都放到Fiddler这里, 这个时候你可以做很多事情,比如说,把请求报文改了,或 响应报文改了,再发送给服务器 或 客户端

请求之前执行断点

还记得前面状态栏说过的小空白区域吗? 点击这个区域就会出现断点标志符号,如下表:

状态描述
意思就是请求之前断点, 也就是当这个状态启动的时候,那么你发送的请求就会卡在这里!
...........

以上状态图标其实对应的也就是菜单栏中的Rules--->Automatic Breakpoints--->Before Request

如图

举个例子🌰

我们请求某个网站之前就先把这个断点打开, 那么在请求的时候, 会话列表中所对应的请求也会呈现断点状态的图标, 会话列表中URL所对应的网站也是无法显示出来的, 因为此时此刻请求还未发到服务器。中间被Fiddler所截获 ,那么现在就可以做一些数据和请求信息上的修改

然后等确定要发送到服务器的时候就点击Run to Completion(完成) 把这一个请求发送到服务器端就可以了 !

如图

注意 点击Run to Completion(完成) 只是把当前所选择到的会话解除断点,让它发送到服务器端,从而响应

响应之前执行断点
状态描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LaOqoiWK-1651910920401)(img/Icon_4.png)]响应在断点处暂停, 也就是说服务器已经返回请求的数据了,但是被Fiddler在中间卡住了,还没有到客户端这一边, 所以当我们开启了这个状态,那么在响应之前就会卡主!
.............

当我们再次点击一下的时候就会切换到以上状态图标

其实对应的也就是菜单栏中的Rules--->Automatic Breakpoints--->After Request

After Request(请求之后断点)Before Request(请求之前断点)正好相反

如图

举个例子🌰

还是请求某个网站之前就先把这个请求后断点打开, 那么此时响应信息已经返回了,但是被的时候Fiddler卡主了, 会话列表中所对应的请求也会呈现请求后断点的图标, 会话列表中URL所对应的网站也是无法显示 或者 无法提取最新的页面信息, 因为此时此刻响应还未发到客户端。返回途中被Fiddler所截获

那么如果可以的话,现在就能做一些响应报文信息上的修改

然后等确定要发送到客户端的时候就点击Run to Completion(完成) 把这一个响应发送到客户端就可以了 !

如图

所以在Fiddler拿到响应信息的时候,先住,然后篡改一些信息之后再发给客户端!

命令断点

大家还记得状态栏上的快速命令执行框吗? 在这里也可以输入来执行一些命令断点

如图

那么一些常见的断点命令如下表:

命令描述案例解除断点
bpafterbpafter后边跟一个字符串,表示中断所有包含该字符串的请求bpafter baidu输入bpafter解除断点
bpubpafter功能差不多,bpu baidu输入bpu解除断点
bpv只中断HTTP方法的命令,HTTP方法如POST、GETbpv get输入bpv解除断点
bpm只中断HTTP方法的命令,HTTP方法如POST、GETbpm get输入bpm解除断点
go放行中断下来的请求,相当于工具栏上的go按钮go
............................................................................

Fiddler 弱网测试

什么是弱网?

弱网Fiddler中就是设置网络限速 简单理解也就是在网络不好 或者 网络环境复杂、使用场景多变异常、网络抖动、延时、丢包的环境下进行检查的一种方式 就叫弱网测试

举个例子

一款适配于低资源环境的医疗it系统项目来说,而它的使用场景主要是在一些2G网络环境下,3G网都很少,并且稳定性也是比较差。因此这款网站应用app应用要想完成交付,就一定要在弱网状态甚至在没有网络状态下运行, 看看是不是能够正常交付!

所以我们要模拟一个弱网环境进行测试 通过Fiddler软件方式利用模拟网络参数来配置弱网环境,就可以达到对带宽、丢包、延时等进行模拟弱网环境目的

windows环境下我们通常可以使用fiddlernetwork emulator for windows toolkit来模拟

mac环境下则可以使用CharlesXcode自带的开发环境网络异常模拟工具进行测试

Timeline 请求响应时间

在左侧的会话列表窗口选择一个或多个会话,再切换到Timeline选项卡中 便会显示指定的资源从服务端传输到客户端的响应时间!

如图

从上图来看 似乎都属于正常的网络延迟范围之内吧!

那么我们现在就利用Fiddler这个软件来设置一下网络延迟,让网络限速

方法也很简单从Fiddler的菜单栏上选择Rules---->Performance--->Simulate Modem Speeds(模拟调制解调器速度)就可以了!

如图

当我们勾选了Simulate Modem Speeds(模拟调制解调器速度) 之后你在测试一下请求某个网页看看响应时间就知道了!

如图

看到了吧 很明显某些资源请求的时长增加了!

Fiddler 脚本限速

那么到底Fiddler给我们限制了多少网速呢 ?

其实我们可以通过脚本去查看和设置,在Fiddler菜单栏选择Rules--->Customize Rules(自定义规则)

打开Fiddler ScriptEditor编辑器,然后按下Ctrl+ F来搜索关键字Simulate(模拟的意思) 找到if判断的m_SimulateModem变量

如图

以上的代码中写明了注释:

Delay sends by 300ms per KB uploaded意思是每上传1KB延迟发送 要花费300毫秒

Delay receives by 150ms per KB downloaded意思是延迟每下载1KB接收要花费150毫秒

要知道这里的单位是毫秒1秒=1000毫秒 那么知道了这个之后,我们就可以手动的来设置网络延迟了!

如图

也就是说我现在发一个请求上传也要1.3秒,并且每一个资源的下载时间也要1.5秒

设置之后保存即可! 就可以再去Timeline中查看一下请求会话的响应时间了!

注意: Simulate Modem Speeds(模拟调制解调器速度) 依旧要为勾选状态!

如图

是不是比刚才很卡了呢!

小结

总之弱网测试的目的就是尽可能保证用户体验, 也就是说我们的项目或页面的数据响应时间是否可以被用户所接受, 常见的一些关注点包含如下:

  1. 热启动和冷启动时间、页面切换、前后台切换、首字时间,首屏时间等..
  2. 页面呈现是否完成一致。
  3. 超时是否符合定义,异常信息是否显示正常。
  4. 是否有超时重连。
  5. 安全角度:是否会发生dns劫持、登陆ip更换频繁、单点登陆异常等。
  6. 大流量事件风险:是否会在弱网下进行更新apk包、下载文件等大流量动作。
  7. 是否会有页面的crash以及显示的错乱、session是否一致、请求堆积处理等
  8. 登录、单局、支付等 不能有导致项目无法正常进行UI显示、交互问题
  9. 不能有损害用户利益 或者 可被用户额外获利的问题
  10. 需要有合理的断线重连机制,避免每次重连都返回到登录界面等等..

补充扩展

当然这里要多说一句 软件模拟弱网方式是由一定的弊端的,因为不是非常接近弱网络环境,想要更接近弱网环境,例如大多数专业项目的测试高延时、高丢包、响应时间、页面呈现、超时文案、超时重连...等会更倾向于通过硬件方式来协助测试,但这种方式又会变得很麻烦,都是通过树莓派 但是软件方式的成本低且实施起来容易操作而已!

如果觉得有帮助到你的话,就请在来个 "点赞"👍 "评论"✍️ "收藏"💙 支持一下!

大家的支持必然是我坚持创作下去的动力! 🔋 🔋 🔋

如果以上内容有任何错误或者不准确的地方, 欢迎在下面 👇 留个言指出、或者你有更好的想法,欢迎一起交流学习 💕💕💕