简介

透明模式是基于原有代理模式进行的增强模式,目的是为了更容易捕获安卓设备中的APP中HTTP/HTTPS请求URL,原有的代理模式对于大多数用户来说,可能只能安装用户证书,手动证书的安装非常麻烦,参考此教程就可以发现步骤繁多,对新手用户极不友好,所以透镜模式主要解决两个问题:
1.安卓设备的系统级别根证书安装(需设备已root)
2.拦截一些普通代理不能获取的HTTPS

前提条件

  • 已root的安卓手机或安卓模拟器(绝大多数模拟器均支持root权限)
  • 安卓系统建议安卓9+,推荐安卓11+(因为太旧的系统很容易被你的目标平台检测到root环境而阻止某些功能)
  • 疯狂URL 4

如果你的目标APP无法在模拟器上运行或正常使用,并且你的安卓手机也没有root,那么,你可以尝试使用虚拟机的方式,虚拟机本质上也是一种模拟器,但它主要安装在你的手机里,然后你只需要将你的目标APP安装到虚拟机里的安卓系统中,这是一个独立的安卓系统环境,可以安装独立的CA证书并与疯狂URL 进行连接,我们测试过一些虚拟机,比如光速虚拟机,但请注意,该虚拟机是收费的,并且与我们没有任何的合作或利益关系,仅仅是作为测试使用,如果有条件,我们建议使用自己的已root的安卓手机,或寻找其他免费的方案代替

操作步骤

为了方便测试,这里首先以mumu模拟器进行演示,手机用户的操作基本相似,手机主要解决使用数据线与电脑连接问题,安装证书和连接步骤基本一样(手机连接需要切换二维码为局域网)

安装安卓CA证书

1.启动模拟器并开启root权限

确保已经启动模拟器并已经开启root,以mumu模拟器为例,需要在设置中启用以下部分,如图

以上两个是必须的,如果你使用其他模拟器,通常也具有这两个选项,至少应该有root权限,如果没有找到,请去对应的模拟器官网查看相关资料或使用搜索。

这两个选项关于证书的安装成功与否所以必须确保提前开启,手机也是同理,但是手机的root与这个有所不同,你应该提前了解你的手机是否已经获得root权限及系统写入权限

2.使用疯狂URL 4 安装证书

启动最新版的疯狂URL 4(至少v4.4+),然后切换到代理时模式并启动,如图

⚠ 请注意,首次使用代理模式的用户,你可能会看到弹出证书安装的提示,请务必确定安装,否则会直接影响后面的正常使用,具体参考代理模式的教程

点击代理模式屏蔽的安卓图标按钮打开安卓设备管理界面

此时,你可能看到的界面和我一样,也有可能你看到的可用安卓设备列表是有设备信息的,如果你看到的是空的,那么我们需要先回到模拟器,查看当前模拟器的ADB端口信息,mumu模拟器的具体步骤如下:

1.找到顶部菜单,然后点击问题诊断

2.然后划到最底部找到网络信息

图中的 ADB调试端口 16480 就是我们接下来要用到的

接下来在Windows开始菜单,输入cmd 打开命令行,并输入以下adb命令回车:

adb connect 127.0.0.1:16480 
# 16480 是模拟器的端口号,请以你自己的为准,不一定与我的相同

回车后你应该会看到这个输出:connected to 127.0.0.1:16480,这样就说明你成功连接到了模拟器,如果有其他错误,可能需要进一步根据错误排查。

现在回到疯狂URL 4的安卓设备管理界面,点击刷新按钮

这时应该能看到设备信息,接下来就可以开始安装证书了。选择127.0.0.1:16480,并点击下方的安装证书按钮

正常情况,你会看到证书安装成功的提示,如果安装失败,大概是root权限的问题,需要回到前面检查模拟器是否完全开启root权限和系统磁盘写入权限

3.疯狂URL 4 连接模拟器

证书安装完成后,就可以点击连接 按钮进行连接了,首次连接时,你应该会看到模拟器会安装NetLens APP和启动VPN的提示,你需要点击确定

确认后,你应该能看到以下连接状态

必须能看到两个信任:用户信任和系统信任已启用,否则可能证书安装如有问题

以上步骤完成了将模拟器与我们的疯狂URL 4代理模式真正建立连接的步骤,接下来就可以关闭安卓设备管理界面了。

APP 拦截测试

