当前位置: 首页 - 编程技术 - 文章正文

接口测试-Fiddler抓包工具的使用

xiaoqihv

本文涵盖fiddler抓包工具的工作原理、界面介绍、一些使用技巧和常用功能。

一、工作原理

        ①通过代理的方式获取程序http通讯的数据,用来检测网页和服务器的交互情况,能够记录所有客户端和服务器间的http请求。fiddler启动时,会自动将代理设置到127.0.0.1,端口设为8888。

        ②支持监视、设置断点、修改输入输出数据等功能

        ③可以使用.net框架语言扩展编写脚本。

        ④fiddler官方帮助文档:在fiddler的命令窗口中输入help 命令,打开http://fiddler2.com/fiddler/help/quickexec.asp

 二、界面介绍

        2.1界面组成

        fiddler的界面包括菜单栏,工具栏,会话列表(即数据流列表),请求显示栏,返回显示栏以及命令行窗口几部分。

         2.2会话列表表头

        Result:http服务器的返回代码,例如200,404,502等等

        Protocol:使用的协议,fiddler只能筛选http和https协议

        Host:返回的服务器的域名

        URL:返回的服务器的url

        Body:返回的数据的大小(如果为0,说明有cache)

        Caching:缓存的状态和有效时间

        Content-Type:返回的代码的内容

        Process:本地发起连接的程序进程

 三、一些使用技巧

        3.1快捷键的使用

        ctrl+f:查找会话

        ctrl+h:查看会话的头部(Inspector--Header)

        ctrl+t:查看会话的文本(Inspector--TextView)

        ctrl+up:查看上一条会话

        ctrl+down:查看下一条会话

        ctrl+x:清屏

        ctrl+a:选择所有会话

        ctrl+i:把当前选择的会话的url插入到命令行中        

        r:重新发送请求(貌似不是真发了请求)

         3.2命令行操作

        help:打开官方的使用页面介绍,所有的命令都会列出来

        cls:清屏,或者使用快捷键ctrl+x

        bpu+域名:截获请求

        bpu:停止截获请求

        bpafter+域名:截获返回

        bparter:停止截获返回

        3.3解决response乱码

        response乱码可能是因为HTML被压缩了,没有解压缩,也可能是解压缩后使用的字体不对。还有一种现象是下载的图片在ImageView无法查看,解决方法如下:

        ①如果在Response Raw上方有"Response is encoded any may need to be decoded before inspection. click here to transform"提示,点击该提示。

        ②选中工具栏中的“Decode”,这样会自动解压缩。

         ③在注册表HKEY_CURRENT_USER\Software\Microsoft\Fiddler2中添加一个字符串变量HeaderEncoding=GB18030,重启fiddler即可。

 四、常用功能

        4.1捕获https会话

        fiddler一般不会捕获https会话,需要设置:菜单栏Tools(工具)--Fiddler Option(fiddler选项)s—HTTPS—勾选“Capture HTTPS CONNECTs(捕获https连接)”,“DecryptHTTPS traffic(解密https通信)”和“Ignore server certificate erroers(忽略服务器证书错误)”。

         4.2查看http统计(可分析页面性能)

        ①选择一条数据,点击右侧Statistics标签,可以查看Request Count(请求数),Bytes Sent(发送字节),Bytes Received(接收字节),也可以详细查看实际性能。

        ②点击“Show chart”,显示统计图标,在饼形图中可以看出每个阶段占用的时间比例。

        ③如果选择多条请求,还可以获得多条请求的总体时间,并且分辨出哪些请求耗时最多,从而有针对的优化。

         4.3设置断点拦截request和response

                4.3.1一般操作

        设定断点:工具栏Rules--Automatic Breakpoint--Before Requests,或者直接点击主界面左下角第三个显示窗

