Fiddler工具介绍
Fiddler是一个通过代理的方式来进行抓包工具,运行时会在本地建立一个代理服务,默认地址:127.0.0.1:8888。Fiddler开启之后,配置本机代理,再打开IE浏览器,IE的PROXY会自动变成127.0.0.1:8888,通过其来抓取IE浏览器与服务器之间的所有HTTP(s)请求,但是火狐、chrome需要手动设置代理。
配置本机代理,IE 的 代理 自动变成 刚刚配置的, 谷歌和火狐则需要 手动 设置 代理。 具体原因:浏览器人家厂商自己设置的。
客户端(浏览器)与服务器之间通过建立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)
正向代理最大的特点:
客户端非常清楚明确要访问的服务器地址
服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端
正向代理模式屏蔽或者隐藏了真实客户端信息
反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
明白了fiddler 的原理,其实就清楚了。
tips: node 做中间代理服务器的时候,会遇到 fiddler,whistle,charles 之类的软件抓不到(fiddler的原理就是一个代理服务器,说明node的请求没有经过Fiddler代理服务器)
打开Fiddler
(媒人/代理),Fiddler其实就是 古代的 “媒人” ,即 代理
。
寻到 Fiddler options 路径, Tools---> Options, 配置 Options
,主要配置 HTTPS
,Connections
信息. 第一次配置会出现安装证书
的请求,一路点击 是
就对了, 配置完毕一定要记得重启
Fiddler,否则失效
Connections 配置,主要是 让手机 或电脑 链接 Fiddler(媒人),默认端口号为:8888
Fiddler(媒人)配置完毕,接着配置 客户端
, 不择手段让 客户端 链接媒人,和媒人产生联系。
客户端已经和 Fiddler(媒人)产生一定联系了,已经可以抓取 windows软件
和 IE
了, 不信 上图给您看。
IE 抓包。 直接访问IE,Fiddler自动运行且拦截数据
在这解释 下 IE 代理 自动变成
配置完的代理 ,打开IE 代理看看
windows 软件抓包,即 windows微信中 的小程序当然也可以抓取!如果是抓取小程序
包的,就不用配置app
的了,直接在电脑抓取即可,省事
接着说 谷歌 和 火狐浏览器的,他们的代理不像IE自动,需要手动配置他们的代理,这里 我以 谷歌为例。
第一种方式:寻到谷歌 代理配置路径(路径自己百度),配置:127.0.0.1:8888
第二种方式:以上是简单做法,这种需要 下载扩展程序(Proxy SwitchyOmega) ,进行配置
可以进行愉快的抓包了
下面是如何使用fiddler对手机APP进行抓包:
每一个标签的说明这里不细说了,只说下需要抓包进行的操作:
1、因为fiddler抓包的原理就是通过代理,所以被测终端需要和安装fiddler的电脑在同一个局域网中。
2、开启Fiddler的远程连接,Fiddler 主菜单 Tools -> Fiddler Options…-> Connections页签,选中Allowremote computers to connect,并记住端口号为8888,等会设置手机代理时需要。设置好后重启fiddler保证设置生效。设置如下:
4、在手机侧设置代理
然后勾选高级选项,选择代理为手动,填入代理服务器为自己电脑IP,端口填入刚刚记住的8888:
这里是以Android手机举例的,如果是iPhone则可以在对应wifi的设置中直接配置HTTP代理。
5、现在就可以开始抓包了:
在手机上对APP进行操作,从fiddler上即可看到对应的网络请求信息:
6.在右边的Composer标签页中可以定义并发送网络请求:
我们也可以直接将左侧抓到的网络请求直接拖到composer中然后进行相应修改即可测试不同参数下该接口的功能是否正常。
7、在filter标签中我们可以设置不同的过滤规则对抓取的包进行过滤:
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取