使用Fiddler或者其他代理工具实现HTTPS应用的抓包的方法
前言
从90年代Netscape创造SSL开始,https已经诞生了很久,到今天,几乎所有的网站都已经支持了https了。
需求
而移动端的app当然也不例外,在实际开发中我们也经常需要对api传输的数据进行验证,一般都是用Fiddler这类的代理工具进行实现,而这个过程中当然少不了https解密,这个时候我们为了实现这一需求,通常有以下几种方法。小伙伴们有什么其他比较好的方法也可以补充。
实现方式 | 优点 | 不足 |
---|---|---|
1、将测试环境的https换成http | 简单 | 不够灵活,因为正式环境也要调试 |
2、对移动端传输的数据进行代理 | 具体实现的方式比较灵活,上线也方便 | -- |
实现
对移动端传输的数据进行代理的实现方式,下面的方法我都亲自验证过,可行。
1、ios
ios比较简单,直接pc端安装Fiddler类代理工具,ios端系统安装证书,wifi配好代理,不出意外就能用了。具体可去搜索,我想都很详细。
2、android
- android7 以下 和ios差不多。
- android7 及以上,Android7以后,系统不再信任用户级的证书,只信任系统级的证书,所以要抓包我们就需要让系统去信任代理工具的证书。
这里具体用起来有两种方式:
- 有root的设备,测试人员不嫌麻烦的
使Fiddler类的代理工具证书变成系统证书就行了,具体实现参考https://blog.csdn.net/djzhao627/article/details/102812783 - 无root的设备,开发人员不嫌麻烦的
在app代码中添加Fiddler类的代理工具证书,并且被app信任用户添加的证书,具体实现参考https://blog.csdn.net/djzhao627/article/details/108658332?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0.no_search_link&spm=1001.2101.3001.4242
彩蛋
Fiddler类的代理工具使用起来的时候,切wifi配置挺麻烦的,代理老要开和关,这里可以设置一个专门用来代理的wifi网路,或者借助Droni来管理网络的代理配置,可以偷个懒,具体使用可以去搜索,挺简单的,可能你下载看一眼就会了,支持中文。