...

Fiddler抓包使用简介

接口测试工具-目录

Fiddler简介

Fiddler是一款免费的Windows平台的抓包工具,功能强大,使用简单。Fiddler抓包基于中间人代理模式,工作原理如图2.1所示,Fiddler在启动时会自动设置系统代理,Chrome浏览器等程序访问网页或发送HTTP请求时,便会自动经过Fiddler发送给服务端,因此Fiddler中便能查看到所有当前PC发送的所有HTTP请求。

图2.1  中间人代理抓包

Fiddler主要特点如下:

  • 可以抓到请求数据,查看Raw格式/表单格式/JSON/XML格式.
  • 可以拦截和修改请求.
  • 更强大的过滤器。
  • 可以抓取Postman/接口脚本发送的请求,方便调试。
  • 可以抓包手机请求。

Fiddler主界面
Fiddler的主界面分为菜单栏、工具栏、请求列表、快速命令栏、监控面板及状态栏等,如图2.2所示。

图2.2  Fiddler主面板

Fiddler菜单栏包括File(文件)、Edit(编辑)、Rules(规则)、Tools(工具)、View(显示)及Help(帮助)。
Fiddler工具栏包括WinConfig(Windows配置)、、Replay(重放)、清理、Go(拦截放行)、Stream(流)、Decode(解码)、Keep: All sessions(请求会话保持)、Any Process(抓取进程)、Find(查找)、Save(保存)、、Browse(浏览器选择)及Clear Cache(清除缓存)。
主体区左侧为请求列表,又称会话列表(客户端与服务端的一次交互被称为一次会话过程)。请求列表中使用不同的图标区分不同类型的会话类型,常见的会话类型如表2.1所示。

表2.1  Fiddler会话类型-1
表2.1  Fiddler会话类型-2

注:以上表格使用新版Fiddler的会话图标,HTML格式、XML格式、CSS、脚本、图片等图标与老版本略有不同。

请求图标可以帮助我们快速识别各种类型的请求或相应,GET方法的请求根据不同的响应数据类型显示不同的图标,POST等方法按请求方法类型显示对应的图标。对于数据量比较大的请求,会在请求和响应的过程中或显示为上传和下载的图标,当使用断点拦截请求或响应时,上传、下载图标显示为暂停的样式。

请求抓包

抓取请求是Fiddler的主要功能之一,Fiddler在启动时会自动设置系统代理,因此只要打开Fiddler就可以正常抓取当前PC端的HTTP请求。要抓取HTTPS请求或移动端请求则要进行相应的配置。

抓取PC端HTTPS请求

打开浏览器访问https://www.baidu.com/查看Fiddler中抓取的请求,如图2.3所示。

图2.3  未安装证书时的HTTPS请求

未设置和安装证书时抓取到的HTTPS请求显示为锁型图标的HTTP CONNECT请求,转发到对应网站的443端口。
抓取HTTPS请求需要现在设置中勾选捕获HTTPS连接及解密HTTPS数据。操作方法是,点击菜单栏Tools(工具),选择Options(选项),切换到HTTPS面板,如图2.3所示。

图2.4  Fiddler HTTPS选项设置

如上图,勾选Capture HTTPS CONNECTs(捕获HTTPS连接)、Decrypt HTTPS traffic(解密HTTPS数据)和Ignore server certificate errors(unsafe)(忽略服务端证书错误)。由于我们需要使用Fiddler提供的免费证书,有可能服务端或报证书错误,忽略即可。
安装Fiddler提供的HTTPS证书。安装方法非常简单,启动Fiddler后,打开浏览器,访问http://localhost:8888/,如图2.5所示。
图2.5  下载Fiddler证书

点击页面下方的链接FiddlerRoot certificate,下载完成后双击打开,点击安装证书,一路下一步使用默认选项安装即可,安装结束后会弹出提示导入成功。
重启Fiddler,重新访问https://www.baidu.com/,如图2.6所示。
图2.6  Fiddler抓取HTTPS请求

这时可以抓取到HTTPS类型的请求。点击该请求,右侧点击Inspectors面板,上半部分为请求信息,下半部分为响应信息。木偶人响应信息已编码过,点击Responsebody is encoded.Click to decode.解码查看,选择Raw格式,可以查看到返回的百度网页的源码。

注:如果抓不到包可以检测一下是否勾选了Filter过滤器。

强制关闭Fiddler会导致代理不能正常取消,Fiddler却已关闭,而无法上网的情况。此时重新打开Fiddler,然后正常关闭一次即可自动取消代理。

抓取移动端请求

抓取手机端App发送的HTTP或HTTPS请求,需要手动在手机端设置网络代理为Fiddler代理服务地址,即使手机通过Fiddler代理上网,才能抓取到。
首先手机要与电脑在同一局域网内,比如同一Wi-Fi网络上网。电脑端启动Fiddler(自动启动代理服务,默认端口号为8888),使用ipconfig或ifconfig查看电脑的IP地址,如192.168.1.3,那么Fiddler代理服务的地址即192.168.1.3:8888。
Fiddler中点击菜单栏Tools(工具),选择Options选项,切换到Connections选项卡,勾线Allow remote computers to connect,已允许远程设备连接Fiddler代理服务,如图2.7所示。

