You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 12下Charles抓包非浏览器App HTTPS失败问题求助

解决Android 12非浏览器App无法使用Charles抓取HTTPS流量的问题

核心原因

Android 11及以上版本默认仅信任系统证书目录内的证书,用户手动安装的证书只会被浏览器类应用识别。系统App(如应用商店、YouTube)和目标SDK版本≥24的第三方App会忽略用户证书,导致无法通过Charles代理HTTPS流量。

解决方案

方案一:将Charles证书安装到系统证书目录(需Root/Magisk)

这是覆盖所有App的通用解决方法:

  1. 导出并转换Charles证书格式
    • 打开Charles,依次点击「Help」→「SSL Proxying」→「Save Charles Root Certificate...」,保存为PEM格式文件(比如命名为charles.pem)。
    • 打开Mac终端,执行命令生成证书哈希值:
      openssl x509 -inform PEM -subject_hash_old -in charles.pem | head -1
      
    • 把原证书文件重命名为[哈希值].0(比如哈希值为9a5ba575,就改成9a5ba575.0)。
  2. 推送证书到设备系统目录
    • 若设备已Root:连接设备到Mac,执行以下adb命令:
      adb shell su -c "mount -o rw,remount /system"
      adb push 9a5ba575.0 /system/etc/security/cacerts/
      adb shell su -c "chmod 644 /system/etc/security/cacerts/9a5ba575.0"
      
    • 若用Magisk:在Magisk模块仓库搜索「Move Certificates」并安装,重启设备后,模块会自动将用户安装的Charles证书迁移到系统目录。
  3. 重启设备,所有App即可信任Charles证书。

方案二:针对单个App跳过证书校验(无需Root)

如果无法获取Root权限,可针对特定App绕过证书校验:

  • 使用Xposed框架模块「JustTrustMe」:安装Xposed后,启用该模块并勾选目标App,它会禁用App的SSL证书校验,让Charles能抓取其HTTPS流量。
  • 注意:此方法仅对单个App生效,部分加固过的App可能无法兼容。

方案三:检查基础配置

  1. 确认Charles的SSL代理设置
    • 打开Charles,依次点击「Proxy」→「SSL Proxying Settings」,勾选「Enable SSL Proxying」,并在「Include」列表中添加目标App的域名(或添加*代理所有域名)。
  2. 确认设备代理配置正确
    • 设备WiFi代理需设置为Mac的本地IP,端口与Charles代理端口一致(默认8888)。
  3. 处理Google系应用
    • 在Charles的「SSL Proxying Settings」中,勾选「Allow SSL Proxying for Google Services」,规避Google应用的额外证书校验拦截。

内容的提问来源于stack exchange,提问作者Jerry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:42:42