跳到主要内容

Android 设备与模拟器

使用桌面版 Proxyman 抓包 Android 真机和模拟器的 HTTP/HTTPS 流量,涵盖代理设置、证书、自动脚本以及 Google Play 系统镜像。

本指南介绍如何将 Android 设备或模拟器的流量发送到电脑上的 Proxyman。内容涵盖代理配置、证书安装,以及让应用信任证书以便检查 HTTPS 流量。

根据你的设备选择对应的设置方式:

  • Android 真机: 按下方的手动设置步骤操作。设备必须能通过网络访问运行 Proxyman 的电脑。
  • Android 模拟器: 从自动设置脚本开始。
  • Google Play 模拟器镜像: 参阅 Google Play 与 Magisk 指南。标准的自动设置并不适用于所有镜像。

如果不想借助电脑,直接在手机上抓包,可以使用独立的 Proxyman Android 应用。

在电脑端抓包时,请在 Proxyman 中打开对应的指南:

  • Certificate Menu -> Install Certificate on Android -> Physical Devices…
  • Certificate Menu -> Install Certificate on Android -> Emulators…
信息

如果使用 Android 模拟器,请查看 Android 模拟器自动脚本

视频​

在 API 36 的 Android 模拟器上抓取原生 Android 应用(OkHttp)的 HTTPS 流量
使用 Proxyman for Android 应用在 Android 上抓取 HTTP 和 HTTPS 流量 · 在 proxyman.com 上观看

1. Android 设置指南​

手动设置时,先配置设备代理,再安装证书,并在你的开发应用中配置证书信任。仅安装证书并不能让所有 Android 应用都信任它。请按以下所有步骤操作:

Proxyman Android 设置指南,包含 Wi-Fi 代理服务器和端口、proxy.man/ssl 链接以及网络安全配置 XML

Android 设备设置指南

在 Certificate 菜单中依次选择 Install Certificate on Android -> Physical Devices…,打开指南,然后按照以下步骤操作:

  1. 在 Mac 上安装 Root Proxyman Certificate:可参阅 macOS 指南。
  2. 在 Android 设备或模拟器上打开 Settings 应用 -> Wi-Fi -> 选择当前的 Wi-Fi 网络 -> 按照下表的值配置 HTTP 代理。
名称值
服务器 IP你的 Mac 当前的 IP 地址
端口Proxyman 当前的端口,默认为 9090
身份验证否
信息

部分三星设备在设置 HTTP 代理后可能无法访问互联网。请忘记当前网络,然后重新连接。

如果你正在使用任何 VPN 应用,请确保将其关闭,因为部分 VPN 应用与 HTTP/HTTPS 代理配置存在冲突。

3. 在 Android 设备的浏览器中打开 http://proxy.man/ssl 或 http://cert.proxyman.io ,安装 Proxyman 证书。

Android 11、Android 12 或更高版本:​

  • 在 Google Chrome 应用中访问 http://proxy.man/ssl 下载证书。
  • 从 Android 11 开始,必须在 Settings 应用中手动安装证书。
  • Settings 应用 -> Security -> Encryption & Credentials -> Install a Certificate -> 选择 "CA Certificate" -> 在存储中选择 Proxyman CA 证书。

Android 10 及更低版本:​

  • 访问 http://proxy.man/ssl 后,Android 设备会自动下载并安装证书。请确保选择 VPN and App Section。
信息

在 Android 12 及更高版本上,如果看到警告 "Can't install the Certificate: This file can't be used as a VPN & app user certificate",请改选 "CA Certificate"。

参考:https://stackoverflow.com/a/70261393/3127477

信息

http://proxy.man/ssl 是一个本地网站,由 Proxyman 内置的 HTTP 服务器提供。如果无法打开该网址,请忘记 Wi-Fi 网络并重新连接,同时确保 Proxyman 应用处于打开状态。

4. 在 Android 11 或更高版本上验证证书:打开 Settings -> Security -> Encryption & Credentials -> Trusted Credentials -> User 标签页。

确保能看到 Proxyman CA 证书,如下图所示。

Android 受信任的凭据,User 标签页中列出 Proxyman CA 证书

5. 打开应用源代码,添加以下两个 xml 文件。

  • 添加 res/xml/network_security_config.xml
network_security_config.xml
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
<certificates src="system" />
</trust-anchors>
</debug-overrides>

<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>
  • 添加到 AndroidManifest.xml
manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
信息

更多信息请参阅 Network Security Configuration

信息

请确保在 Release 构建中移除这些配置。否则,HTTP/HTTPS 请求可能被拦截,敏感数据也会在生产版本中泄露。

6. 如果使用 Android 模拟器,请重启模拟器。

7. 完成 ✅

2. 故障排查​

请查看设备连接故障排查指南中的 Android 部分。

3. 示例 Android 项目​

如果 XML 配置遇到问题,可以参考我们已经配置好的这个简单项目:

GitHub 链接:https://github.com/ProxymanApp/OKHTTP-Android-Sample

4. React Native Android 应用​

如果你的 Android 应用使用 React Native 开发,请查看 React Native 页面。

5. 拦截内嵌 WebView 的流量​

部分 Android 应用内嵌了 WebView,需要额外的步骤才能拦截其 HTTPS 流量。

  1. 确保能看到 Android 应用中的其他 HTTPS 流量,这说明证书已正确设置。
  2. 在 WebView 中注入以下代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}

// The following two lines help with disabling asset caching
webView.getSettings().setAppCacheEnabled(false);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

3. 在电脑上打开一个新的 Chrome 标签页,访问 chrome://inspect

4. 打开 WebView 后,它会出现在 Chrome 标签页中。点击 inspect 即可开始使用远程调试器。

6. 使用 Root 设备开启 SSL Proxying​

致谢 Shirshak

如果你的 Android 版本低于 7,则无需此步骤。从 Android 7 开始,Google 增加了额外的安全机制,默认阻止中间人工具读取应用流量。

因 Root 手机而导致的任何问题,我们概不负责。请自行承担风险并按照本指南操作。

信息

较新版本的 Proxyman 将证书存储在 ~/Library/Application Support/com.proxyman.NSProxy/app-data/proxyman-ca.pem。如果你的 Mac 上不存在 ~/.proxyman 文件夹,请改用该路径,或依次选择 Certificate 菜单 -> Export -> Root Certificate as PEM 导出证书。

  1. 使用 magisk 框架 Root 你的手机。

  2. 安装 Root 文件管理器,以便在受限的系统目录中复制和粘贴文件。

  3. 在命令行中输入以下脚本

    $ cd ~/.proxyman
    // We copy certificate to another file name just so we may need it later
    $ cp proxyman-ca.pem temp.pem
    $ hash=$(openssl x509 -inform PEM -subject_hash_old -in temp.pem | head -1)
    $ mv temp.pem "$hash.0"
  4. 在 ~/.proxyman 文件夹中,你会看到一个以数字开头、以 .0 结尾的文件。

  5. 将该文件复制到你的 Android 设备。

  6. 使用 Root 文件管理器,将该文件移动到 /system/etc/security/cacerts/

  7. 大功告成,开始抓包吧。

信息
  1. 在 Android 手机上,将网关设置为一个错误的 IP,这样可以确保所有流量都只通过 Proxyman 代理。
  2. 你可以使用 macOS 的互联网共享功能创建个人热点,这样 Android 手机就能轻松使用 Proxyman 代理。这种方式效果更好,因为路由器有时会阻止手机与 Mac 之间的请求。

更多资源​

了解更多​