图2.7  Fiddler代理服务连接设置

打开手机设置,找到所连接的Wi-Fi网络,选高级(iPhone手机点击Wi-Fi网络后面的圈i图标),配置代理,选择手动,IP地址和端口号分别配置为电脑IP地址和8888,点击保存(存储),如图2.8所示。

图2.8  手机配置代理

使用手机浏览器访问http://电脑IP地址:8888(建议使用手机原生浏览器),会显示Fiddler Echo Service页面,同样点击FiddlerRoot certificate,下载并安装证书。安装完证书后,iPhone手机还需要对证书进行信任,手机设置中点击通用,点击关于本机,点击证书信任设置,设置信任DO_NOT_TRUST_FiddlerRoot证书,返回即可。
此时保持Fiddler打开,使用手机浏览器浏览网站或使用App请求即可,如弹出HTTPS证书不被信任警告,忽略即可。
注:设置完代理有,由于手机需要通过Fiddler代理上网,如果Fiddler关闭手机会连不上网。不抓包时可以在手机设置中把配置代理取消掉。

请求查看

Inspector(检查员)

在Fiddler请求列表中点击相应请求,右侧选择Inspector选项卡,可以查看请求及响应的详细内容,上半部分为请求,下半部分为响应。请求和响应可以使用子选项卡查看不同的内容及格式,对应说明如表格2.2及2.3所示。
表2.2  Inspector请求子选项卡

一般可以使用Raw查看原始的请求数据,如果是表单类型的请求,可以使用WebForms查看表单类型的数据,如果是JSON或XML格式可以使用对应的子选项卡查看。
表2.3  Inspector响应子选项卡

HTTP数据一般是经过压缩传输的,Transformer一般使用默认的即可。可以通过Raw来查看原始响应数据或按照相应的数据类型选择对应的格式查看。
2.2.3 过滤请求
Filters(过滤器)

当请求较多时,使用Filters组件可以帮我们快速过滤出指定的请求。要启用过滤器,首先要右侧Filters选项卡中勾选Use Filters,如图2.9所示。

图2.9  启用Fiddler过滤器

Fiddler支持的过滤方式如下:

  • Hosts:按服务器过滤。
  • Clients Process:按客户端程序过滤。
  • Request Headers:按请求头过滤。
  • Breakpoints:设置断点。
  • Response Status Code:按状态码过滤。
  • Response Type and Size:按响应类型及大学过滤。
  • Response Headers:按响应头过滤。

例如,可以在Hosts段第二个下拉框选择Show only the following Hosts,在下面的文本框中设置要显示域名,以分号分开,如www.baidu.com;www.163.com,就可以只显示发往这两个域名的请求。

注:启用关闭过滤器有时需要重启后方能生效。

发送请求

Composer(调试器)

Fiddler的Composer选项卡可以用来发送和调试请求,如图2.10所示。

图2.10  Fiddler请求调试器Composer
Composer可以用于发送HTTP请求,功能比较简单,表单格式数据需要自己进行URL编码,填写完成后点击Execute发送即可。请求会以会话的形式显示在请求列表中,同事History历史记录中会有响应的记录。

Mock接口

AutoResponder(自动响应)

Fiddler的Anto Reponder选项卡可以根据一定的规则对匹配到的请求进行自动响应或转向其他的接口或文件。如图2.11所示。

图2.11  Fiddler使用Autoreponder

勾选Enable rules启用匹配规则,勾选Unmatched requests passthrough对未匹配到的请求正常放行。

断点调试

当我们需要详细抓取并调试某个接口的数据时,可以使用Fiddler的断点调试功能。Fiddler的断点调试设置方式有两处,一是Filter过滤器中对指定特征的请求自动进行断点拦截,另一种是对所有请求设置断点,设置方式为:菜单Rules -> Automatic Breakpoints -> Before Requests/After Responses。断点分为两种方式,一种是Before Requests请求前拦截,即请求未发送到服务器之前拦截。一种是After Responses,服务端响应未送达客户端时拦截,一般我们使用第一种,如图2.12,被断点拦截的请求会显示为暂停图标。此时可以在Inspector中修改其数据,然后点击Go按钮,使用修改后的数据完成请求。

注:如果线上环境中不希望请求数据(如提交订单或支付信息)真实发送到服务器,同时又需要对请求进行抓包,也可以使用断点功能。

弱网模拟

弱网模拟是App测试中一个常用测试项。Fiddler菜单中的弱网模拟功能,只有模拟非常慢的模拟Modem调制解调器上网速度一个选项,设置方式为Rules ->Performance->Simulate Modem Speeds。
更精确的网速控制需要通过Fiddler Script实现。

请求重放

Fiddler支持对抓取到的请求进行重放。操作方法为在请求列表区域,指定请求上,点击右键,选择Replay,选择Replay Sequencely,输入要重放的次数即可。

修改HOSTS

在Fiddler中还可以快速修改HOSTS配置,操作方法为点击惨淡Tools -> HOSTS,设置保存即可。

posted @ 2022-03-18 12:46  韩志超  阅读(889)  评论(0编辑  收藏  举报