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

能否用Charles代理拦截Android模拟器中App的GCM/Firebase推送通知?

如何用Charles拦截Android模拟器的推送通知(5228-5230端口)

推送通知走的5228-5230端口默认没被Charles的SSL代理规则覆盖,再加上Android系统对这类谷歌服务相关端口有特殊处理,咱们可以按下面的步骤逐一排查配置:

  • 步骤1:把目标端口加入SSL代理规则
    打开Charles的Proxy > SSL Proxying Settings,切换到SSL Proxying标签页,点击Add按钮:

    • Host栏填*(如果知道具体的推送服务器域名,填域名会更精准)
    • Port栏填5228,5229,5230(多个端口用逗号分隔)
      保存后,记得确认顶部工具栏的「SSL Proxying」按钮处于点亮状态。
  • 步骤2:给模拟器设置全局代理
    部分推送服务不会走App单独配置的代理,而是依赖系统全局代理。你可以这样设置:

    1. 打开模拟器的「设置」,找到「网络和互联网 > Wi-Fi」
    2. 长按当前连接的Wi-Fi,选择「修改网络」
    3. 勾选「高级选项」,代理设置选「手动」
    4. 填入Charles所在电脑的IP地址,以及Charles默认代理端口8888
    5. 保存设置后,重启模拟器和目标App。
  • 步骤3:让Android系统信任Charles根证书
    你给App装了证书,但系统级服务(比如推送)可能不认,得把证书装到系统证书目录:

    1. 在Charles里导出根证书:Help > SSL Proxying > Save Charles Root Certificate,保存为.pem格式
    2. 用命令生成证书哈希值:openssl x509 -subject_hash_old -in charles.pem | head -1,把证书重命名为cacert-<哈希值>.0
    3. 通过adb推证书到系统目录:adb push cacert-xxxxxx.0 /system/etc/security/cacerts/
    4. 给证书设置权限:adb shell chmod 644 /system/etc/security/cacerts/cacert-xxxxxx.0
    5. 重启模拟器,这样系统级服务就会信任Charles的证书了。
  • 步骤4:配置adb端口转发(可选)
    有时候模拟器的端口没正确转发到电脑,你可以手动设置:

    adb forward tcp:5228 tcp:5228
    adb forward tcp:5229 tcp:5229
    adb forward tcp:5230 tcp:5230
    

    把模拟器的这几个端口映射到电脑对应端口,确保Charles能捕获到流量。

完成这些配置后,重新触发推送通知,应该就能在Charles里看到对应的流量了。如果还是不行,可以检查Charles的Proxy > Access Control Settings,确认模拟器IP在允许列表里,或者临时勾选「Allow all computers」来测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:06:10