Charles:软件能力深度解析 / 跨平台 HTTP/HTTPS 代理调试工具 / 客户端与互联网之间的中间人代理 / 拦截、查看、篡改所有网络流量

一句话定位 :Charles 是一款跨平台 HTTP/HTTPS 代理调试工具,本质是工作在客户端与互联网之间的中间人代理,能拦截、查看、篡改所有网络流量。

一、核心能力全景总览

能力类别 具体功能 解决什么问题 使用频率
流量捕获 HTTP/HTTPS 全量抓包 查看请求头、响应体、参数、Cookies ⭐⭐⭐⭐⭐
流量解密 SSL Proxying(MITM 中间人) 破解 HTTPS 加密,查看明文内容 ⭐⭐⭐⭐⭐
流量篡改 Breakpoints 断点调试 拦截请求,实时修改参数/响应 ⭐⭐⭐⭐
数据 Mock Map Local / Map Remote 离线调试,本地文件替换线上接口 ⭐⭐⭐⭐
弱网模拟 Throttle 限速 模拟 2G/3G/4G/高延迟/丢包环境 ⭐⭐⭐⭐
请求重写 Rewrite 规则匹配 批量修改请求头、参数、状态码 ⭐⭐⭐⭐
请求重发 Repeat / Compose 复现 Bug、快速回归测试 ⭐⭐⭐
DNS 欺骗 DNS Spoofing 将域名解析到指定 IP,多环境切换 ⭐⭐⭐
反向代理 Reverse Proxy 隐藏真实服务器,负载均衡 ⭐⭐
数据导出 Session / CSV / XML / Trace 保存会话、远程协作分析 ⭐⭐⭐

二、六大核心功能深度拆解

功能 原理 操作路径 典型场景 性能影响
全量抓包 监听 8888 端口所有流量,解析 HTTP/1.x、HTTP/2、WebSocket Proxy → Windows/macOS Proxy 排查接口参数错误、分析第三方接口、定位前后端联调问题 增量存储,节省约 45% 内存
HTTPS 解密 MITM 中间人攻击:Charles 分别与客户端/服务端建立 SSL 链接,从而解密通信内容 Help → SSL Proxying → Install Root Certificate + Proxy → SSL Proxying Settings → Add *:443 移动支付调试、查看 Token/密码是否明文传输 CPU 上升约 15%
断点调试 TCP 连接重定向,在请求发出前/响应返回前暂停 右键请求 → BreakpointsProxy → Breakpoint Settings 电商价格篡改测试、支付金额修改、异常场景模拟 延迟增加约 80ms
Map Local 文件哈希校验,将指定 URL 的响应替换为本地文件 Tools → Map Local → Enable → Add Entry 后端接口未 Ready 时前端离线调试、模拟特殊返回 IO 耗时上升
弱网模拟 Token Bucket 算法,自定义带宽/延迟/丢包率 Proxy → Throttle Settings(快捷键 Ctrl+Shift+T) 地图 App 弱网测试、测试 APP 卡顿/闪退/重连 精度 ±3%
请求重写 正则匹配,动态修改请求头/响应头/参数/状态码 Tools → Rewrite → Enable → Add 统一修改域名、添加认证信息、模拟错误码 无明显性能影响

三、HTTPS 抓包异常排查表

