Charles 抓包安卓、iOS教程

4 阅读7分钟

Charles 抓包教程

前提:电脑已安装 Charles,手机与电脑连接同一 Wi-Fi 网络(真机),或使用模拟器(无需同 Wi-Fi)。


一、通用准备

  1. 打开 Charles,菜单栏 Proxy → Proxy Settings,确认端口号(默认 8888)。
  2. 查看电脑局域网 IP:Help → Local IP Addresses,记下 IP(如 192.168.1.100)。
  3. 开启 SSL 抓包:Proxy → SSL Proxying Settings → 勾选 Enable SSL Proxying,添加 *:443
  4. 电脑安装 Charles 根证书(必须):

macOS:

  • Help → SSL Proxying → Install Charles Root Certificate
  • 自动打开"钥匙串访问",找到 Charles Proxy CA 证书
  • 双击证书 → 展开"信任" → 将"使用此证书时"改为 始终信任 → 关闭并输入密码确认

Windows:

  • Help → SSL Proxying → Install Charles Root Certificate
  • 弹出证书安装向导 → 选择 安装证书
  • 存储位置选 当前用户本地计算机
  • 选择 将所有的证书都放入下列存储 → 浏览 → 选择 受信任的根证书颁发机构 → 完成
  • 验证是否安装成功:Win + R 输入 certmgr.msc受信任的根证书颁发机构 → 证书 → 列表中能看到 Charles Proxy CA 即为成功

电脑不装证书也能抓 HTTP,但 HTTPS 请求会显示乱码或无法解密。

  1. Windows 防火墙放行(Windows 必须):
  • 首次启动 Charles 时系统会弹出防火墙提示,选择 允许访问
  • 如果错过了:控制面板 → Windows Defender 防火墙 → 允许应用通过防火墙 → 找到 Charles 勾选 专用 + 公用
  • 不放行的话,手机配了代理也连不上 Charles
  1. Access Control 允许设备连接:
  • Proxy → Access Control Settings
  • 方式一(推荐):勾选底部 Prompt to allow unauthorized connections,新设备连接时 Charles 会自动弹窗询问,点 Allow 即可自动添加该设备 IP
  • 方式二:点击 Add 按钮 → 在弹出的输入框中填入手机具体 IP(如 10.0.88.72)→ 确定
  • 不建议直接输入 0.0.0.0/0,部分版本可能无法识别;添加具体 IP 或使用弹窗确认更可靠
  • 如果手机配了代理后无法上网,且 Charles 也没弹确认框,检查此处配置
  1. Charles 试用版限制(未注册用户注意):
  • 免费试用版每次运行 30 分钟后自动关闭,需重新打开
  • 启动时有 10 秒等待
  • 不影响功能,但长时间抓包建议注册

二、iOS 抓包

1. 配置代理

  • 打开 设置 → Wi-Fi → 当前连接的网络 → 配置代理 → 手动
  • 服务器填电脑 IP,端口填 8888

2. 安装证书

方式一:在线下载(推荐)

  • Safari 访问 chls.pro/ssl,下载证书

方式二:电脑导出证书传输(chls.pro/ssl 打不开时)

  • 电脑 Charles:Help → SSL Proxying → Save Charles Root Certificate (.cer)
  • 通过 AirDrop / 邮件附件 / 微信传文件 发送到 iPhone
  • 在 iPhone 上点击打开 .cer 文件,系统会自动弹出安装描述文件的提示

安装并信任:

  • 设置 → 通用 → VPN与设备管理 → 安装已下载的描述文件
  • 设置 → 通用 → 关于本机 → 证书信任设置 → 开启 Charles 证书的完全信任

3. 开始抓包

  • Charles 弹出连接确认,点击 Allow
  • 手机正常操作即可在 Charles 中看到请求

4. 抓包结束

  • 手机关闭代理(设置回"关闭")
  • 关闭证书信任(可选)

三、Android 抓包

1. 配置代理

  • 打开 设置 → WLAN → 长按当前网络 → 修改网络 → 高级选项 → 代理 → 手动
  • 主机名填电脑 IP,端口填 8888

2. 安装证书

方式一:在线下载(推荐)

  • 浏览器访问 chls.pro/ssl,下载证书(pemcrt 文件)

方式二:电脑导出证书传输(chls.pro/ssl 打不开时)

  • 电脑 Charles:Help → SSL Proxying → Save Charles Root Certificate (.pem)
  • 通过 USB 传文件 / QQ / 微信 / 邮件 发送到 Android 手机
  • 也可用 adb:adb push charles-ssl-proxying.pem /sdcard/Download/

安装:

  • 设置 → 安全 → 加密与凭据 → 安装证书 → CA 证书 → 选择下载的文件
  • 用途选择 VPN和应用(不要选"WLAN",那个是企业 Wi-Fi 认证用的)

3. Android 7.0+ 额外处理

Android 7.0 及以上默认不信任用户证书,需额外配置:

方案 A:应用配置(需有源码)

res/xml/ 下新建 network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </base-config>
</network-security-config>

AndroidManifest.xml<application> 中添加:

android:networkSecurityConfig="@xml/network_security_config"

