Charles安卓手机抓包怎么配置?

99ANYc3cd6
预计阅读时长 16 分钟
位置: 首页 安卓 正文

核心概念:为什么需要配置?

在开始之前,我们先要理解一个基本原理:

charles安卓手机抓包
(图片来源网络,侵删)
  • 手机电脑(运行 Charles) 通常连接在同一个 Wi-Fi 下。
  • HTTPS 协议是加密的,手机和服务器之间的通信内容是“看不懂”的,Charles 默认只能看到加密的密文,而无法解密。
  • SSL Pinning(证书锁定):为了防止中间人攻击(Charles 这种代理工具),很多 App 会在代码中内置一个或多个受信任的服务器证书,Charles 的证书不在其信任列表里,App 就会直接拒绝联网,导致抓包失败。

安卓手机抓包的核心步骤就是:

  1. 让手机信任 Charles 的根证书(解决 HTTPS 解密问题)。
  2. 让手机把网络流量通过 Charles 代理(让 Charles 能“看到”流量)。

准备工作

  1. 一台电脑:Windows, macOS 或 Linux 均可。
  2. 安装 Charles:在 Charles 官网 下载并安装最新版,有免费试用版,功能足够使用。
  3. 一台安卓手机:系统版本不限,但不同品牌(如小米、华为、OPPO、VIVO)在系统设置上略有差异。
  4. 电脑和手机连接在同一个 Wi-Fi 网络:这是最基本的前提。

详细步骤

第一步:在电脑上配置 Charles

  1. 开启代理功能

    • 打开 Charles 软件。
    • 点击顶部菜单栏的 Proxy (代理) -> Proxy Settings (代理设置)
    • 在弹出的窗口中,确保 "Enable transparent HTTP proxying" (启用透明 HTTP 代理) 是勾选状态。
    • Host (主机名)Port (端口) 保持默认即可(通常是 0.0.1:8888)。
    • 点击 OK
  2. 配置 SSL 代理

    • 这是为了让 Charles 能够解密 HTTPS 流量,点击顶部菜单栏的 Proxy (代理) -> SSL Proxying Settings (SSL 代理设置)
    • 勾选 "Enable SSL Proxying" (启用 SSL 代理)
    • Locations (位置) 栏下,点击 Add (添加)
    • Host (主机名):填入你想要抓包的域名,www.baidu.com,如果想抓所有 HTTPS 流量,可以填 。
    • Port (端口):填入 443,如果想抓所有 HTTPS 端口,可以填 。
    • 点击 OK
  3. 获取 Charles 根证书

    charles安卓手机抓包
    (图片来源网络,侵删)
    • 点击顶部菜单栏的 Help (帮助) -> SSL Proxying (SSL 代理) -> Save Charles Root Certificate... (保存 Charles 根证书...)
    • 将证书文件(通常是 charles-proxy-ssl-proxying-certificate.pem)保存到电脑上,我们稍后需要把它传输到手机上。

第二步:在安卓手机上配置

核心流程: 连接 Wi-Fi -> 设置代理 -> 安装并信任证书

  1. 连接 Wi-Fi 并设置代理

    • 在手机的 设置 -> WLAN (或 Wi-Fi) 中,连接到你电脑所在的同一个 Wi-Fi 网络。
    • 长按该 Wi-Fi 网络,选择 "网络配置""修改网络"
    • 勾选 "高级选项""代理"
    • 代理 选项中,选择 "手动"
    • 主机名:填入你 电脑的局域网 IP 地址
      • 如何获取电脑 IP 地址?
        • Windows: 打开命令提示符,输入 ipconfig,找到 "IPv4 地址"。
        • macOS: 打开 "系统偏好设置" -> "网络",选择当前连接的网络,查看 "IP 地址"。
        • Linux: 打开终端,输入 ip addrifconfig,找到 inet 地址。
    • 端口:填入 Charles 的代理端口,默认是 8888
    • 保存设置。
  2. 安装并信任 Charles 证书

    • 通过浏览器下载(推荐,适用于所有安卓版本)

      charles安卓手机抓包
      (图片来源网络,侵删)
      • 在手机浏览器(如 Chrome, Firefox)中,访问地址:chls.pro/ssl
      • 手机会自动检测到 Charles 的代理,并提示你下载一个证书文件(通常名为 charles-proxy-ssl-proxying-certificate.cer 或类似名称)。
      • 下载完成后,打开系统的 "下载" 文件夹,点击该证书文件进行安装,根据提示输入锁屏密码。
      • 安装时,系统会让你为证书命名,并选择用途,选择 "VPN 和应用""WLAN"
    • 手动安装(适用于安卓 10 及以上系统)

      • 将第一步保存到电脑的 charles-proxy-ssl-proxying-certificate.pem 文件,通过微信、QQ、数据线等方式传输到手机上。
      • 在手机上找到该文件,点击打开。
      • 系统会提示你安装证书,输入锁屏密码后,在 "证书安装程序" 中选择 "VPN 和应用""WLAN"
      • 重要:安装后,你还需要手动去系统设置中信任它。
        • 进入 设置 -> 安全 (或 安全和隐私) -> 更多安全设置 (或 加密与凭据) -> 从存储设备安装 (或 安装证书) -> CA 证书
        • 找到你刚刚安装的证书,给它命名并确认安装。
  3. 信任用户安装的证书(关键步骤!)

    • 这是最容易出错的一步! 很多手机品牌默认不信任用户自己安装的证书。
    • 进入 设置 -> 安全 (或 安全和隐私) -> 加密与凭据
    • 找到 "安装的证书""信任的凭据"
    • 点击进入,你会看到 "用户""系统" 两个标签页。
    • "用户" 标签页下,找到你刚才安装的 Charles 证书(可能就是你给它起的名字),确保它旁边的开关是打开的(被勾选)
    • 如果找不到 "信任的凭据" 选项:某些品牌(如小米、华为)的路径可能不同。
      • 小米/红米: 设置 -> 更多设置 -> 安全设置 -> 从存储设备安装 -> CA 证书 (安装后) -> 设置 -> 更多设置 -> 安全设置 -> 管理已安装的证书 -> 用户证书 (在这里找到你的证书并点击它,会显示详细信息,确保是“信任”状态)。
      • 华为: 设置 -> 安全 -> 更多 -> 加密与凭据 -> 信任的凭据 -> 在这里找到你的证书并启用它。

