当前位置: 首页 > news >正文

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

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

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

问题分析

问题原因分析如下:

  • 问题:Android6.0 及以下系统可以抓包,而 Android7.0 及以上系统不能抓包;

  • 原因:Android7.0+ 的版本新增了证书验证,所以 App 内不再像原来一样默认信任用户的证书;

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

方案一

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

73c8e2040de56455528931b559ed61db.jpeg

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

e43a2bbe0f0b01ee9da56c7236d19faa.jpeg

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

方案二

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

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

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

  1. 使用方案一

  2. 换个工具抓,例如 Fidder,或者 BurpSuite 等(这个尝试后发现还是不行)

  3. 直接去 NG 那里拦截,但是我需要抓取的有一部分是第三方的接口(前方已经高能,此路不通)

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

最终解决方案

Charles + VirtualXposed + JustTrustMe

实现步骤

进入 Github 下载如下两个 Page

  • VirtualXposed:GitHub - android-hacker/VirtualXposed: A simple app to use Xposed without root, unlock the bootloader or modify system image, etc. 4

  • JustTrustMe:GitHub - Fuzion24/JustTrustMe: An xposed module that disables SSL certificate checking for the purposes of auditing an app with cert pinning 3

第一步

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

adb -s R3J6R19B20004228 inatall VirtualXposedadb -s R3J6R19B20004228 install JustTrustMe

第二步

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

6deed3916660d99cd0a2dd3bf668a1be.jpeg

第三步

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

7e71e0e85176e95bcfe99f4204c206cd.jpeg

第四步

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

8c96b442cc2cffb68acf3fe59e7b5020.jpeg

配置 Charles 抓包

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

第六步

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

4fe60ab8334436568a21247b030eed6e.jpeg954c59c2f9852cc003a474449a8b8223.jpeg

总结

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

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



相关文章:

  • 嵌入式开发:清理可重用软件的API
  • Windows与网络基础-3-虚拟机安装Kali Linux
  • 面试题-谈谈你对JVM的理解
  • 面试时Dubbo原理记不住?来看看《Dubbo原理浅析——从RPC本质看Dubbo》
  • 开源治理:安全的关键
  • 什么是快应用?与原生APP相比优势在哪里
  • 卷积神经网络结构有哪些,卷积神经网络结构特点
  • 阿里内部首发面试终极指南V3.0,相对一线大厂面试知识点+面试题
  • vue路由原理
  • idea常用快捷键和插件
  • 04_feign介绍(OpenFeign)
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • 长安链源码学习v2.2.1--ioc机制(九)
  • 面试必备:《Java 最常见 200+ 面试题全解析》
  • 抖音短视频运营规划内容孵化计划书模板
  • 「面试题」如何实现一个圣杯布局?
  • 4个实用的微服务测试策略
  • httpie使用详解
  • js递归,无限分级树形折叠菜单
  • React 快速上手 - 07 前端路由 react-router
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • web标准化(下)
  • 回流、重绘及其优化
  • 深度学习在携程攻略社区的应用
  • 深度学习中的信息论知识详解
  • 手机端车牌号码键盘的vue组件
  • 算法系列——算法入门之递归分而治之思想的实现
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • (14)Hive调优——合并小文件
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (九)信息融合方式简介
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • ../depcomp: line 571: exec: g++: not found
  • ./configure,make,make install的作用(转)
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .net CHARTING图表控件下载地址
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net refrector
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .net和php怎么连接,php和apache之间如何连接
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET命令行(CLI)常用命令
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .net项目IIS、VS 附加进程调试
  • .NET中GET与SET的用法
  • .sh
  • ??myeclipse+tomcat
  • @ComponentScan比较
  • @WebServiceClient注解,wsdlLocation 可配置
  • [1]-基于图搜索的路径规划基础