fiddler/charles https配置完毕依然无法抓取APP https请求的解决办法

一、问题背景

APP测试的时候,通常都需要通过抓包工具抓取各类请求,查看接口的入参、返回值等,用于分析定位问题。

常用的抓包工具有fiddler、charles等,抓取http的请求比较简单,https的请求稍显复杂。如果还不知道如何配置的同学,可以参看杨叔之前写的文章:Charles抓取https请求及常见问题解决

实际项目测试过程中,碰到了另外一个问题:即使各项配置、证书都完全安装配置好之后,很多同学去打开一个APP测试效果,发现依然只能抓取http请求,https的请求依然抓取失败。 如下图所示,https请求:

然后很多时候第一想法就是花很多的时间去排查抓包工具配置的问题,浪费了很多时间,结果确依然没有解决问题。

二、根本原因

安卓7.0版本及以上系统对于证书的安全策略做了修改,用户证书只能用于代理浏览器的流量,而APP应用是不会信任这些证书。

证书没有被信任,就导致只能抓取http请求,而https这一类的请求则无法抓取。而目前市面上的很多手机的安卓版本已经远远大于7.0了:

所以无论你如何配置抓包工具,由于安卓高版本系统对证书的安全策略的设定,都无法抓取到APP的https请求。

三、解决方案

要解决这个问题,有以下两个方案:

  • 方案一:IOS和安卓<7.0的版本没有此问题,因此如果条件允许,可以换为苹果手机或安卓版本低于7.0版本的老手机去抓取。但是说实话,现在要找一个安卓版本低于7.0版本的手机,还是挺难的,所以这个方法理论上可用,但实际上并不算是一个很好的解决方案。
  • 方案二:让研发人员在代码中设置不启用该安全策略,生成一个测试的APP包,测试人员使用这个测试的APP包去抓取https请求。而正式发布对外的APP,肯定是要启用安全策略的,因此无法直接用正式发布的APP来直接抓取https请求。

总结:如果你也碰到同样的问题,恰好你的手机也是安卓手机,那么先看看自己是不是抓的是正式发布的APP的请求。如果是,让研发人员打一个测试的APP包,看看是否能正常抓包,而不是花很多的时间去排查配置、证书的问题哦~

希望以上的内容,对你有帮助,麻烦点个赞+收藏+分享,一键三连啦~

相关推荐
牛奶20 小时前
HTTPS你不知道的事
前端·https·浏览器
AlfredZhao4 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
Avan_菜菜9 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
程序员龙叔15 天前
编写高质量 Skill 系列 -- 如何设计需求分析与用例生成的 SKILL
自动化测试·软件测试·python·软件测试工程师·接口测试·性能测试·skill·ai测试
goldenrolan15 天前
A公司物料替代测试系统 v1.7:从需求到 exe/apk 的 AI 辅助全链路实践
android·自动化测试·软件测试·python·ai
程序员mine15 天前
HTTPS-TLS加密与证书完全指南(中)
网络协议·https·ssl
Raina测试15 天前
欢迎来到《Raina 测试学习指南》博客✨ | Raina测试学习指南
软件测试·ai测试
程序员小远15 天前
自动化测试基础知识总结
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
程序员mine15 天前
HTTPS-TLS加密与证书完全指南(上)
网络协议·https
goldenrolan15 天前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外