方案 B:将证书装入系统目录(需 Root)

# 导出 Charles 根证书为 pem 格式
# Help → SSL Proxying → Save Charles Root Certificate (.pem)

# 计算证书哈希
openssl x509 -subject_hash_old -in charles-ssl-proxying.pem | head -1
# 假设输出 xxxxxxxx

# 重命名并推入手机系统证书目录
cp charles-ssl-proxying.pem xxxxxxxx.0
adb root
adb remount
adb push xxxxxxxx.0 /system/etc/security/cacerts/
adb shell chmod 644 /system/etc/security/cacerts/xxxxxxxx.0
adb reboot

4. 开始抓包

  • Charles 弹出连接确认,点击 Allow
  • 手机正常操作即可在 Charles 中看到请求

5. 抓包结束

  • 手机关闭代理
  • 卸载证书(可选)

四、使用模拟器抓包(替代真机)

模拟器可以替代真机进行抓包,macOS / Windows / Linux 均支持

Android 模拟器

模拟器平台说明
Android Studio EmulatormacOS / Windows / Linux官方模拟器,推荐使用
夜神模拟器Windows / macOS自带 Root,方便装系统证书
雷电模拟器Windows自带 Root,操作简单
MuMu 模拟器Windows / macOS支持 Root

以雷电模拟器为例,完整配置步骤:

第一步:查看电脑 IP 和端口

  • 电脑 Charles:Help → SSL Proxying → Install Charles Root Certificate on a Mobile Device or Remote Browser
  • 弹窗会显示当前电脑的 IP 地址端口号(如 192.168.1.100:8888),记下来

第二步:配置代理

  • 打开模拟器内的 设置 → WLAN
  • 长按已连接的 Wi-Fi 网络 → 修改网络(或点击右侧编辑按钮)
  • 展开 高级选项 → 代理选择 手动
  • 代理主机名填上一步看到的 电脑 IP(如 192.168.1.100),端口填 8888
  • 保存

注意:不能填 127.0.0.1,必须填电脑的实际局域网 IP,否则无法触发 Charles 的连接确认弹窗。

第三步:允许连接 + 安装证书

  • 配置代理后,模拟器发起请求时 Charles 会弹出 Allow/Deny 确认框,点击 Allow
  • 然后模拟器浏览器访问 chls.pro/ssl 下载并安装证书(同真机步骤)
  • 或从电脑导出证书,通过共享文件夹 / adb push 传入模拟器

第四步:Android 7.0+ 证书信任

  • 雷电模拟器自带 Root,可直接将证书装入系统目录(参考上方"方案 B"),解决系统不信任用户证书的问题
  • 也可以在模拟器 设置 → 安全 → 加密与凭据 → 安装证书 → CA 证书 中安装,用途选 VPN和应用

其他模拟器差异:

模拟器代理 IP备注
雷电 / 夜神 / MuMu电脑局域网 IP自带 Root,推荐装系统证书
Android Studio Emulator10.0.2.2需用无 Google Play 的镜像获取可写系统分区

iOS 模拟器(仅 macOS)

  • Xcode 自带 iOS Simulator,仅 macOS 可用
  • iOS 模拟器共享 Mac 的网络,Charles 可直接抓包,无需配置代理
  • 开启 macOS Proxy:Charles 菜单 → Proxy → macOS Proxy 打勾即可
  • 安装证书:Help → SSL Proxying → Install Charles Root Certificate in iOS Simulators,一键安装到所有模拟器

模拟器 vs 真机对比

对比项模拟器真机
配置难度低(无需同 Wi-Fi)中等
Root / 证书容易获取 Root 权限需要越狱或额外操作
性能依赖电脑配置真实性能
适用场景开发调试为主生产环境复现问题

五、实用技巧

  • 过滤域名:右键某条请求 → Focus,或 Proxy → Recording Settings → Include 添加目标域名,只抓关注的请求
  • 抓电脑本机请求Proxy → macOS Proxy(Mac)或 Proxy → Windows Proxy(Win)打勾
  • 模拟弱网Proxy → Throttle Settings → 勾选 Enable Throttling,可选 3G / 4G 等预设
  • 修改请求/响应Tools → Rewrite 或右键请求 → Breakpoints 拦截后手动编辑
  • 导出抓包记录File → Save Session As 保存为 .chls 文件,方便分享给同事分析

六、常见问题

问题解决方案
看不到 HTTPS 内容(显示乱码)确认已开启 SSL Proxying 且电脑 + 手机证书均已安装并信任
手机配了代理后无法上网① 检查 IP 和端口 ② Charles 是否在运行 ③ Windows 检查防火墙是否放行
Android 抓不到包Android 7.0+ 需处理系统证书信任问题(见上方方案)
Charles 无弹窗确认Proxy → Access Control Settings → 勾选 Prompt to allow unauthorized connections,或点 Add 手动添加手机 IP
chls.pro/ssl 打不开确认代理已生效,或电脑导出证书后传到手机安装(见"方式二")
部分 App 抓不到包(如银行、支付类)这些 App 使用了 SSL Pinning(证书锁定),普通方式无法抓包
Charles 30 分钟自动退出试用版限制,重启即可继续,或注册正版