背景
最近有人反映说无法抓取app了,之前配置好的现在都不能用了,包括ios和android设备。我个人的手机(android 9.0)在之前也尝试过抓取,证书齐全,试了下,果然是不行了。
安卓7.0
经过
第一个https请求如下
复制链接在浏览器中打开,捕获一切正常!而通过打开app发送这个请求,捕获到该请求,但app提示错误

WTF?
由于app测试不多,不大关注,当发现这个问题后,进行了一系列尝试和百度,说法最多的如下:
附上安卓开发官方说明链接: https://developer.android.com/training/articles/security-config
意思是,证书分为系统证书和用户证书,而通常我们使用fiddler也好,charles也好,或者其他抓包工具也罢,当抓取https请求均需要安装该工具自备的安全证书。安卓7.0以下的手机,是信任这些证书的。而安卓7.0开始,用户自己安装的证书是不被信任的,会导致无法抓取https请求。
那么问题来了,我自己的安卓机一直是基于安卓9的,应该不是版本问题直接导致的。然后又想到,对于证书信任的问题,是否是原生安卓的某个地方配置的呢?
解决方法
问题原因还没明确,但问题得先解决啊,找到了一些解决方法。
- 采用安卓7.0以下版本手机 — 2020年了,忽略
- 开发打包的时候将抓包工具生成的包带入,信任该证书,仅适合自己的app,需要开发做修改 — 远水解不了近火,先忽略 (https://www.jianshu.com/p/ed474611f756)
- 手机root之后,将证书通过adb指令push到手机系统证书目录下,使得证书被信任 — root风险高且不是所有测试机都可以root,忽略 (https://docs.mitmproxy.org/stable/howto-install-system-trusted-ca-android/)
- 安卓模拟器自带root来实现 — 先不说装模拟器又是一堆乱七八糟的文件,本来风扇就呼呼响了,忽略
- 使用国内大佬开发的viturlxposed框架, 在手机上模拟root环境 — 明智的选择😄 (https://www.cnblogs.com/jiangmingbai/p/13049710.html)
……
综上,选择使用viturlxposed框架。
操作如下
1.安装apk https://github.com/android-hacker/VirtualXposed
📎VirtualXposed_0.18.2.zip (可直接下载解压后使用。)
2.打开app,点击下面的六个点(点击),点击添加应用。
找到本机已经安装的app,勾选,然后安装。
弹出安装方式,选Virtualxposed即可。


安装完成以后,返回上一层,回到六个点的画面(其实是一个空的桌面),上滑可以看到环境内所有app。
可以看到app已经装好,下面就是见证奇迹的时候,点击打开他。


app打开了!切到抓包界面
所有请求一览无余,返回值一切正常。
注意点
- 对安卓来说,该方式不限于使用哪个抓包工具
- 安装证书,保持同一局域网内,配置代理等操作和平常一样
IOS11及以上
原因
在ios更新到11以后,除了需要安装证书的时候安装下描述文件,还需要用户手动去启用证书。
解决方法
1.先正常安装描述文件
2.在【通用】–【关于手机】–【证书信任设置】找到安装的证书,开关滑动到右边,启用证书。

