Android 上的抓包工具,有个叫 HttpCanary 的就不错。但是要使它能工作起来,通常需要有一些周边的基础设施(手机本地)要搭建好。
主要原因在于 HTTPS 流量占比越来越高。有一些应用,当 HttpCanary 的证书存储在用户区时是可以正常抓包的,但有一些则必须是证书存储在系统区才行。这就意味着需要一台 root 后的手机。然而,现如今的 Android,防控措施已然相当严实,如果采用 systemless 的方式 root 的话,root 之后将证书移动到 /system/etc/security/cacerts 路径下。
起先计划自己写一个 magisk 的模块来做这个事。按照我的理解,如果参照一下字体美化类的这种数据连结驱动的模块的组织,应该很容易把一个证书文件塞到需要的路径下。在下载参照模块的过程中,发现有个叫 Move Certificates 的功能模块,下载安装后检查了一下,没有任何设置。到系统的证书管理中查看,发现它把所有用户区的证书全部重定向到系统区了,这显然不符合安全原则,等老夫有空的时候看要不要还是按照自己的想法实现一个。要么是按原有思路处理单独的证书文件,要么是把要重定向到系统区的用户区证书用个界面选择一下,别一股脑都划过去。