错误现象 根本原因 解决方案
CERT_UNTRUSTED 证书未被系统信任 开启 OS 完全信任(Windows 放入"受信任的根证书颁发机构")
HSTS 强制 HTTPS 浏览器安全策略拒绝降级 清除浏览器 HSTS 缓存
证书固定(Pinning) App 硬编码了服务器证书 Frida Hook 绕过(如 SSLPinningModule.verify.disable()
HTTP/2 强制加密 ALPN 协议限制 Proxy → Protocol Preferences → Prefer HTTP/1
iOS 10.3+ 证书无效 新证书默认不受信任 设置 → 通用 → 关于本机 → 证书信任设置 → 开启 Charles 证书
Android 7.0+ 抓不到包 系统不再信任用户域证书 Root 后将证书移至系统分区,或修改 Network Security Config

四、移动端抓包配置对比

项目 iOS Android
代理配置 WiFi → 修改网络 → 手动代理 → 填电脑 IP:8888 WiFi → 高级选项 → 手动代理 → 填电脑 IP:8888
证书安装 浏览器访问 chls.pro/ssl 自动下载 → 安装 → 信任设置中开启 浏览器访问 chls.pro/ssl → 安装 → 设置 → 安全 → 加密与凭据 → 安装
抓包方式 创建本地 VPN,无需配置全局代理即可抓包 依赖系统代理配置
特殊限制 iOS 10.3+ 需手动信任证书 Android 7.0+ 默认不信任用户证书,需 Root
数据隐私 iOS 版声明不收集用户数据,流量处理在本地完成 ---

五、Charles vs 主流工具对比

对比维度 Charles Fiddler Burp Suite Mitmproxy
跨平台 ✅ Win/Mac/Linux/iOS/Android ❌ 仅 Windows ✅ Win/Mac/Linux ✅ 全平台(命令行)
HTTPS 解密 ✅ 一键安装证书 ✅ 一键安装证书 ✅ 需配置 CA ✅ 命令行配置
断点调试 ✅ 可视化断点 ✅ 规则断点 ✅ Intercept 拦截 ✅ 命令行脚本
弱网模拟 ✅ 内置 Throttle ✅ 内置 Rules ❌ 需插件 ✅ 脚本支持
Mock 数据 ✅ Map Local/Remote ✅ AutoResponder ✅ Match & Replace ✅ 脚本
界面友好度 ⭐⭐⭐⭐⭐ 简洁直观 ⭐⭐⭐⭐ 功能繁杂 ⭐⭐⭐ 偏专业 ⭐⭐ 命令行
移动端抓包 ⭐⭐⭐⭐⭐ 首选 ⭐⭐⭐ 较弱 ⭐⭐⭐ 一般 ⭐⭐ 需额外配置
收费 💰 付费(试用 30 天,未激活每次等 10s) 💰 付费 💰 付费(社区版免费) ✅ 免费开源
适用人群 前端/移动端/测试 Windows 后端开发 安全渗透测试 高级用户/自动化

六、架构与性能指标

模块 技术实现 资源消耗
代理服务 监听 8888 端口,拦截所有流量 内存占用中等(基于 Java)
解析引擎 支持 HTTP/1.x、HTTP/2、WebSocket CPU 正常
存储系统 增量存储技术 平均节省 45% 内存
HTTPS 解密 MITM 中间人 CPU ↑15%
断点调试 TCP 连接重定向 延迟 +80ms
带宽限制 Token Bucket 算法 精度 ±3%
Map Local 文件哈希校验 IO 耗时上升
反向代理 Nginx 级转发引擎 吞吐量 ↓8%

七、数据导入导出格式

导出格式 是否包含会话信息 是否支持导入 用途
Session 文件(.charles) ✅ 包含 ✅ 支持 完整会话共享,远程协作
XML ✅ 包含 ✅ 支持 通用格式,跨工具兼容
CSV Trace text file ❌ 不包含 ✅ 支持 纯数据,方便做表格分析
JSON ❌ 不包含 ❌ 不支持 仅查看

八、核心局限性

局限 说明 替代方案
非 HTTP 协议无法抓取 TCP/UDP 原始包、私有加密协议、某些游戏协议无能为力 Wireshark
双向认证穿透失败 客户端和服务端互相验证证书时,Charles 会被拒绝 ---
Android 7.0+ 限制 App 默认不信任用户安装的第三方证书 Root 后移至系统分区
大并发性能瓶颈 压测场景或大文件(如 1GB 上传)下明显卡顿甚至崩溃 Mitmproxy / Nginx 反向代理
付费软件 未激活每次启动等 10s,运行 30 分钟自动关闭 Fiddler(免费版够用)

Charles 是网络调试领域的"瑞士军刀"------抓包、解密、篡改、Mock、弱网测试一站搞定,尤其在移动端抓包 + 可视化调试这个赛道上,目前没有比它更好用的 GUI 工具。但它不是万能的,非 HTTP 协议和高并发场景请交给专业工具。

相关推荐
神奇的程序员17 小时前
我的软件冲进苹果商店下载榜前 50 了
前端
阳光是sunny17 小时前
别再被 worktree 绕晕了!AI 编程时代你必须掌握的 Git 隔离神器
前端·人工智能·后端
万少18 小时前
万少的博客 - 技术分享与解决方案
前端·javascript·后端
尘世中一位迷途小书童21 小时前
用 Cesium 撸了一个森林火情监控大屏,弧线、粒子、发光效果都齐了
前端·javascript
IT_陈寒21 小时前
垃圾回收器选错了,我的Java服务内存炸了
前端·人工智能·后端
月光下的丝瓜1 天前
Flutter 国内安装指南
前端·flutter
玄星啊1 天前
AI 编程的第 30 天,我怀念古法 Coding 了
前端·ai编程
Jolyne_1 天前
Angular基础速通
前端·angular.js
锋行天下1 天前
半秒开!还有谁!!!
前端·vue.js·架构
代码搬运媛1 天前
git 下中文文件名乱码问题解决
前端