如何使用Reqable分析Android模拟器应用流量

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


今天写一篇教程,讲解如何在Android模拟器上使用Reqable进行流量分析。

01 Android系统证书策略

首先,简单概述下Android系统的证书策略,可以帮助我们更好地分析问题。

在任何一个系统上,都会有一个CA证书管理器,里面内置了绝大多数常用的CA根证书。只有被这些根证书签发的SSL证书才能被系统信任(信任才能使得HTTPS等基于SSL协议的连接正常握手),Android系统也不例外。我们可以在设置中搜索信任的凭据查看系统中所有的证书。

在Android系统上,证书分为两个类型系统证书用户证书。系统证书是系统出厂(或OTA)内置的,用户证书是用户自行安装的。

那么,系统证书和用户证书又什么区别呢?

目前Android的系统已经迭代到版本14.0了,对证书机制有一个非常重要的分水岭Android 7.0。在7.0版本之前(不包括)用户证书和系统证书的权威性是等价的,也就是是系统会无条件信任用户证书。很明显,这可能带来一些安全隐患,所以从7.0开始,Android默认不再信任用户证书了。正常情况下,系统证书用户是没有权限修改(添加或者删除证书文件)的,用户证书则是没有限制的。

对于我们分析Android系统的流量,从Android 7.0开始就有了限制,Reqable/Charles/Fiddler等调试工具的证书安装到用户证书目录无效了,只有安装到系统目录才有效。

严格来说,上面这段话并不是完全正确的。Android系统为了兼容性考虑,如果App的 targetSDKVersion < 24 在Android 7.0+系统上也是可以信任用户证书的。当然,目前绝大多数App的targetSDKVersion都超过24了。

这种限制对于Android开发者而言也是相当不友好的,所以Android额外补充了网络安全配置文件功能,可以支持开发者在App中配置可以信任哪些用户证书。具体配置方式详见这里。

从根本上解决证书问题,唯一可行的方式就是将调试工具的CA证书放到系统目录下,重新编译系统镜像是一种方式,但是粗暴了些。常规的方式还是解锁系统分区,然后手动写入CA证书文件。

02 Android模拟器

前面背景知识科普完了,下面以Android官方模拟器为例,讲解如何使用Reqable进行流量分析。

2.1 模拟器安装

首先下载安装Android Studio,无需梯子,直接下载速度非常快。

image.png

安装完成后启动,启动后无需新建项目,点击More Actions -> Virtual Devices Manager,打开模拟器管理器界面。

image.png

点击Create virtual Device,打开模拟器列表界面:

image.png

Android官方提供了大量的模拟器型号,包括手机、平板、电视、穿戴设备等,我们这里选择创建一个手机模拟器Pixel 6。

image.png

注意,请勿选择包含Play Store的型号,无法进行Root操作。不同的系统下,模拟器的架构不一样。例如我这里是MacBook M2,推荐的都是arm64架构的模拟器,性能是最佳的。在Windows x64平台下,推荐的一般都是x64架构的模拟器。

接下来,选择系统版本,然后点击Release Name右边的下载图标下载系统镜像,我们这里以Android 13.0为例。系统镜像下载完成后,点击Next进行下一步。

image.png

这一步可以对模拟器进行一些参数配置,例如内存大小、存储空间等,我们忽略这个配置。最后,点击Finish,完成模拟器的创建。

image.png

2.2 模拟器启动

注意,这里我们通过命令后启动模拟器而不是通过GUI,因为需要追加启动参数。

首选,配置下Android SDK的环境变量,方便我们使用adb和emulator命令。

export PATH="$PATH:/Users/megatronking/Library/Android/sdk/platform-tools"
export PATH="$PATH:/Users/megatronking/Library/Android/sdk/emulator"
export PATH="$PATH:/Users/megatronking/Library/Android/sdk/tools"
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"

这里是MacOS的环境变量配置,Windows略有不同。这里一定要注意PATH的先后顺序,否则模拟器可能无法启动。

接下来,我们使用emulator命令启动模拟器,Pixel_6_API_33是模拟器的名字。我们在Android Studio的Device Manager中可以看到模拟器的名字,将空格替换成下划线即可。

emulator -avd Pixel_6_API_33 -writable-system

如果没有报错的话,我们会看到模拟器启动成功了。

2.3 解锁系统分区

我们需要以root模式运行adb服务,新开一个命令行窗口,输入命令:

adb root
# 输出 restarting adbd as root

禁用secure boot verification,输入命令:​​​​​​​

adb shell avbctl disable-verification
# 输出 Successfully disabled verification. Reboot the device for changes to take effect.

remount全部分区,输入命令:​​​​​​​

adb remount
# 输出 Using overlayfs for /system
# 输出 Using overlayfs for /vendor
# 输出 Using overlayfs for /product
# 输出 Using overlayfs for /system_ext
# 输出 Now reboot your device for settings to take effect
# 输出 remount succeeded

可以看到system已经解锁了,下面就可以导入CA证书了。

2.4 导入CA证书

我们在Reqable中先导出CA证书,点击左下角下载按钮。

image.png

使用下面的命令,将上一步下载的证书导入到模拟器系统证书目录:

adb push reqable-ca.crt /system/etc/security/cacerts/364618e0.0

导入后,我们在模拟器系统的Settings中搜索credential,点击Trusted Credentials检查Reqable的CA证书是否存在于System目录中。

image.png

上图表示CA证书已经导入成功了。

03 流量转发​​​​​​​

我们需要将Android模拟器的流量转发到PC端的Reqable进行分析,有下面两种方式。

3.1 代理转发

将模拟器的代理配置设置为Reqable的代理服务器地址,点击模拟器右侧功能操作栏最下面的...按钮打开模拟器设置页面。

image.png

3.2 VPN转发

在模拟器上安装socksdroid,打开下面的地址下载apk文件。

https://github.com/bndeff/socksdroid/releases/download/1.0.3/socksdroid-1.0.3.apk

将下载好的socksdroid直接拖到模拟器窗口中进行安装,也可以使用adb进行安装。

adb install socksdroid-1.0.3.apk

安装完成后打开socksdroid,配置电脑的IP地址和Reqable代理端口,并启动右上角的开关。

image.png

04 流量分析

在Reqable中启动调试,注意这时候无需配置系统代理,因为我们不需要分析电脑的流量。

在模拟器中使用Chrome打开Reqable官网测试下,效果OK。

image.png

我们再测试下原生应用,使用Android Studio写个Demo发送个请求试试:

image.png

看起来也没有问题,搞定。

image.png

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值