10分钟上手Charles:抓包改包实战

1 为什么需要 Charles?

 开发/测试中遇到的一些网络问题,例如接口调试慢、数据不对、请求失败、性能瓶颈等。

那么这个时候就需要有一个工具辅助我们定位问题是什么?这个时候我们就可以考虑使用Charles(也有其他工具例如fiddler,本人主要是单纯觉得Charles界面友好)。

那我们来简单了解一下Charles 是什么?

它是 一款强大的 HTTP/HTTPS 代理服务器、监控器和调试工具(跨平台:Win/Mac/Linux)。
核心价值:
* 实时查看和分析移动端/桌面端/服务端的网络请求与响应。
* 拦截和修改请求与响应(调试、Mock 数据)。
* 性能分析(请求耗时、大小、瀑布图)。
* 模拟弱网环境。
* 支持 HTTP/1.x, HTTP/2, WebSocket, SSL/TLS。

2 安装与基础配置


下载与安装: 提供官方下载链接,简述安装步骤(大家去百度搜索即可,破解版的也能找到 )。
核心概念:代理
原理简述: Charles 作为“中间人”代理你的设备流量。
配置设备代理:
桌面端: 系统/浏览器设置代理(或使用 Charles 的 Chrome 扩展)。
移动端: 手机连接与电脑相同的 Wi-Fi,手动配置 Wi-Fi 代理(IP: Charles 所在电脑的局域网 IP,端口: 8888 可修改)。
基本界面介绍: 主窗口、工具栏、结构视图(Structure)、序列视图(Sequence)、过滤器(Filter)。

首次启动与信任证书 (至关重要!后面我们会单独讲解):
* 为什么需要安装 Charles 根证书?(为了解密 HTTPS 流量)。
桌面端安装证书: Charles Help -> SSL Proxying -> Install Charles Root Certificate 并信任。
移动端安装证书: 手机浏览器访问 chls.pro/ssl 下载安装并信任(iOS 描述文件/Android 设置中信任)。

3. 核心功能详解


3.1 抓包与查看 (核心)


* 启动/停止记录流量。
Structure 视图: 按域名/主机分组查看请求,清晰明了。
Sequence 视图: 按时间顺序查看所有请求,适合分析瀑布流。


请求/响应详情查看:
Overview: 基本信息(URL、方法、状态码、时间、大小)。
Headers: 请求头和响应头(Cookie、User-Agent、Content-Type等)。
Query String: URL 参数解析。
Cookies: 请求携带和响应设置的 Cookie。
Request/Response Body:
* 文本格式(JSON, XML, HTML, CSS, JS):自动格式化、语法高亮。
* 图片格式:预览图片。
* 其他格式(如 Protobuf):可能需要 Viewers 插件或手动解析。


3.2 HTTPS 抓包配置 (重点难点)


Charles 设置: Proxy -> SSL Proxying Settings...
* 勾选 Enable SSL Proxying
Add Location:配置需要解密的主机和端口(如 *:* 解密所有,或更安全的 *.yourdomain.com:443)。
设备信任证书: 再次强调,必须在设备和电脑上都安装并信任 Charles 根证书,否则看到的是乱码或连接失败。
* 常见问题排查(证书不受信任、连接失败)。


3.3 修改请求与响应 (断点功能 - 强大调试/Mock)


Breakpoints 设置: Proxy -> Breakpoint Settings...
* 启用断点。
* 添加需要拦截的请求 URL(支持通配符 *)。
拦截流程:
* 触发匹配的请求 -> Charles 暂停 -> 允许修改 请求 (URL, Headers, Body) -> 发送修改后的请求到服务器。
* 服务器返回响应 -> Charles 暂停 -> 允许修改 响应 (状态码, Headers, Body) -> 发送修改后的响应回客户端。
应用场景:
* 测试不同请求参数的结果。
* 修改请求头(如 User-Agent, Cookie)。
Mock 数据: 直接修改响应体,返回自定义的 JSON/XML/HTML 等,用于前端开发或测试后端未完成的接口。
* 测试错误处理(修改状态码为 404, 500 等)。

如果想精确到PATH进行断点需要通配符,具体是针对域名、


3.4 重写请求与响应 (Rewrite - 自动化修改)


Tools -> Rewrite...
* 定义规则集(Ruleset)。
* 添加规则:匹配请求/响应的条件(URL, Body, Header 等)和对应的修改动作(添加/修改/删除 Header,查找替换 Body 文本等)。
* 与断点的区别:自动化、无需手动暂停。适合批量、规则化的修改(如全局替换某个字符串、添加特定 Header)。


3.5 映射功能 (Map Local / Map Remote)


Map Local: Tools -> Map Local...
* 将匹配的线上请求映射到本地文件
核心应用: 前端开发时,用本地修改的 JS/CSS/HTML/API 数据文件快速替换线上文件进行测试,无需等待部署。
Map Remote: Tools -> Map Remote...
* 将匹配的请求重定向到另一个远程 URL
* 应用:将请求指向测试环境、灰度环境或特定的服务版本。

4. 高级技巧与效率提升


4.1 强大的过滤器 (Focus)


* 使用顶部 Filter 栏快速筛选特定主机、URL 关键词的请求。
* 在 Structure 视图中右键域名/路径选择 Focus,只显示相关流量。


4.2 性能分析


* 查看 Overview 中的时间信息(DNS, Connect, SSL, Request, Response, Total)。
* 在 Sequence 视图分析瀑布图(Waterfall),找出耗时长的请求或阻塞点。
* 使用 Summary (View -> Summary) 统计请求数量、总数据量、平均耗时等。


4.3 模拟弱网环境 (Throttling)


Proxy -> Throttle Settings...
* 启用节流,选择预设模板(3G, 4G, DSL)或自定义带宽、延迟、丢包率。
* 应用:测试 App/网页在慢速网络下的表现和用户体验。


4.4 重复请求 (Repeat / Repeat Advanced)


* 右键请求选择 Repeat 重发一次。
Repeat Advanced:指定重复次数、并发数,用于简单压力测试或接口验证。


4.5 导出与导入会话


* 保存 .chls 文件记录抓包会话,方便分享或后续分析。
* 导入 .chls 文件恢复会话。

整篇文章对我们常用的功能做了简单介绍,对于HTTPS 抓包配置我们在下一篇说

~欢迎同行交流学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

myting

感恩打赏!泡面终于能加蛋

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值