关于Fiddler工具高级使用

本篇对Fiddler抓包工具的原理、安装、界面不做介绍,此篇讲解Fiddler工具高级使用,适用于有经验的测试员。

Fiddler高级使用

过滤

Fiddler抓包可以完成我们移动开发者的调试测试需求。但是多余的 页请求和手机的其他链接影响我们手机开发的需求。所以我们需要排除其他无用的包,只关注我们指定的域名的请求包。

打开fiddler,找到Filters选项并点击打开。如图所示

默认情况下,这个页面是灰色的,代表默认不过滤任何请求。现在我们勾选Use Filters。

一般常用的有三种过滤条件:

  • 域名过滤,只显示特定域名的记录:
  • *.baidu.com表示所有的百度二级域名会话;*baidu.com表示一级域名+二级域名的会话。设置好了后一定要点击Actions生效;

  • 类型过滤,一般对各种图片、CSS、JS这类的静态素材也不需要看的情况下,直接全部过滤
  • .*.(bmp|css|js|gif|ico|jp?g|png|swf|woff)

    需要过滤多少自己直接加入就好了

  • 3.根据返回状态码,比如只想显示200的状态,其他的不显示
  • 3.2断点请求/响应

    如图,箭头所指的位置时可以点击的。共三种状态:

    空白:不设置断点。

    箭头向上:表示断点请求。此时客户端的请求是无法直接到达目标服务器的,需要手动控制。

    箭头向下:表示断点响应。此时目标服务器的响应是无法直接到达客户端的,需要手动控制。

    还有一种打断点的方式

    在命令行中输入以下命令:

    bpu www.baidu.com (断点请求)

    bpuafter www.baidu.com(断点响应)

    这种方法只会中断www.baidu.com

    断点请求并修改

    如图,操作步骤:

    1. 设置断点请求,访问 页
    2. 点击对应的会话
    3. 查看请求 文信息
    4. 修改请求内容
    5. 完成断点,放行,把该请求发送给目标服务器。

    图中Break On Response表示把请求发给服务器,但是服务器的响应被fiddler拦截,此时可以修改响应内容(和断点响应类似)。

    断点响应并修改

    和断点请求操作类似,只是在响应区域修改 文信息即可。

    在断点响应时,请注意超时时间。

    3.3模拟 络

  • 通过应用层或者传输层的代理服务器,通过在代理服务器上设置一些模拟恶劣 络环境的参数,使得通过这些代理服务器的流量都被转化为恶劣 络环境下的流量。如利用Fiddler,Charles等具有代理服务器功能的 络流量分析软件来实现。
  • 通过利用一些更底层的驱动层面的服务,通过控制 卡的收包发包的行为,来模拟恶劣的 络环境。如dummynet的ipfw驱动等。
  • 通过建立一个可控的 关,在 关上部署模拟恶劣环境的相关程序,所有需要借助该 关进行转发的流量都会被模拟为恶劣 络条件。Linux下的netem就提供了这类支持。
  • 这里主要先讲的是第一种手段,即利用Fiddler来模拟恶劣的 络环境,对服务进行测试,这个手段实现简单,较为直观,但是缺点是只能支持那些利用HTTP进行通信和交互的服务。

    方式1:

    Fiddler本身已经预置提供了模拟Modem速度的选项,其位置位于:

    ??Rules – Performances – Simulate Modem Speeds

    ??勾选该选项后,所有通过Fiddler代理的流量都会变得和多年前的56k小猫时上 一般的慢。

    方式2:

    直接模拟Modem速度实在是慢爆了,事实上就算是在很差信 的情况下,手机移动 络的速度都已经超过了当年的56k Modem速度了,所以采用默认的配置模拟出来的环境过于恶劣,并不一定符合需求,此时就需要对限速的参数进行调整。

    ??Fiddler本身就提供了一个配置文件供调整这些参数,点击:Rules – Customize Rules…

    ??打开该文件后,可以找到一个m_SimulateModem标志位:

    该标志位控制着oSession的两个参数值的设置,当勾选了Simulate Modem Speeds时,request-trickle-delay与response-trickle-delay就会被设置,其中request-trickle-delay中的值代表每KB的数据被上传时会被延时多少毫秒,response-trickle-delay则对应下载时每KB的数据会被延时多少毫秒,

    如果本身 速已经相当快的话,这里设置的值就可以近似地推算出开启模拟后的上传和下载带宽了,比如默认设置下下载延时为150ms,上传延时为300ms,对应可以推算出大致的模拟带宽为:

    上传带宽=(1*8/1000)/0.300≈0.053Mbps

    下载带宽=(1*8/1000)/0.150≈0.027Mbps

    然而实际情况下却得到了两倍于这个值的带宽,推测可能是Fiddler的内部实现上有一些和描述上的不同,为何为造成这个现象现在还不是很清楚,所以上述公式最后还需要修正一个2.0的系数,即:

    上传带宽=((1*8/1000)/0.300)*2.0≈0.106Mbps

    下载带宽=((1*8/1000)/0.150)*2.0≈0.053Mbps

    假设我们将两个参数都设置为50,则会得到上下载带宽均为0.32Mbps

    方式3:

    查找到if (m_SimulateModem)语句,修改代码。模拟 络带宽不是恒定的一个低速的值,而是一定范围内随机抖动,下面的脚本实现了一个随机延时量设置,使得 络带宽不是恒定为一个低速的值。

    
    

    在代码里找到onBeforeRequest,这里定义了在发送请求前做什么。加入如下代码可以实现延迟:

    
    
    
                                                            

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2022年5月12日
    下一篇 2022年5月12日

    相关推荐