抓包工具——Fiddler
简介
Fiddler 是一款免费、灵活、操作简单、功能强大的 HTTP 代理工具,是目前最常用的 HTTP 抓包工具之一。
可以抓取所有的 HTTP/HTTPS 包、过滤会话、分析请求详细内容、伪造客户端请求、篡改服务器响应、重定向、网络限速、断点调试等功能。

Fiddler工作原理
Fiddler是以代理web服务器形式工作的,在客户端和服务器之间,建立了一个HTTP代理服务器,当启动的时候,Fiddler会默认把自己设置为系统代理,来监听客户端的HTTP/HTTPS请求,默认代理地址为:127.0.0.1, 默认端口为:8888,浏览器访问WEB网站的时候,请求报文会先发送到Fiddler,Fiddler 再把请求报文转发给服务器,Web服务器返回的响应报文,也会先达到Fiddler,Fiddler再把响应报文返回给浏览器。
下载
有两个版本:
Fiddler Classic
经典版本,免费使用,功能全面,使用大多数用户。
Fiddler Wverywhere
跨平台版本,支持 Windows、macOS 和 Linux,界面更现代化。
下载链接

设置fiddler抓取https请求
1.下载的fiddler默认是抓取http请求,需要配置相关信息,Tools--->options--->HTTPS

2.第一次下载使用,选中选项会自动跳出证书提示,同意即可

3.选中这三个选项,然后点击Actions中的Export Root Certificate Desktop,

4.会出现下面提示,电脑桌面上会出现证书图样

5.需要在浏览器上导入这个证书,谷歌操作:设置-->隐私和安全--->安全--->管理证书,在受信任的根证书颁发机构中导入刚刚下载到桌面的证书,重启fiddler,就可以抓取HTTPS请求了
抓取HTTP/HTTPS协议
以QQ音乐为例,抓取到该请求后,fiddler左侧会显示

在选项卡的Inspectors,可以查看HTTP请求和响应的报文格式,上面显示的内容是http请求的详细格式,下面内容是http相应的详细格式,Raw查看headers的详细信息

fiddler抓取https请求的原理:
当fidler作为一个代理服务器时,会向客户端颁发一个证书(就是我们在设置抓取https请求时的证书),客户端安装这个证书以后,所有的https通信都会通过fiddler,并且由fiddler进行解密,一旦https数据包被解密,fiddler就会像处理http请求一样处理它们,允许用户查看和修改请求和响应内容。
打开fiddler后网络选项展示:控制面板--->Internet选项--->连接--->局域网设置--->高级

fiddler设置断点
在测试过程中,为了测试覆盖率,往往需要执行很多场景的用例来验证某一功能在各种场景下的业务处理能力,包括正常、异常的场景;而仅仅通过页面端来发起校验,往往是不能够模拟所有场景的。另外,如果系统调用的有外部接口,根据外部接口的不同返回结果进行不同的逻辑处理,那么就需要外部接口的提供方配合我们进行测试,而在实际操作中这是很难做到的,这个时候我们就可以使用fiddler来篡改接口返回的数据,构造我们需要的测试场景,可以提高测试效率。
1.设置断点篡改请求参数
fiddler一打开就是默认抓取所有的浏览器数据,需要先设置过滤,抓取特定网页的数据,Filters--->use Filters

然后点击Actions--->Run Filterset now
设置断点,在Rules--->Automatic Breakpoints--->Before requests(在发送到服务器之前拦截)

例如登录接口,先打开网页输入登录账号和密码(不点击登录),然后在fiddler设置断点模式,再在页面上点击登录按钮,这样就可以把这个请求拦截下来

然后我们可以修改请求参数,修改密码为错误的密码,点击发送请求,响应结果:

此时页面上的显示也提示账号或密码错误

2.设置断点篡改响应数据
Rules--->Automatic Breakpoints--->After response(服务器返回数据后拦截)
例如登录接口,输入正确的账号和密码后,发送请求返回的是项目的主页面,修改页面的元素内容
页面输入账号密码,fiddler设置After response断点,点击页面登录按钮,拦截到该请求,fiddler点击Run to completion,修改页面上的html的title标签,再次run

页面上的标题也会发生变化
fiddler抓取APP数据
前提:手机和电脑在同一个局域网内
1.配置fiddler
Tools--->options--->connections--->allow remote computers to connect,允许别的机器把HTTP/HTTPS请求发送到Fiddler上来,配置完成后重启fiddler

2.配置手机
获取电脑的IP地址(或者直接看fiddler右上角online显示),打开手机的网络服务,在连接到的WiFi右键修改网络,代理改为--->手动,服务器主机名为fiddler获取的IP地址,端口号为8888,保存后安装证书,手机浏览器访问fiddlerIP地址:8888,找到“FiddlerRoot certificate”下载安装,fiddler即可抓取手机数据
fiddler过滤功能Filters
Filters可以过滤掉与测试项目无关的请求
filters界面:

Actions(指定行为):
Run Filterset now,使用当前的过滤规则
Load filterset ,加载过滤规则(以前保存过的)
save filterset,保存当前的过滤规则(实际使用时可以针对每个应用测试设置一套过滤规则)
1.Hosts主机过滤

No Host Filter:默认选项,不设置过滤主机IP条件
Hide the following Hosts:隐藏输入到下面文本框中的Hosts
Show only the following Hosts:仅显示输入到下面文本框中的Hosts
Flag the following Hosts:标识下边输入的主机名的会话
2.Client Process客户端进程过滤
Show only traffic from:你可以指定只显示哪个Windows进程中的请求,右侧会列出当前所有的 Windows 进程
Show only Internet Explorer traffic:只显示IE发出的请求
3.Request Headers根据请求头过滤
Show only if URL contains:仅显示URL中包含指定字符串的请求
Flag requests with headers:标记带有特定header的请求,例如想标记headers中有token的数据,勾选填写token
其他过滤设置:

fiddler的弱网测试Rules
网络设置:Rules——>performances——>Simulate Modern speeds,再次访问网站时速度就慢了
也可以自己设置网络环境:Rules——>Customize Rules,打开Fiddler ScriptEditor框,查找m_SimulateModem标志位,默认为300ms,可以适当修改(例100ms),更改后,再选择Rules——>performances——>Simulate speeds进行弱网测试
fiddler的mock测试mock
当遇到一些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建进行测试。AutoResponder—————>勾选enable rules,创建需要发送的数据,勾选add rules,将会话中的某个请求拉取过来,我们可以自己设置一个文件,填写想要的返回结果,导入,再次发送请求