【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 启动后默认开启代理(ProxyWindows Proxy / macOS Proxy)。
  • 确保 ProxyProxy Settings 中 HTTP 代理勾选,端口为 8888
  • 浏览器访问任意网址,Charles 中即出现请求记录。

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

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

操作步骤

  1. ProxyBreakpoints Settings → 勾选 Enable Breakpoints
  2. 点击 Add,设置断点条件:
    • Protocol:httphttps
    • 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. ProxyRecording SettingsInclude 标签页。
  2. 点击 Add,填入协议、主机、端口、路径(主机必填)。
  3. 确认后,Charles 只显示匹配 Include 规则的请求。

3.4 弱网测试(Throttle)

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

操作步骤

  1. ProxyThrottle Settings → 勾选 Enable Throttling
  2. 选择预设网络(如 3G)或自定义带宽、延迟、丢包率。
  3. 勾选 Only for selected hosts 可针对特定域名限速。
  4. 开始测试 → 完成后关闭 Enable Throttling

四、移动端(手机/模拟器)抓包

4.1 前提条件

  • 电脑和手机/模拟器连接同一个 WiFi
  • 电脑 IP 地址(可在命令行用 ipconfigifconfig 查看)。
  • Charles 允许远程连接:ProxyProxy 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. HelpSSL ProxyingInstall 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 默认开启了 外部请求阻止(黑名单)。
  • 解决:ProxyAccess Control Settings → 添加手机的 IP 地址,或添加 0.0.0.0/0(允许所有,仅测试环境使用)。

五、常见问题速查

问题 原因 解决方法
抓包显示 unknown HTTPS 请求未安装证书 安装 Charles 根证书(电脑+手机)
手机无法上网 未添加手机 IP 到访问控制列表 ProxyAccess Control Settings 添加手机 IP
Android 7.0+ 无法安装用户证书 系统限制 Root 后安装为系统证书(见 4.3.4)
证书安装后仍显示 unknown SSL 代理未开启 ProxySSL Proxying Settings 勾选 Enable,并添加 Host/Port(: 表示全部)
Charles 启动报端口占用 端口 8888 被其他程序占用 ProxyProxy Settings 修改端口,或在任务管理器结束占用进程
openssl 不是内部或外部命令 未安装或环境变量未配置 安装 OpenSSL 并配置 PATH(见 4.3.3)

六、实用技巧

  • 快速清空记录 :点击 Charles 工具栏的 🧹 按钮(或 EditClear)。
  • 保存会话FileSave Session,便于后续分析。
  • 重放请求 :右键某请求 → RepeatRepeat Advanced
  • Map LocalToolsMap Local,将远程请求映射到本地文件(mock 数据)。
  • Throttle 快速开关:点击工具栏的🚦图标。
相关推荐
Java面试题总结3 小时前
Nginx 配置笔记
运维·笔记·nginx
一定要AK3 小时前
SpringMVC 入门核心笔记
笔记
海海不掉头发3 小时前
【11月16日-大模型前置知识【深度学习】+大模型开发入门】-基础篇笔记
人工智能·笔记·深度学习
ZhiqianXia3 小时前
PyTorch 学习笔记(18) : lowering.py
pytorch·笔记·学习
一定要AK3 小时前
HTML5 入门到精通全章节学习笔记
笔记·学习·html5
Engineer邓祥浩4 小时前
JVM学习笔记(7) 第三部分 虚拟机执行子系统 第6章 类文件结构
jvm·笔记·学习
中屹指纹浏览器4 小时前
2026指纹浏览器技术架构深度解析:从隔离原理到性能优化的全链路实践
经验分享·笔记
sheeta19984 小时前
LeetCode 每日一题笔记 日期:2026.04.09 题目:3655.区间乘法查询后的异或二
笔记·算法·leetcode
NULL指向我4 小时前
nanomodbus库移植笔记1:移植创建slave从机实例
笔记