,直至显示截图的图标。这种方法会中断所有的会话。

        取消断点:工具栏Rules--Automatic Breakpoint—Disabled,即是直接点击主界面左下角第三个显示窗,直至没有任何图标。

        为已拦截的断点放行:点击右侧Run to Completion放行单条request,或者工具栏Resume(全部恢复)放行所有断点。

        注:该操作设定的是request断点,若设置response断点,选择after response。

                4.3.2命令行方式

        设定断点:例如,我只想拦截dl.bizhi.sogou.com这个域名,只需在命令行输入“bpu dl.bizhi.sogou.com”—回车即可。这种方法只有设定域名的会话会被拦截,其他会话不会被拦截。

        取消断点:输入“bpu”—回车

        为已拦截的断点放行:点击右侧Run to Completion放行单条request,或者工具栏Go(全部恢复)放行所有断点。

        注:该操作设定的是request断点,若设置response断点,输入bpafter dl.bizhi.sogou.com,取消输入bpafter。

        4.4构造请求(待深入)

        使用Composer伪造请求。

        ①选择要伪造的请求,把它拖拽到Composer下的界面中,可以看到详细信息

        ②在请求的下拉框中伪造为测试需要的请求

        ③点击execute,重新发送该请求

         4.5改写返回数据

                4.5.1用设置断点的方式改写

        设定断点(设定断点方式见3.5)—点击右侧ChooseResponse—Find a file—添加要返回的伪数据—Run to Completion。用该方法还可以返回各种网络错误代码。

                4.5.2用自动返回的方式改写

         ①选择要被改写的会话— “自动响应(AutoResponder)”标签—勾选“Enable automatic responses”-“Add”,此时,该语句被添加到下面列表中。

        ②选择该请求,后面下拉列表中选择“Find a file” —添加要返回的伪数据—保存。

        ③再次让客户端发送请求,会发现fiddler把该请求自动返回成了设定的文件。

        用该方法同样可以返回各种网络错误代码。

        用该方法还可以使一类具有相同关键字的请求返回相同结果:选择一个请求,在Rule Editor中修改请求语句:在相同的关键字前面加“regex:”代表模糊匹配,后面加“.*”代表匹配任意多的任意字符。该方法适用正则表达式。

        4.6保存返回的内容

        例如,要把请求的图片保存到本地。

        现在做法:右键—Copy—Just Url—打开浏览器,粘贴到地址栏—待图片显示到浏览器后保存到本地。

        技巧:选择请求—右键—Save—Response—Response Body。

        4.7保存当前web session内的信息

        如果觉得当前已经出现的信息比较重要,想回去好好研究,那么就可以选择菜单中的File——Save,然后选择全部会话或分类会话,然后就可以保存了。保存的文件为fiddler独有的文件格式,这种文件可以用其它机器的fiddler打开查看。

        4.8比较两组数据流

        ①需要安装软件WinMerge

        ②在会话列表中选择两条需要对比的数据,右键—compare,程序会自动打开WinMerge软件,进行对比。标颜色的部分为有差异的部分。

        4.9文本编码和解码

        点击工具栏TextWizard

