使用fiddler抓取HTTPS的数据包(抓取App端的数据包)
众所周知,我们在做接口测试的时候有两种情况:
第一种是先拿到接口测试规范文档,再去做接口测试。
第二种是没有接口文档,只有通过自己抓包。
那么说到抓包,就不得不说抓包工具,对于浏览器web端,我们只需要通过F12打开开发者工具便可抓包;但是对于手机端,我们就需要利用抓包工具,比如常用的抓包工具:fiddler、Charles。
接下来的内容就是教你如何利用fiddler抓取手机端的包。
这里使用的是安卓模拟器,当然如果你喜欢使用真机测试也是可以的。
-
下载并安装fiddler
建议去官网下载:
https://www.telerik.com/fiddler
当然,官网下载可能比较慢,这里提供百度网盘下载。
百度网盘地址:
链接:https://pan.baidu.com/s/18hzkk4LRCgsqHOeTuLRWVQ
提取码:fe12安装:
安装方式很简单,双击下载好的.exe文件,然后选择目录,next,next,完成安装即可。
下载并安装完成后打开的界面如下:
-
配置fiddler代理:Tools -> Options
想要抓取https的数据包必须安装证书。
接着是手机的配置
-
查看电脑IP地址
方式一:打开fiddler软件 -> 鼠标移至右上角Oline处
方式二:打开cmd -> ipconfig
-
模拟器(手机)配置代理:设置 -> WLAN -> 长按wabao -> 修改网络(使模拟器与fiddler代理服务器在同一网络)
-
打开手机模拟器的浏览器输入ip及端口号
点击FiddlerRoot certificate下载证书,下载完成后点击允许安装证书
这时候一定要把安装的证书设置为信任的证书:手机设置->通用->关于本机->证书新人设置,把刚才安装的证书设置为信任的证书。
-
然后打开手机上的app,在fiddler中就可以看到http的数据包了,打开一个https的连接,也可以看到,数据是没有加密的,说明https数据包抓取成功。
?PS:如果前面的步骤都设置完成,还是抓不到包,极大可能是因为证书配置有问题,把之前的证书清除,再按照步骤重新配置一遍,重启fiddler,并且重新在手机上安装证书或者重启模拟器。
?CA证书:抓取HTTPS的数据包。
?fiddler代理抓取不到数据包的两种情况:
-
虽然fiddler代理可以抓取大多数的数据包,但并不是所有的数据包都能抓到。比如:http2、tcp、udp、websocket,fiddler代理是抓取不到这些数据包的。因为fiddler是基于.net framework实现的,.net framework不支持上述列举的协议。
-
还有另外一种情况也是无法抓到数据包的,app使用自带的证书,app不信任我们给手机安装的证书。fiddler抓包的原理是中间人攻击,也就是说,两头瞒,欺骗客户端还欺骗服务器端,如果https证书在app里面写死,app只信任自己的证书,fiddler代理就没有办法瞒过客户端了,因此也就抓取不到数据包。
-
相关文章
- 用 Span 对 C# 进程中三大内存区域进行统一访问 ,太厉害了!
- C#8.0之后接口已经不再单纯了,我懵逼了!
- 技术债! 怎样简洁高效的实现多个 Enum 自由转换
- 为啥 Response.Write 后,View就不渲染了?
- C# 中的 is 真的是越来越强大,越来越语义化
- 遍历 Dictionary,你会几种方式?
- C# 中居然也有切片语法糖,太厉害了
- 你没有看错,爬网页数据,C# 也可以像 Jquery 那样
- 虚虚实实,亦假亦真的 ValueTuple,绝对能眩晕你
- Linq 下的扩展方法太少了,您期待的 MoreLinq 来啦
- 终于弄明白了 Singleton,Transient,Scoped 的作用域是如何实现的
- 快醒醒,C# 9 中又来了一堆关键词 init,record,with
- await,async 我要把它翻个底朝天,这回你总该明白了吧
- 内存不够用还要速度快,终于找到可以基于 File 的 Cache 了
- 如何校验内存数据的一致性,DynamicExpresso 算是帮上大忙了
- Enumerable 下又有新的扩展方法啦,快来一起一睹为快吧
- 配置文件中的数据库连接串加密了,你以为我就挖不出来吗?
- 工作十余年,还是一直被问 委托和事件 有什么区别? 真是够了
- 用了Dapper之后通篇还是SqlConnection,真的看不下去了
- 一个有趣的问题, 你知道SqlDataAdapter中的Fill是怎么实现的吗