接口自动化测试之Fiddler使用教程
接口自动化测试之Fiddler使用教程
Fiddler 简介
Fiddler 是一个通过代理方式来进行抓包的工具,运行时会在本地建立一个代理服务,默认地址为 127.0.0.1:8888。Fiddler 开启后,配置本机代理,再打开 IE 浏览器,IE 的 PROXY 会自动变成 127.0.0.1:8888,通过其来抓取 IE 浏览器与服务器之间的所有 HTTP(s) 请求。但是火狐、Chrome 需要手动设置代理。
配置本机代理时,IE 的代理会自动变成刚刚配置的,而谷歌和火狐则需要手动设置代理。具体原因是因为浏览器厂商自己设置了不同的代理配置方式。
Fiddler 抓包原理
客户端(浏览器)与服务器之间通过建立 TCP 连接以 HTTP 协议进行通信,浏览器默认通过自己发送 HTTP 请求到服务器。而 Fiddler 是用 C# 开发的 HTTP 代理服务器,Fiddler 工作于七层中的应用层,能够捕获到通过的 HTTP(s) 请求。Fiddler 启动后会自动将代理服务器设置为本机,端口 8888。
启动之后,会看到:
抓包涉及三个角色:客户端、代理、目标服务器
原本正常访问网页或 App 的路径是:
客户端 ---> 目标服务器
抓包,其实就加入了一个代理,即:
客户端 ---> 媒人(代理)-->目标服务器
只有这三者产生一定的联系,才能进行拦截/抓取一些东西,客户端先访问媒人,媒人把客户端的信息记录下来,媒人再去联系目标服务器,进而返回给客户端。
Fiddler 抓取 HTTPS 报文过程
详细过程解析:
- 客户端请求建立 HTTPS 连接,发送客户端支持的加密协议和版本列表等信息给服务器;
- Fiddler 接受客户端的请求并伪装成客户端发送相同的请求给 Web 服务器;
- Web 服务器收到 Fiddler 的请求后,从请求中筛选出合适的加密协议并返回服务器 CA 证书,证书中包含公钥信息;
- Fiddler 收到服务器响应之后,保存服务器证书并自签名一个证书,伪装成服务器将该证书下发给客户端;
- 客户端验证证书的合法性(Fiddler 能否抓取到 HTTPS 报文关键就看这一步了)(证书都是由 CA 组织下认可的根证书 Root 签发的);
- 客户端生产对称密钥并使用自签名证书的公钥进行加密,发送给服务器;
- Fiddler 拦截客户端的请求之后,使用私钥解密该报文,获取对称密钥并使用 CA 证书的公钥加密,再发送给 Web 服务器;
- Web 服务器接收到客户端加密后的对称密钥,采用私钥解密,并使用对称密钥解密测试数据传给客户端;
- Fiddler 使用前面获取的对称密钥解密报文;
- 客户端验证数据无误后,HTTPS 连接建立完成,此时客户端开始向服务器发送使用对称密钥加密的业务数据;
- Fiddler 使用前面获取的对称密钥解密客户端发送的数据并重新加密转发给客户端。
HTTPS 基本原理是用非对称密钥协商出对称密钥,再用对称密钥来加密业务数据。
简述密钥协商、握手步骤:
- 客户端请求连接服务器,发送客户端支持的加密协议和版本列表等信息给服务器
- 服务端确认加密方法,并发送 CA 证书(证书中包含公钥)给客户端
- 客户端验证证书的可靠性(是否有效?是否合法?),并从 CA 证书中取出公钥,然后生成一个随机密钥 K, 并用公钥加密得到 K' 发送给服务端。
- 服务端收到 k' 后用自己的私钥解密得到 k。
- 此时双方都得到了密钥 k,接下来就用密钥 k 数据传输,协商完成。
软件下载:
- Fiddler 官方下载地址:(Fiddler 安装包 → FiddlerSetup.exe)
- Willow 插件官方下载地址:(Willow 插件安装包 → WillowSetup-1.5.2.zip)
nginx 正向代理、反向代理解释
正向代理最大的特点:
- 客户端非常清楚明确要访问的服务器地址
- 服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端
- 正向代理模式屏蔽或者隐藏了真实客户端信息
反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
明白了 Fiddler 的原理,其实就清楚了。
tips: Node 做中间代理服务器的时候,会遇到 Fiddler,whistle,charles 之类的软件抓不到(Fiddler 的原理就是一个代理服务器,说明 Node 的请求没有经过 Fiddler 代理服务器)
PC 端浏览器、Windows 软件 进行抓包
打开 Fiddler(媒人/代理),Fiddler 其实就是古代的 "媒人",即代理。
寻到 Fiddler Options 路径,Tools---> Options, 配置 Options, 主要配置 HTTPS,Connections 信息。第一次配置会出现安装证书的请求,一路点击是就对了, 配置完毕一定要记得重启 Fiddler, 否则失效
Connections 配置,主要是让手机或电脑链接 Fiddler(媒人),默认端口号为:8888
Fiddler(媒人)配置完毕,接着配置客户端,不择手段让客户端链接媒人,和媒人产生联系。
打开 Windows 代理设置,代理配置路径,亲们自个百度
客户端已经和 Fiddler(媒人)产生一定联系了,已经可以抓取 Windows 软件和 IE 了, 不信上图给您看。
IE 抓包。直接访问 IE,Fiddler 自动运行且拦截数据
在这解释下 IE 代理自动变成配置完的代理,打开 IE 代理看看
Windows 软件抓包,即 Windows 微信中的小程序当然也可以抓取!如果是抓取小程序包的,就不用配置 app 的了,直接在电脑抓取即可,省事
接着说谷歌和火狐浏览器的,他们的代理不像 IE 自动,需要手动配置他们的代理,这里我以谷歌为例。
第一种方式:寻到谷歌代理配置路径(路径自己百度),配置:127.0.0.1:8888
第二种方式:以上是简单做法,这种需要翻墙下载扩展程序(Proxy SwitchyOmega), 进行配置
可以进行愉快的抓包了
手机抓包
下面是如何使用 Fiddler 对手机 APP 进行抓包:
安装后打开界面效果图如下:
每一个标签的说明这里不细说了,只说下需要抓包进行的操作:
- 因为 Fiddler 抓包的原理就是通过代理,所以被测终端需要和安装 Fiddler 的电脑在同一个局域网中。
- 开启 Fiddler 的远程连接,Fiddler 主菜单 Tools -> Fiddler Options…-> Connections 页签,选中 Allow remote computers to connect,并记住端口号为 8888,等会设置手机代理时需要。设置好后重启 Fiddler 保证设置生效。设置如下:
- 查看电脑 IP,在 CMD 中输入 ipconfig:
- 在手机侧设置代理
- 设置-WLAN,找到连接的 wifi 长按,选择修改网络:
- 然后勾选高级选项,选择代理为手动,填入代理服务器为自己电脑 IP,端口填入刚刚记住的 8888:
- 这里是以 Android 手机举例的,如果是 iPhone 则可以在对应 wifi 的设置中直接配置 HTTP 代理。
- 现在就可以开始抓包了:
- 在手机上对 APP 进行操作,从 Fiddler 上即可看到对应的网络请求信息:
- 在右边的 Composer 标签页中可以定义并发送网络请求:
- 我们也可以直接将左侧抓到的网络请求直接拖到 composer 中然后进行相应修改即可测试不同参数下该接口的功能是否正常。
- 在 filter 标签中我们可以设置不同的过滤规则对抓取的包进行过滤:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!