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

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

相关推荐
小时前端1 天前
HTTPS 页面加载 HTTP 脚本被拦?同源代理来救场
前端·https
赤月奇6 天前
https改为http
数据挖掘·https·ssl
测试老哥7 天前
如何使用Postman做接口测试?
自动化测试·软件测试·python·测试工具·测试用例·接口测试·postman
网络安全-老纪8 天前
一文2000字手把手教你自动化测试Selenium+pytest+数据驱动
自动化测试·软件测试·selenium·测试工具·pytest
程序员潇潇8 天前
pytest 参数化测试用例构建
自动化测试·软件测试·功能测试·程序人生·职场和发展·测试用例·pytest
Boxsc_midnight8 天前
【windows电脑浏览器直接访问虚拟机或云端openclaw的方法】一个不需要HTTPS的安全连接通道(基于SSH)
windows·安全·https·openclaw
学不完的8 天前
haproxy
linux·运维·https·负载均衡·haproxy
Web极客码9 天前
在WordPress中启用http2
https·wordpress
清清&10 天前
【网络】一文读懂HTTPS协议
网络·https·智能路由器