51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8120|回复: 5
打印 上一主题 下一主题

[原创] fiddler在不同场景下的强大作用

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-4-2 14:17:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果你是一名前端开发或者测试人员,那么fiddler绝对是最值得掌握的工具之一。fiddler是最强大的web调试工具之一,他能记录所有客户端和服务器的http/https请求以及响应,允许你监视,允许你设置断点调试,甚至篡改请求和响应。
fiddler的工作原理是什么呢?其实,每当打开fiddler的时候,它就会自动在你的电脑上把“127.0.0.1:8888”设置为代理服务器,并且fiddler会一直监听8888端口,这样的话,你的电脑上所有的请求或者响应,都会经过这个代理服务器,了解了这个就好办了。
所以,这次就让我们来一起看下fiddler有哪些好用的功能,这些功能都能满足什么样场景下的使用。
注意:本教程认为您已经对fiddler有了基本的了解,了解fiddler各个窗口代表的含义。如果您之前没有使用过fiddler,请在网上查询任何一篇文章,介绍的已经很详细了。

一、篡改请求

在测试时,你一定会遇到这样的情况,请看下面的表单(使用“http://ip.360.cn/#/ipquery”网页进行说明):


这个表单我现在输入了一个错误的ip地址,结果前端就已经抛出了ip地址错误的问题,限制我点击“查询”按钮,但我还就想知道当前端不做限制时,直接给服务端提交一个错误的ip,看看服务端能不能处理,那我该怎么办呢?
用fiddler。首先打开fiddler,选中Rules->Automatic Breakpoints->Before Requests,或者直接点击fiddler左下角,直到出现红色的向上箭头(表示请求过程中设置了断点,客户端发出的请求被fiddler拦截了),如下图:


然后,我们把表单改成正常的ip地址如“202.106.212.255”,然后点击查询。
查询后发现页面没有响应,这时候看fiddler,发现ip.360.cn/IPQuery/ipquery这个请求的签名也有一个红色的上传箭头,表示我们已经成功拦截了这个请求。这时候,我们在左侧点击这个请求,在右侧Inspectors->TextView或者Inspectors->WebForms界面下会看到请求发送的具体内容:


我们点击红框标注的value地方,把ip修改成“202.106.212.256”,然后点击另一个红框标注的“Run to Completion”,这时候可以看刚才的页面了:


这时候我们就可以说,不仅前端,原来服务端对ip地址也是有校验的。
刚才可能细心的同学会注意到,在fiddler的“Run to Completion”按钮的左边,还有一个按钮叫“Break on Response”,这个按钮是干什么的呢?顾名思义,刚才的“Run to Completion”指的是直接运行到这个session结束,而“Break on Response”是指在返回时再次截获返回数据。
好了,这就是基本的篡改请求的小例子,希望大家看了后可以在工作中用到。
可能有同学会问了,你这样操作,直接截获了所有的请求,如果我只需要截获一个特定请求,而其他请求我都放行,这该怎么办呢?这就属于fiddler的命令行高级用法了,先透漏一下,使用bpu命令就可以,后续我们再介绍。
二、篡改返回
刚才咱们篡改的是请求内容,那能不能篡改返回内容呢?比如说,刚才ip查询输入框的下面是它的返回,标明了这个ip的地址以及运营商,那如果我想构造一个很长的返回,用来看看当返回数据很长时前端页面会不会变形呢?
还用刚才的例子,我们先把fiddler设置成这样:选中Rules->Automatic Breakpoints->After Responses,或者点击fiddler左下角,直到出现向下的红色箭头(向下箭头表示返回过程中被fiddler拦截),如下:


然后,我们提交一个正常的ip,如“202.106.212.255”,然后点击查询。
现在,前端页面仍然没有响应,这时候我们打开fiddler,看到了这个请求的返回值如下:


可以看到,返回的是一个json数据结构,其中的data的值就是要显示在页面上的数据。我们修改下这个data值如下:


修改后点击“Run to Completion”,然后查看前端页面:


发现前端页面把我返回的很长的数据给截断显示了。
以上就是篡改返回的一个小例子,同样希望读者能用到实际工作中。
可能有同学又会问了,你这样操作,直接截获了所有的返回,如果我只需要截获一个特返回,而其他返回我都放行,这该怎么办呢?这又属于fiddler的命令行高级用法了,再透漏一下,使用bpafter命令就可以,后续我们再介绍。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2019-5-24 08:48
  • 签到天数: 136 天

    连续签到: 5 天

    [LV.7]测试师长

    2#
    发表于 2019-5-20 18:16:18 | 只看该作者
    谢谢分享,很容易理解呢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2019-12-2 09:25
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]测试排长

    4#
    发表于 2019-11-12 10:35:12 | 只看该作者
    学习了,谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2020-4-8 13:54:09 | 只看该作者
    谢谢,很适合我这样的小白
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2020-7-8 13:32:00 | 只看该作者
    为什么我没图片显示呢?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-6 11:03 , Processed in 0.598074 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表