Fiddler系列问题汇总

2015/05/18 测试工具

甩掉其他连到你电脑的手机

问题一:测试过程中,手机借来借去是常有的事情,也许你刚在一台手机上将自己IP添加上,过一会儿这台手机被某某某拿走了,不一会儿,你的 Fiddler 上面就多了很多会话,不巧其中有个URL的参数id为空。bug?!然而,重复操作N遍,都没有重现。仔细查看请求后发现不是自己使用的手机。如何摆脱曾经的小尾巴,请看下文

方法:在Tools > Fiddler Options > Connections 下面默认的端口号都是8888,为了避免这种情况对自己的打扰,在找不到被某某某拿走的手机时,可以将自己的端口号修改为其他的,例如:8889。重启Fiddler,再在自己使用的手机上做相应的修改即可

过滤PC请求

问题二:在 PC 上打开 Fiddler 用于查看手机端的请求,但总是被 PC 来来往往的请求干扰,如何只查看 Android 上的请求,而不被干扰呢

方法:当然 Fiddler 有强大的 filter ,通过 filter 能够只查看自己关注的请求。但是呢,有一些去服务器下载的请求,由于服务器有好多,添加过滤器有可能过滤掉本来想要看的内容,例如:某个 banner 展示成功的前提是:图片资源下载成功。当我们在测试的过程中看到 banner 图显示不出来,到底是 banner 图的功能有问题呢?还是服务器的问题呢?因此,作为一名认真负责的测试同学,我们想要准确定位bug的原因,就需要关注这个过程中发生了什么,而不能简单的跟开发说:banner 图显示不出来了。SO,这种过滤如何实现呢?正确的处理方式是:点击 Fiddler 左下角的“Capturing”。TA其实是File > Capture Traffic的快捷键,可以控制是否把 Fiddler 注册为PC系统代理,当左下角显示Capturing时,Capture Traffic是打开的,此时的IE的Internet选项>连接>局域网设置中的代理服务器是勾选的;否则是没有勾选的。

打开Fiddler时修改hosts,不会生效

问题三:测试过程中需要访问测试服务器, 打开 Fiddler,在 PC 的etc目录下修改 hosts 文件却不能生效,为什么呢?

方法:Fiddler 启动时,修改 hosts 的时候是无效的,需要重启 Fiddler才能生效。具体原因见下面大神 Eric Lawrence 的解释:

Fiddler reuses connections, so if there was already an established connection, any change to the HOSTS file might not be noticed. You might try hitting CTRL+X to clear the Web Sessions list and the cache of reused connections.Also, instead of using the PC’s Hosts file, instead consider clicking the Tools > HOSTS menu item inside Fiddler.

如大神所说,当 Fiddler 已经建立会话时,任何修改 hosts 的行为都不会被 Fiddler 注意到。可以通过 Fiddler 的 Tools > HOSTS 处导入本地的 hosts 文件。需要指测试服务器的时候,勾选”Enable remapping of requests for one host to a different host or IP, overriding DNS”,否则去掉勾选

实时了解session请求的IP

问题四:测试过程中发现访问的数据不正确,怀疑是修改的host没有生效导致的。但无法查看手机端访问该数据页面的ip,所以一直无法确认该问题

方法:

  1. 运行fiddler,菜单,Rules->Customize Rules…或者点击右侧tab的“FiddlerScript”
  2. Ctrl+F查找“static function Main()”字符串,然后添加下面这行代码:
    FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");  
    
  3. 保存CustomRules.js或者点击“Save Script”按钮,如下图所示:
    2015-5-18-3
  4. 查看fiddler,此时ip会添加到所有数据的最后一列,拖到滚动条,即可看到,如下所示:
    2015-5-18-4

高亮你关注的session

问题五:在测试过程中,也许你就关注几个请求,但是 Fiddler 的界面总是被满屏的session覆盖着,有时候要找到自己想要的关注的session,总是来回滚动好几个界面才行,如何能够一眼看到自己关注的请求呢?

方法:

  1. 运行fiddler,菜单,Rules->Customize Rules…或者点击右侧tab“FiddlerScript”
  2. Ctrl+F查找” OnBeforeRequest”字符串,在其中添加下面代码,如下所示:

    注:”example”里的内容可修改为自己关注的请求的关键字

2015-5-18-5

  1. 保存修改后,触发请求,效果如下所示:
    2015-5-18-6

使用 Fiddler 控制你的网速

问题六:测试过程中需要模拟多种用户网络场景,但是公司网速嗖嗖的。拉仇恨了吗?哈哈~除了使用Netlimiter软件限制PC网速外,Fiddler能破么?能破么?

当然能!Fiddler是一个代理,它提供了客户端请求前和服务器响应前的回调接口,我们可以在这些接口里面自定义一些逻辑。Fiddler的模拟限速就是在客户端请求前来定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和上传速度,从而达到限速的效果。Fiddler提供了一个功能,可以方便的模拟低速网路环境。

方法:Rules > Performances > Simulate Modem Speeds ,如图所示:
2015-5-18-7

网速瞬间降低,感觉像回到了解放前,有木有……

也许Fiddler的低速已经超出你的忍耐程度了,那么,可以使用脚本重新定义一下低速网络

  1. 打开脚本编辑器:Rules > Customize Rules
  2. 搜索m_SimulateModem,
  3. 然后根据自己的需要修改如下语句 oSession[“request-trickle-delay” ] = “300”;(每上传1KB延迟300ms)
    oSession[“response-trickle-delay” ] = “150”;(每下载1KB延迟150ms)
  4. 点击Save Script后,之前勾选的Simulate Modem Speeds会被取消勾选,需要重新再勾选回来
    从此,低速高速一键切换无烦恼

Fiddler里面编码问题

问题七:使用 Fiddler 保存会话的response,大家都知道右键点击会话选择”save > Response >Response Body“,但是在保存后却发现里面都是乱码。哭~

这是因为为了提高性能,Fiddler会将会话的response压缩后进行传输,查看Transformer的选项卡,可看到GZIP Encoding处于选中状态,想要正常查看被压缩的数据,需要选择成No Compression(解压缩),但是出现乱码的情况下,该处是不能点击的,怎么解决嘞?

方法1. 如果想在会话处理过程中decode,点击Fiddler工具栏的”Decode”按钮,则会对所有的会话进行decode,这样保存的response就能正常显示了,需要注意:点击“Decode”之后需要重启 Fiddler

方法2. 如果想对所有会话处理之后再进行No Compression(解压缩),可以选择多个会话,右键选择“Decode Selected Sessions”

另外,有时候也会遇到以下情况:点击一个会话,在会话的response区域看到的却是乱码,上面有黄条提示”Response is encodeed and require decoding before inspection.Click here to transform“,对应的Transformer勾选情况如下图所示:
2015-5-18-8
处理方法:这种情况下只要按照提示点击黄条即可对当前的会话进行decode,但是这样处理只针对当前的会话,是一次性的效果,如果不担心传输性能的话,可以直接使用方法1

Search

    Post Directory