后续步骤,你可以开始测试你要拦截的某些APP中的URL请求,测试非常简单,只需要打开你的APP,正常使用即可,比如如果你要拦截测试APP中的直播源或视频回放,你只需要进入直播间或打开回放播放,然后观察疯狂URL 4的主窗体界面

常见问题

这是非常常见的问题之一,这种情况下,有以下可能的原因:

1.通常是要测试拦截的APP使用了证书固定,简单的说,该APP不信任我们的疯狂URL 4安装的证书,它只信任它自己生成的。那有没有办法解决?从技术上有,但是非常复杂,并且是需要对特定APP进行针对性处理,不具备通用性。

2.APP检测到VPN环境,因此内部可能阻断了网络连接,很多APP为了防止使用代理服务器和VPN环境,所以会在启动时或启动后的一系列操作中检测用户的网络环境,因为几乎绝大多数的TLS(如https)流量拦截主要以代理服务器或VPN进行,NetLens APP正是使用VPN服务进行拦截。

以上两种情况是最常见的,目前没有更好的解决办法,如果遇到类似的情况,你可以分别尝试以下操作,不一定有效,但可以尝试:

  • 使用代理服务器+NetLens VPN:在VPN启动状态下,继续在设置-网络-当前连接的网络手动设置代理服务器,IP为疯狂URL 4所在的局域网IP地址,比如192.168.xx.xx ,你可以通过命令行输入 ipconfig 查看你当前的局域网IP,其他方式也可以,比如直接查看你的网络连接属性。然后端口号填写疯狂URL 4代理模式旁边使用的端口号
  • 断开NetLens APP的连接(会自动关闭VPN服务),然后单独配置代理服务器,即上面提到的手动设置代理服务器

有关如何在模拟器或手机设置代理服务器的步骤,可参考另一个教程 (证书安装步骤可省略,因为前面已经通过安卓设备管理界面安装过)

由于模拟器具有独立的网络隔离环境,在与宿主机通信时,可能由于各种原因导致疯狂URL 4无法连接到APP和VPN服务,可以尝试以下方法:
1.在安卓设备管理界面,最右侧的二维码上方切换为局域网,并选择你当前使用的活跃网卡,比如我的是笔记本,会看到无线网卡,IP是当前的局域网IP,网络接口可能有多个选项,请务必正确判断,如果不确定哪一个是,可以逐个测试

2.检查网络防火墙设置,确保防火墙策略没有阻止与模拟器的出入站通信

不一定,但通常不需要,个别模拟器或手机环境特殊,所以安装的证书会在设备重启后失效,所以如果在连接时发现系统信任未启用,说明证书掉了,需要重新安装

不需要,通常只有首次或需要更新APP时需要,如果你的证书没有掉,那么通常你只需要启动疯狂URL 4的代理模式,然后打开 NetLens APP,并点击重新连接接口,这会重新根据之前的连接配置重新与疯狂URL 4连接,但是如果由于IP或某些环境变化,可能导致无法连接成功,你可以尝试通过扫描二维码的方式进行连接,二维码的扫描通常更适合手机用户

可能的原因:

  • 模拟器环境被APP检测到所以拒绝加载
  • VPN环境被APP检测所以拒绝加载
  • root权限被APP检测到所以拒绝加载
  • 证书固定不受信任(前面的问题已解释)

解决办法:

由于不同的APP可能有不同的策略,所以无法提供一种绝对有效的方案,你只能根据上面的可能的原因逐步测试来排除。

对于第一种原因,最简单发办法就是更换其他模拟器或直接换到手机上上或手机上的虚拟机测试,虚拟机大多数是付费的,免费的通常安卓系统版本较低无法正常使用,可自行寻找有关安卓虚拟机的相关信息,我们提供的“光速虚拟机”仅仅是我们测试过的一款,与我们没有任何利益合作关系,但仍然建议你寻找免费的代替品,如果问题依旧,那就测试后面两种。

对于VPN环境和root权限的环境,这通常可能发生在安卓系统版本较低时发生的概率较大,对于安卓11+,有可能会有帮助,但不是绝对的,因为对于一些内部进行了严格的反调试、反抓包的APP来说,检测逻辑非常复杂,仅仅从应用层面上并不能解决根本问题,这种情况下,通常需要对安卓逆向过程熟练的专业人员可能会机会解决,但建议仅作为测试,破坏一些合法的APP的结构,可能会引起法律纠纷。

类似文章