打开编码器,这里提供了多种编码方式—在上面的文本框输入需要被编码的内容—左面单选按钮选择一种编码方式—下面的文本框自动显示编译的结果。

        如果勾选“View bytes”,则会以单个字节显示。

        4.10模拟限速

        菜单栏Rules—Performance—Simulate Modem speeds。

      这种限速方法并非真正限速网络,而是fiddler自己下载完毕后,在fiddler和程序之间变为Modem传输速度而已,如果想要改变速度大小,需要修改脚本。

       1)打开脚本:

        ①fiddler脚本实际是一个CustomRules.json文件,位于C:\Documents and Settings\[your user]\My Documents\Fiddler2\Scripts\目录下。修改脚本时可以直接修改该文件。

        ②可以在fiddler中打开该文件:菜单栏Rules—Customize Rules,默认使用notepad打开。

        ③建议安装Fiddler Script Editor,安装后,在右侧直接显示FiddlerScript标签,编辑后直接点击Save Script即可。这里介绍该方法。

        2)  修改脚本:

        ①在Go to中选择“OnBeforeRequest”

        ②在OnBeforeRequest方法下修改request的速度:   

                // Delay sends by 300ms per KB uploaded.

                oSession["request-trickle-delay"] = "300";

        ③在Go to中选择“OnBeforeResponse”

        ④在OnBeforeResponse方法下修改response的速度:

                // Delay receives by 150ms per KB downloaded.

                oSession["response-trickle-delay"] = "150";

        从脚本中可以看出,②是限制了请求上传的速度,把速度限制为300ms/kb,④是限制了请求返回的速度,把速度限制为150ms/kb。所以说,如果下载一个50kb的壁纸,大概需要7.5秒的时间(50x150/1000=7.5s)。

        4.11查询会话    

        (1)菜单栏Edit—Find Session(或者使用快捷键ctrl+f)--find中输入要查询的关键词。

        (2)这里可以设置查询规则:

                ①查询request或者查询response

                ②查询headers或者查询bodies

                ③是否匹配大小写(Match case)

                ④是否使用正则表达式(Regular Expression)

                ⑤是否搜索二进制(Search binaries)

                ⑥是否解码加密内容(Decode compressed content)

                ⑦仅搜索被选择的会话(Search only selected sessions)

                ⑧不标记旧的查询结果(Unmarked old results)

                ⑨查询后用黄色背景表示(Result Highlight)

                 

        4.12筛选会话

        在右侧Filters标签中设置过滤规则—勾选Use Filters,fiddler提供了多种过滤方式:

                ①按域名过滤

                ②按进程过滤

                ③按Request Headers过滤

                ④按Response Headers过滤

                ⑤按断点过滤

                ⑥按返回的状态码过滤

                ⑦按文件类型和大小过滤

                

        例如,我只想查看dl.bizhi.sogou.com和imgstore.cdn.sogou.com的域名的会话,在Hosts分类的下拉列表中,选择Show only the following Hosts,在下面的文本框中输入想要查看的两个域名—点击Actions—Run Filterset now。可以看见,经过过滤之后,左面的会话列表就只剩下了dl.bizhi.sogou.com和imgstore.cdn.sogou.com两个域名的会话了。

        4.13只拦截一个程序

        在工具栏上,长按“any process”,直到变成pick target后,把鼠标拖动到壁纸窗口上,窗口变黑,这时,工具栏的名称变成sgwallpaper:1064。这时,监控的就只是搜狗壁纸进程了。搜狗壁纸进程后面的1064是该程序的PID号,若关闭了壁纸程序,则需要再次获取一下进程。

 →→

 

        4.14抓取移动设备的数据

        因为抓包需要用到pc的无线网络,如果物理机没有,则要用到虚拟机的相关功能:

        ①设置虚拟机:设置连接方式为Bridged(桥接)--勾选Replicate physical network connection state(复制物理网络)。

        ②设置fiddler:菜单栏Tools--Fiddler Options--Connection标签--勾选Allow remote computers to connect,默认设置Fiddler listens on port:8888,即端口为8888。

        ③设置移动设备:打开wify--设置http代理:服务器填写虚拟机的ip地址,端口为8888。

到此为止,抓包环境搭建好了,访问网络时就可以在fiddler中看到数据了。

注意:移动设备使用的wify和虚拟机所插的要是同一个路由。

         4.15把请求跳转到测试服务器

        需求:客户端发送的请求在10.11.194.227上,而测试需要使用10.129.40.212上的测试文件,可以使用fiddler使请求10.11.194.227跳转到10.129.40.212

        ①在fiddler的安装目录下找到302的配置文件,复制一下,随便起个自己认得的名字,把location地址写到自己搭建的服务器

                HTTP/1.1 302 Redirect

                FiddlerTemplate: True

                Location: http://10.129.40.212/ini/伪造的文件

                Content-Length: 0

        ②在fiddler中为10.11.194.227的请求设置一个aoturesponse,Test URL中选择该文件即可。

        4.16查看网络请求的头信息

        点击那条请求,然后在右边区域选择inspectors——Headers,这里就包括请求和返回的所有头信息内容。

        4.17模拟其他User_Agent

        程序或者浏览器发出的请求,一般都是自己的UA,fiddler可以把它们伪装成用户想要的UA。方法是选择菜单中的Rules——User-Agents,然后选择一个UA,或者选择Custom自定义一个。这样后续的网络请求就都变为这个UA的了。

文章地址:https://wenmayi.cn/post/609.html