📡 Charles 抓包工具笔记(自用复盘版)
适用场景:HTTP/HTTPS 抓包分析、接口调试、弱网测试、移动端测试
最后更新:2026-04-09
一、Charles 简介
1.1 基本信息
- Charles :中文名"青花瓷",是一款基于 HTTP 协议的代理服务器。
- 作用:通过成为电脑或浏览器的代理,截取请求和响应数据,实现抓包分析。
- 官网:https://www.charlesproxy.com/
- 试用:30 天免费试用,过期后仍可启动但每次只能使用 30 分钟。
1.2 工作原理
简述:客户端(浏览器/App)请求 → Charles(代理)→ 服务器 → Charles → 客户端。

二、安装与基础配置
2.1 下载安装
- 从官网下载对应系统版本(Windows/macOS/Linux)。
- 安装完成后启动 Charles。
2.2 浏览器代理设置(以 Firefox 为例)
- 建议使用 Firefox 浏览器(代理设置独立,不影响系统其他应用)。
- Firefox → 设置 → 网络设置 → 手动代理配置:
- HTTP 代理:
127.0.0.1,端口:8888(Charles 默认端口) - 勾选"为所有协议使用相同代理"
- HTTP 代理:
- 完成后浏览器访问 http://charlesproxy.com/get 可检查是否正常。
三、Charles 核心操作
3.1 开启代理抓包
- Charles 启动后默认开启代理(
Proxy→Windows Proxy/macOS Proxy)。 - 确保
Proxy→Proxy Settings中 HTTP 代理勾选,端口为8888。 - 浏览器访问任意网址,Charles 中即出现请求记录。
3.2 断点(Breakpoints)------ 修改请求/响应
应用场景:模拟异常数据、绕过前端校验、篡改接口返回。
操作步骤:
Proxy→Breakpoints Settings→ 勾选Enable Breakpoints。- 点击
Add,设置断点条件:- Protocol:
http或https - Host:目标域名(如
api.example.com) - Port:一般留空或
* - Path:请求路径
- 勾选
Request和/或Response(表示拦截请求和响应)
- Protocol:
- 确认后,在浏览器触发对应请求。
- Charles 弹出断点编辑窗口:
- 修改 Request 数据 → 点击
Execute - 修改 Response 数据 → 点击
Execute
- 修改 Request 数据 → 点击
- 所有断点执行完毕后,关闭断点功能(取消勾选
Enable Breakpoints)。
注意 :如不修改响应,直接点击 Execute 放行。
3.3 过滤(Filter)------ 只显示指定域名
目的:避免抓包列表被无关请求淹没。
方法一(临时过滤) :
在 Charles 界面下方的 Filter 输入框中直接输入关键词(如 api.xxx.com)。
方法二(永久过滤):
Proxy→Recording Settings→Include标签页。- 点击
Add,填入协议、主机、端口、路径(主机必填)。 - 确认后,Charles 只显示匹配 Include 规则的请求。
3.4 弱网测试(Throttle)
应用场景:模拟 2G/3G/4G 网络环境,测试应用在网络不佳时的表现。
操作步骤:
Proxy→Throttle Settings→ 勾选Enable Throttling。- 选择预设网络(如
3G)或自定义带宽、延迟、丢包率。 - 勾选
Only for selected hosts可针对特定域名限速。 - 开始测试 → 完成后关闭
Enable Throttling。
四、移动端(手机/模拟器)抓包
4.1 前提条件
- 电脑和手机/模拟器连接同一个 WiFi。
- 电脑 IP 地址(可在命令行用
ipconfig或ifconfig查看)。 - Charles 允许远程连接:
Proxy→Proxy Settings→ 勾选HTTP Proxy,并勾选Allow remote computers to connect。
-
4.2 手机端代理设置
- 手机 WiFi → 修改网络 → 开启代理(手动):
- 主机名:电脑 IP
- 端口:8888
- 保存后,手机上的 HTTP 请求会出现在 Charles 中。



- 如果有提示勾选运行允许pc端接入


4.3 抓取 HTTPS 请求(解决 unknown 问题)
若抓包出现 unknown,说明是 HTTPS 请求,需要安装 SSL 证书。
4.3.1 电脑端安装 Charles 根证书
Help→SSL Proxying→Install Charles Root Certificate。- 点击"安装证书" → 选择"本地计算机" → "将所有证书放入下列存储" → 选择"受信任的根证书颁发机构"。
- 完成导入后,重启 Charles。
4.3.2 手机端安装证书(Android 通用步骤)
-
手机连接 Charles 代理后,浏览器访问
chls.pro/ssl下载证书(.pem文件)。


