大家好,欢迎来到IT知识分享网。
目录:导读
引言
在日常测试中,不管是功能测试还是接口测试,避免不了抓包。抓包工具有很多,这里只讲fiddler的使用,并且是对https请求的抓取。
概况
抓包之前,先了解一下Fiddler。
Fiddler是一款免费且功能强大的数据包抓取软件。它通过代理的方式获取程序http通讯的数据,可以用其检测网页和服务器的交互情况,能够记录所有客户端和服务器间的http请求,支持监视、设置断点、甚至修改输入输出数据等功能。fiddler包含了一个强大的基于事件脚本的子系统,并且能够使用.net框架语言扩展。
基本原理
简单来说就是:
抓HTTPS的原理
现在APP中的数据传输基本上都使用HTTS传输,传输的数据都是经过加密的,这增加了我们分析数据包的难度,还好Fiddler除了可以抓取HTTP数据包,还可以抓取HTTPS数据包。由于HTTPS传输需要使用到CA证书,所以抓取抓取HTTPS数据包时需要做一些特殊配置。Fiddler截取HTTPS报文的流程大致如下:
HTTPS请求两类
1.带证书的https请求:请求中携带证书,只要证书正确就能请求过去,没有其它要求。
2.不带证书的https请求:只要是CA颁布的正规证书(收费的),都可以不用携带证书,达到https的加密效果,大大减轻了请求的代码量,但是这种请求必须要求请求方合法(时间要正确,比如把手机时间调成几天前,证书就会认为请求非法,拒绝访问)
Fiddler抓包要求
从上面可以看到,fiddler相当于代理,客户端和服务器交互都要通过fiddler,Fiddler抓取HTTPS协议成功的关键是根证书(根证书是CA认证中心给自己颁发的证书,是信任链的起始点。安装根证书意味着对这个CA认证中心的信任。),这是一个信任链的起点,这也是Fiddler伪造的CA证书能够获得客户端和服务器端信任的关键。
手机或模拟器抓包https请求的话,需要在手机上安装fiddler证书。
安装步骤这里不复述了。
问题1:需要注意的是,不是任何Https请求包都可以抓到的。
Android7.0以下是可以的,只要手机里安装对应的CA证书,比如用Charles抓包,手机只需安装Charles提供的证书就行;Android7.0之后,Google推出更加严格的安全机制,应用默认不信任用户证书(手机里自己安装的证书),自己的app可以通过配置解决,但是抓其它app的Https请求就行不通。
首先看一下安卓7.0以上的系统,抓包如下:
如果是安装7.0以下的版本,这里拿安卓4.0来演示,如图:
结论是android7.0以下版本,在模拟器下抓包https是没有问题的。当然手机同样的版本也会支持。而高于7.0的安卓系统则抓不了https请求。
注意这里的https请求是没有携带CA证书到请求中去的。
问题2:如果不能,那些情况下可以抓取,那些情况下抓取不到?
虽然Android7.0之后常规手段不能抓Https的包,但是可以通过黑科技跳过证书验证流程,例如,通过xposed,安装JustTrustMe模块,Https证书验证直接跳过。这个没有试过,可自行测试。
问题3:如何防止被抓包?
- Https双向验证,不是客户端的请求,拒接链接(这里服务端拒绝和客户端建立连接)
- 判断是否是使用WIFI代理(不可靠,可以通过hook跳过)
- 数据加密传输(很多app都是采用加密传输,要注意密钥的安全问题,防止被反编译泄露密钥)
总结
以上就是手机或模拟器抓取https请求包的介绍。一些简单安装或抓取步骤就没在这里一一讲解。 另外对自动化测试,测试开发及性能测试相关的朋友可以加入交流群,学习与沟通~
写在最后
如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!
看到这篇文章的人有觉得我的理解有误的地方,也欢迎评论和探讨~
你也可以加入下方的的群聊去和同行大神交流切磋
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/111784.html






