51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

测试开发精英班,通向高级软件测试工程师【周活动】 找茬--心里圈的故事 !【长期招募】博为峰网校招聘兼职讲师!横扫BAT,Python全栈测试开发技能大全
【109期】:python爬虫的魔力 !双11剁手不吃土,来投稿赚回血红包! 【专题】用尽一切办法只为让你学好用例 自学软件测试那点事
查看: 178|回复: 0

[转贴] fiddler在不同场景下的强大作用

[复制链接]
  • TA的每日心情
    无聊
    2019-12-2 09:25
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]测试排长

    发表于 2019-11-12 10:36:43 | 显示全部楼层 |阅读模式

    如果你是一名前端开发或者测试人员,那么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命令就可以,后续我们再介绍
    回复

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2019-12-13 14:30 , Processed in 0.060835 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2019 Comsenz Inc.

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