-
安装证书:
- Android 7.0 以下:直接点击证书文件,按提示安装。
- Android 7.0 及以上:系统限制用户证书,需要 Root 权限 并将证书安装为系统证书(见下文)。
4.3.3 安装 OpenSSL 并配置环境变量(Windows 示例)
在 Android 7.0+ 上将 Charles 证书安装为系统证书,需要使用 OpenSSL 计算证书的 hash 值。
下载 OpenSSL:
- 推荐使用开源 Windows 版:
Win64OpenSSL-3.x.x.exe(可从 https://slproweb.com/products/Win32OpenSSL.html 下载)。 - 或通过包管理器(如
choco install openssl/winget install openssl)。
安装步骤 :
1.右键安装包 以管理员身份运行安装程序。
-
选择安装路径(例如
C:\Program Files\OpenSSL-Win64)。 -
一路 Next,完成安装(弹出页面直接关闭即可)。

配置环境变量 :
-
右键"此电脑" → 属性 → 高级系统设置 → 环境变量。
-
在 系统变量 中找到
Path,点击"编辑"。 -
新建 → 添加 OpenSSL 的
bin目录路径(例如C:\Program Files\OpenSSL-Win64\bin)。 -
确定保存所有窗口。

验证安装 :
打开新的命令提示符(CMD)或 PowerShell,输入:
cmd
openssl version
应显示 OpenSSL 版本信息。

4.3.4 Android 7.0+ 安装系统证书(以 MuMu 模拟器为例)
步骤概览:
-
从
chls.pro/ssl下载charles-proxy-ssl-proxying-certificate.pem。 -
使用 OpenSSL 计算证书 hash 值并重命名。


·
不要忘记后缀有一个.0!!!!!

-
通过 adb 将证书推送到模拟器的
/etc/security/cacerts/目录。



-
修改证书权限为
644。


详细命令(假设已安装 OpenSSL 和 ADB):
bash
# 计算 hash 值
openssl x509 -subject_hash_old -in charles-proxy-ssl-proxying-certificate.pem
# 输出第一行类似 3a1078b3
# 重命名证书文件
ren charles-proxy-ssl-proxying-certificate.pem 3a1078b3.0
# 通过 adb 推送到模拟器(需 root 权限且 system 可写)
adb root
adb remount
adb push 3a1078b3.0 /etc/security/cacerts/
# 修改权限
adb shell chmod 644 /etc/security/cacerts/3a1078b3.0
模拟器开启 root:在 MuMu 多开器/设置中开启 Root 权限。
4.3.5 iOS 证书信任
- iOS 10.0+ 安装证书后,需前往
设置 → 通用 → 关于本机 → 证书信任设置中开启 Charles 证书开关。 - 如不生效,重启手机重试。
4.4 手机设置代理后无法上网
- 现象:手机无法访问外网。
- 原因:Charles 默认开启了 外部请求阻止(黑名单)。
- 解决:
Proxy→Access Control Settings→ 添加手机的 IP 地址,或添加0.0.0.0/0(允许所有,仅测试环境使用)。
五、常见问题速查
| 问题 | 原因 | 解决方法 |
|---|---|---|
抓包显示 unknown |
HTTPS 请求未安装证书 | 安装 Charles 根证书(电脑+手机) |
| 手机无法上网 | 未添加手机 IP 到访问控制列表 | Proxy → Access Control Settings 添加手机 IP |
| Android 7.0+ 无法安装用户证书 | 系统限制 | Root 后安装为系统证书(见 4.3.4) |
证书安装后仍显示 unknown |
SSL 代理未开启 | Proxy → SSL Proxying Settings 勾选 Enable,并添加 Host/Port(: 表示全部) |
| Charles 启动报端口占用 | 端口 8888 被其他程序占用 | Proxy → Proxy Settings 修改端口,或在任务管理器结束占用进程 |
openssl 不是内部或外部命令 |
未安装或环境变量未配置 | 安装 OpenSSL 并配置 PATH(见 4.3.3) |
六、实用技巧
- 快速清空记录 :点击 Charles 工具栏的 🧹 按钮(或
Edit→Clear)。 - 保存会话 :
File→Save Session,便于后续分析。 - 重放请求 :右键某请求 →
Repeat或Repeat Advanced。 - Map Local :
Tools→Map Local,将远程请求映射到本地文件(mock 数据)。 - Throttle 快速开关:点击工具栏的🚦图标。