【Charles 抓包工具笔记】(自用复盘版)

📡 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://charlesproxy.com/get 可检查是否正常。

三、Charles 核心操作

3.1 开启代理抓包

  • Charles 启动后默认开启代理(Proxy → Windows Proxy / macOS Proxy)。
  • 确保 Proxy → Proxy Settings 中 HTTP 代理勾选,端口为 8888。
  • 浏览器访问任意网址,Charles 中即出现请求记录。

3.2 断点(Breakpoints)------ 修改请求/响应

应用场景:模拟异常数据、绕过前端校验、篡改接口返回。

操作步骤:

  1. Proxy → Breakpoints Settings → 勾选 Enable Breakpoints。
  2. 点击 Add,设置断点条件:
    • Protocol:http 或 https
    • Host:目标域名(如 api.example.com)
    • Port:一般留空或 *
    • Path:请求路径
    • 勾选 Request 和/或 Response(表示拦截请求和响应)
  3. 确认后,在浏览器触发对应请求。
  4. Charles 弹出断点编辑窗口:
    • 修改 Request 数据 → 点击 Execute
    • 修改 Response 数据 → 点击 Execute
  5. 所有断点执行完毕后,关闭断点功能(取消勾选 Enable Breakpoints)。

注意 :如不修改响应,直接点击 Execute 放行。

3.3 过滤(Filter)------ 只显示指定域名

目的:避免抓包列表被无关请求淹没。

方法一(临时过滤) :

在 Charles 界面下方的 Filter 输入框中直接输入关键词(如 api.xxx.com)。

方法二(永久过滤):

  1. Proxy → Recording Settings → Include 标签页。
  2. 点击 Add,填入协议、主机、端口、路径(主机必填)。
  3. 确认后,Charles 只显示匹配 Include 规则的请求。

3.4 弱网测试(Throttle)

应用场景:模拟 2G/3G/4G 网络环境,测试应用在网络不佳时的表现。

操作步骤:

  1. Proxy → Throttle Settings → 勾选 Enable Throttling。
  2. 选择预设网络(如 3G)或自定义带宽、延迟、丢包率。
  3. 勾选 Only for selected hosts 可针对特定域名限速。
  4. 开始测试 → 完成后关闭 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 根证书
  1. Help → SSL Proxying → Install Charles Root Certificate。
  2. 点击"安装证书" → 选择"本地计算机" → "将所有证书放入下列存储" → 选择"受信任的根证书颁发机构"。
  3. 完成导入后,重启 Charles。
4.3.2 手机端安装证书(Android 通用步骤)
  1. 手机连接 Charles 代理后,浏览器访问 chls.pro/ssl 下载证书(.pem 文件)。

  2. 安装证书:

    • Android 7.0 以下:直接点击证书文件,按提示安装。
    • Android 7.0 及以上:系统限制用户证书,需要 Root 权限 并将证书安装为系统证书(见下文)。
4.3.3 安装 OpenSSL 并配置环境变量(Windows 示例)

在 Android 7.0+ 上将 Charles 证书安装为系统证书,需要使用 OpenSSL 计算证书的 hash 值。

下载 OpenSSL:

安装步骤 :

1.右键安装包 以管理员身份运行安装程序。

  1. 选择安装路径(例如 C:\Program Files\OpenSSL-Win64)。

  2. 一路 Next,完成安装(弹出页面直接关闭即可)。

配置环境变量 :

  1. 右键"此电脑" → 属性 → 高级系统设置 → 环境变量。

  2. 在 系统变量 中找到 Path,点击"编辑"。

  3. 新建 → 添加 OpenSSL 的 bin 目录路径(例如 C:\Program Files\OpenSSL-Win64\bin)。

  4. 确定保存所有窗口。

验证安装 :

打开新的命令提示符(CMD)或 PowerShell,输入:

cmd 复制代码
openssl version

应显示 OpenSSL 版本信息。

4.3.4 Android 7.0+ 安装系统证书(以 MuMu 模拟器为例)

步骤概览:

  1. 从 chls.pro/ssl 下载 charles-proxy-ssl-proxying-certificate.pem。

  2. 使用 OpenSSL 计算证书 hash 值并重命名。

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

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


  4. 修改证书权限为 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 快速开关:点击工具栏的🚦图标。
相关推荐
qq_284274059 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
qq_2842740510 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
Titan202411 小时前
MySQL访问个人学习笔记
笔记·学习·mysql
深圳老胡12 小时前
STM32CubeMX 生成 CMake 工程,用 VSCode 编译与调试的完整流程
笔记·stm32·单片机·代码规范
坤坤子吖13 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
乐橙开放平台13 小时前
智慧连锁客流检测和离岗检测怎么对接
大数据·人工智能·笔记·物联网·自动化·音视频·智能家居
零基础12313 小时前
FinalShell 使用教程:从安装到高效运维
运维·经验分享·笔记·finalshell
ACP广源盛1392462567313 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
敲个大西瓜15 小时前
langchain笔记(一)
redis·笔记·langchain
带金箍的至尊宝15 小时前
系统架构设计师笔记 05:第2章硬件与软件基础,冯诺依曼结构怎么考
数据库·笔记·系统架构