接口测试实战 | Android 高版本无法抓取 HTTPS,怎么办?

简介: 接口测试实战 | Android 高版本无法抓取 HTTPS,怎么办?

【编者按】本文为霍格沃兹测试学院 @yuye 同学的接口测试实践笔记。

在接口测试中,相信很多人都遇到过 Android 高版本(Android7.0 以上)系统无法抓包的问题。

由于在测试过程中对分析定位问题很不方便,所以就想找开发的同学帮忙,结果开发也说搞不定,那只能自己解决了。

问题分析

问题原因分析如下:

  • 问题:Android6.0 及以下系统可以抓包,而 Android7.0 及以上系统不能抓包;
  • 原因:Android7.0+ 的版本新增了证书验证,所以 App 内不再像原来一样默认信任用户的证书;

参考网上资料得到如下解决方案:

方案一

  1. 在 Android 工程目录的 res 底下创建一个 xml 文件夹,然后在内部创建一个名为 “network_security_config.xml”的文件;

  2. 在 AndroidManifest 里的标签中,添加代码:

然后重新编译打包即可抓包,这对开发童鞋来说,也很方便。但是,因为测试的是企业微信小程序,想让企业微信的开发人员帮我这么干,简直是白日做梦,更不用说安全等问题…

方案二

找一个低于 6.0 或者等于 6.0 版本的 Android 设备或者模拟器,即可解决。但是考虑到:治标不治本,公司本身就没有这样的设备,再加上找了几个模拟器,都是 Android7.0 版本的,所以此方案,直接选择放弃。

然后只好再去找开发,开发研究了半天,结果过来告诉我,我的 iOS 是可以抓包的啊,Android 的就不知道了,一瞬间我都有点想掀桌子了…

只好再找测试开发同学咨询解决方案:

  1. 使用方案一
  2. 换个工具抓,例如 Fidder,或者 BurpSuite 等(这个尝试后发现还是不行)
  3. 直接去 NG 那里拦截,但是我需要抓取的有一部分是第三方的接口(前方已经高能,此路不通)

最后,还是有点不死心,自己继续搜索各种资料,终于黄天不负有心人,找到了满足条件的最终解决方法。

最终解决方案

Charles + VirtualXposed + JustTrustMe

实现步骤

进入 Github 下载如下两个 Page

第一步

使用如下 adb 命令分别安装两个 pages

adb -s R3J6R19B20004228 inatall VirtualXposedadb -s R3J6R19B20004228 install JustTrustMe
第二步

安装完成进入 VirtualXposed apk 应用,点击 6 个小点进入设置页面

第三步

进入设置页面,点击模块管理,勾选 JustTrustMe(当然我并没有找到它,可能是我这个版本不需要在手动选择了,安装之后自动识别到了)重启之后我们重新进去设置页面,添加我们需要抓包的应用即可,我这里选择的企业微信做案例。

第四步

点击添加应用,选择需要抓包的软件安装:

配置 Charles 抓包

设置 Charles 代理,此处不再说明,相信设置代理大家能自己解决,手机设置 wifi 里面代理改成手动。输入IP,端口:默认8888,注意手机和电脑在一个 wifi 下就 ok。

第六步

回到 VirtualXposed 上滑解锁,打开我们之前安装的企业微信,则发现 charles 已经成功抓取到安居客的 HTTPS 的数据包:

总结

测试工作中,遇到问题/bug 经常会让人很烦很慌,不知所措。但是,作为一个合格的测试人员,遇到事情,还是要努力做到「泰山崩于前而色不改,麋鹿兴于左而目不瞬」(秀文采~),连开发都放弃了,咱还能保持淡定,方显测试英雄本色

技术进阶没有捷径,唯有一步步积累,踏坑填坑坚持走下去。这次的问题虽几经波折,但我最终搞定之后,开发看我的眼神都不一样了,以后提 bug 也更加有说服力了。

相关文章
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
86 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
6天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
34 3
|
11天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
25 1
|
1月前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
1139 1
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
PyTorch 算法框架/工具 计算机视觉
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
本文介绍了使用YOLOv4-Tiny进行目标检测的完整流程,包括模型介绍、代码下载、数据集处理、网络训练、预测和评估。
104 2
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
|
1月前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
20 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
15天前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
31 2
|
16天前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
27 2
|
25天前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
18 3
|
1月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
296 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)