Charles 抓包教程
前提:电脑已安装 Charles,手机与电脑连接同一 Wi-Fi 网络(真机),或使用模拟器(无需同 Wi-Fi)。
一、通用准备
- 打开 Charles,菜单栏 Proxy → Proxy Settings,确认端口号(默认
8888)。 - 查看电脑局域网 IP:Help → Local IP Addresses,记下 IP(如
192.168.1.100)。 - 开启 SSL 抓包:Proxy → SSL Proxying Settings → 勾选 Enable SSL Proxying,添加
*:443。 - 电脑安装 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 请求会显示乱码或无法解密。
- Windows 防火墙放行(Windows 必须):
- 首次启动 Charles 时系统会弹出防火墙提示,选择 允许访问
- 如果错过了:控制面板 → Windows Defender 防火墙 → 允许应用通过防火墙 → 找到 Charles 勾选 专用 + 公用
- 不放行的话,手机配了代理也连不上 Charles
- 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 也没弹确认框,检查此处配置
- 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,下载证书(pem或crt文件)
方式二:电脑导出证书传输(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 Emulator | macOS / 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 Emulator | 10.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 分钟自动退出 | 试用版限制,重启即可继续,或注册正版 |