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包,看看是否能正常抓包,而不是花很多的时间去排查配置、证书的问题哦~

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

相关推荐
程序员夏洛4 小时前
TCP 是用来解决什么问题?
java·网络协议·http·https
zuozewei19 小时前
第02篇-k6-脚本结构与生命周期
软件测试·jmeter·性能测试·k6·ai 编程
软件交付观察室1 天前
数据大屏总数与明细为什么对不上?2026项目开发排查指南
软件测试·数据库·sql·sqlite·数据可视化
青瓦梦滋1 天前
【在线五子棋对战】游戏匹配模块
网络·c++·网络协议·http·https
测试开发技术1 天前
AI时代我们要如何玩抓包测试:Reqable + AI Agent
软件测试·人工智能·测试工具·接口测试·agent·抓包
泽众云测试2 天前
国产化替代国外性能测试工具推荐:泽众PerformanceRunner
软件测试·测试工具·性能测试
Lsetea2 天前
curl设置SSL_CERT_FILE仍报60:CURL_CA_BUNDLE与CA路径优先级排查
linux·https·ssl证书·openssl·curl
2501_915921432 天前
iOS应用从开发到上架App Store的完整步骤详解
android·ios·小程序·https·uni-app·iphone·webview
上海云盾-小余2 天前
自定义端口 HTTPS 部署:高防接入遇到的问题与调优方案
网络协议·http·https
是个西兰花3 天前
https 协议原理
网络协议·http·https