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 协议和高并发场景请交给专业工具。

相关推荐
UXbot1 小时前
移动端UI设计工具选型指南:iOS与Android设计标准支持对比
android·前端·低代码·ios·交互·团队开发·ui设计
程序员黑豆1 小时前
AI全栈开发 - Java:数据类型
java·前端
江华森1 小时前
Tomcat 10 实战部署指南:从零到生产级 Web 容器
java·前端·tomcat
放下华子我只抽RuiKe51 小时前
FastAPI 全栈后端(五):后台任务与消息队列
前端·javascript·react.js·ai·前端框架·fastapi·ai编程
丷丩1 小时前
MapLibre GL JS第44课:生成并添加缺失图标
前端·javascript·gis·mapblibre gl js
snow@li2 小时前
前端:下拉框里边的数据叫啥 / 怎么称呼
前端
禁默2 小时前
数字人切入,我用魔珐星云搭建政务大厅咨询数字人,低成本落地便民接待
前端·人工智能·政务
小二·2 小时前
React 18 新特性与 Hooks 进阶实战
前端·react.js·前端框架