开始抓包与验证

  1. 检查 Charles

    • 确保电脑上的 Charles 已经启动。
    • Charles 左下角的 "HTTP Proxy" 状态应该显示为 "Started",并且你的手机 IP 地址会出现在 "Accessed from" 列表中,如果手机 IP 出现了,说明代理设置成功。
  2. 验证抓包

    • 在手机上打开浏览器,访问任意网站(如 www.baidu.com)。
    • 回到电脑的 Charles,你应该能看到抓到的 HTTP 请求了。
    • 为了验证 HTTPS 抓包,在手机上打开一个支持 HTTPS 的 App(如微信、微博、淘宝),或者访问 https://www.baidu.com
    • 在 Charles 中,如果能看到具体的请求内容(如 HTML, JSON, 图片等),并且域名旁边有一个 小锁图标,说明 HTTPS 抓包也成功了!

常见问题与解决方案

  1. 问题:Charles 中看不到手机 IP,或者提示 "SSL Proxying error no certificate"。 原因:手机和电脑不在一个局域网,或者代理端口/IP 设置错误。 解决:重新检查 Wi-Fi 和电脑的 IP 地址、端口。

  2. 问题:Charles 中能看到手机 IP,但抓不到任何 HTTPS 请求,或者请求显示 "SSLHandshakeException"。 原因:手机没有信任 Charles 证书,或者 App 开启了 SSL Pinning。 解决

    • 仔细检查 第三步第 3 点,确保证书已正确安装并 在“信任的凭据”中被启用
    • SSL Pinning 问题:这是 App 自身的安全机制,普通用户很难绕过,可以尝试在 Charles 中关闭 SSL 代理,看能否抓到 HTTP 流量,如果完全抓不到,说明该 App 的证书锁定非常严格,可能需要更高级的工具(如 Frida)来动态绕过。
  3. 问题:手机浏览器可以访问网页,但 App 无法联网。 原因:部分 App(尤其是银行类、金融类)会检测代理环境,一旦发现使用代理就拒绝联网。 解决:这是 App 的设计,无法解决,可以尝试关闭手机上的 VPN 或其他代理类 App。

  4. 问题:Charles 抓到的 HTTPS 内容是乱码或无法解析。 原因:SSL 代理设置未开启或 Host/Port 不匹配。 解决:回到 第一步第 2 点,检查 SSL Proxying Settings 是否已正确配置。


高级技巧

  • 过滤请求:在 Charles 的过滤栏中输入域名(如 baidu.com),只显示与该域名相关的请求,方便查找。
  • Map Local:如果你想模拟服务器返回特定数据,可以右键点击一个请求,选择 "Map Local",然后选择一个本地的文件来替代服务器的响应,这对于测试和调试非常有用。
  • Breakpoints:设置断点,可以修改请求的参数或响应的内容,再发送出去,观察 App 的行为。

遵循以上步骤,你就可以成功地在安卓手机上使用 Charles 进行抓包了,祝你调试顺利!

-- 展开阅读全文 --
头像
安卓通讯录怎么转到苹果手机?
« 上一篇 12-20
苹果手机怎么打开nfc功能?
下一篇 » 12-20

相关文章

取消
微信二维码
支付宝二维码

最近发表

标签列表

目录[+]