Charles抓包教程:入门到精通
Charles 抓包教程:入门到精通
Charles 是一款功能强大的 HTTP 抓包工具,广泛应用于 Web 和移动应用的开发和调试过程中。它可以记录所有设备与互联网之间的 HTTP/HTTPS 通信,帮助开发者分析网络请求、定位问题、模拟特定场景等。本教程将带你从入门到精通,全面掌握 Charles 的使用技巧。
一、入门篇:安装与基本配置
1. 下载与安装
- 访问 Charles 官网:https://www.charlesproxy.com/
- 下载对应操作系统的安装包(支持 Windows、macOS 和 Linux)。
- 按照提示完成安装。
2. 启动与界面介绍
- 启动 Charles,主界面主要分为以下几个部分:
- Structure 视图:以树状结构展示请求,方便按域名和路径进行查看。
- Sequence 视图:以时间线顺序展示请求,更直观地查看请求发生的顺序。
- Overview 标签页:显示请求的概览信息,如 URL、Method、Status Code 等。
- Request 标签页:显示请求的详细信息,包括 Headers、Body 等。
- Response 标签页:显示响应的详细信息,包括 Headers、Body 等。
3. 配置 HTTP 代理
- 获取电脑 IP 地址:在命令行中输入
ipconfig
(Windows) 或ifconfig
(macOS/Linux) 查看本机 IP。 - 设置 Charles 代理端口:默认端口为 8888,可在
Proxy
->Proxy Settings
中修改。 - 设置设备代理:
- 电脑端:在系统网络设置中配置 HTTP 代理,将服务器地址设置为电脑 IP,端口设置为 Charles 代理端口。
- 手机端 (以 iOS 为例):
- 进入 Wi-Fi 设置,找到已连接的 Wi-Fi,点击右侧的 "i" 图标。
- 拉到最底部,点击 "配置代理"。
- 选择 "手动",填写服务器地址(电脑 IP)和端口(Charles 代理端口)。
4. 开始抓包
配置好代理后,所有通过代理服务器的网络请求都会被 Charles 捕获并显示在主界面。
二、进阶篇:HTTPS 抓包与常用功能
1. 安装 SSL 证书
由于 HTTPS 使用加密连接,Charles 默认无法解析 HTTPS 请求内容。为了抓取 HTTPS 请求,需要安装 Charles 根证书。
-
安装电脑端证书:
- 在 Charles 中,点击
Help
->SSL Proxying
->Install Charles Root Certificate
。 - 按照提示将证书安装到 "受信任的根证书颁发机构"。
- 在 Charles 中,点击
-
安装手机端证书 (以 iOS 为例):
- 在 Charles 中,点击
Help
->SSL Proxying
->Install Charles Root Certificate on a Mobile Device or Remote Browser
。 - 手机浏览器访问
chls.pro/ssl
下载证书。 - 进入
设置
->通用
->描述文件
或设置
->通用
->关于本机
->证书信任设置
,找到 Charles 证书并安装,并启用完全信任。
- 在 Charles 中,点击
2. 启用 SSL Proxying
- 在 Charles 中,点击
Proxy
->SSL Proxying Settings
。 - 勾选 "Enable SSL Proxying",并添加需要抓取 HTTPS 请求的域名。可以使用通配符
*
匹配所有域名。
3. 常用功能
-
断点 (Breakpoints):
- 允许在请求或响应发送之前暂停,可以修改请求或响应的内容。
- 在需要设置断点的请求上右键,选择 "Breakpoints"。
- 在
Proxy
->Breakpoint Settings
中可以查看和管理断点。
-
重写 (Rewrite):
- 可以根据规则修改请求或响应的内容,例如修改 URL、Headers、Body 等。
- 在
Tools
->Rewrite
中创建和管理重写规则。
-
映射 (Map Local/Remote):
- Map Local:将请求映射到本地文件,常用于调试前端代码。
- Map Remote:将请求映射到另一个 URL,常用于测试环境切换。
- 在
Tools
中选择Map Local
或Map Remote
进行设置。
-
限速 (Throttle):
- 模拟不同的网络环境,例如 3G、4G、低速网络等。
- 在
Proxy
->Throttle Settings
中进行设置。
-
重复请求 (Repeat/Advanced Repeat):
- Repeat:重新发送选中的请求。
- Advanced Repeat:可以修改请求参数并多次重复发送,常用于压力测试。
- 在需要重复发送的请求上右键,选择
Repeat
或Advanced Repeat
。
-
黑名单/白名单 (Black List/White List):
- Black List:阻止指定的请求。
- White List:只允许指定的请求通过。
- 在
Tools
中选择Black List
或White List
进行设置。
-
Compose:
- 可以手动编写新的请求。
- 在
Tools
中选择Compose
。
-
导出和导入:
- 可以导出抓包记录,方便分享和分析。
- 可以导入已有的抓包记录,方便复现问题。
- 在
File
菜单中选择Export
或Import
。
三、精通篇:高级技巧与实战应用
1. 使用 Filters 过滤请求
- Charles 提供了强大的过滤功能,可以根据多种条件过滤请求,例如域名、协议、方法、状态码、内容类型等。
- 在主界面底部的 "Filter" 栏中输入过滤条件,或者使用右侧的 "Filter" 按钮进行高级过滤。
2. 使用 Sessions 管理抓包记录
- 可以将抓包记录保存为不同的 Session,方便管理和切换。
- 在
File
菜单中选择New Session
创建新的 Session,或者使用Open Session
打开已有的 Session。
3. 使用命令行工具进行自动化抓包
- Charles 提供了命令行工具
charles
,可以通过命令行进行抓包和控制。 - 可以使用命令行工具与其他自动化工具集成,实现自动化抓包和测试。
4. 实战应用场景
- 接口调试:通过抓包分析接口请求和响应,定位接口问题。
- 性能分析:通过抓包分析请求时间、资源加载情况等,优化页面性能。
- 安全测试:通过抓包分析请求的安全性,发现潜在的安全漏洞。
- 移动应用调试:通过抓包分析移动应用的请求,定位问题和优化性能。
- 爬虫开发:通过抓包分析目标网站的请求,构建爬虫程序。
- 反爬虫:通过抓包分析请求, 反爬虫或者检测爬虫行为。
- 数据伪造:结合Rewrite, Map Local, Breakpoint 等工具,在请求过程中更改request或者response数据。
四、总结
Charles 是一款功能强大的抓包工具,掌握 Charles 的使用技巧可以大大提高开发和调试的效率。本教程从入门到精通,介绍了 Charles 的基本配置、HTTPS 抓包、常用功能、高级技巧和实战应用场景。希望本教程能帮助你更好地使用 Charles,成为一名抓包高手!
五、常见问题
- 无法抓取 HTTPS 请求?
- 确保已正确安装并信任 Charles 根证书。
- 确保已在
Proxy
->SSL Proxying Settings
中启用 SSL Proxying 并添加了正确的域名。
- 手机无法连接网络?
- 确保手机已正确配置代理,并且电脑和手机处于同一网络环境下。
- 确保 Charles 已启动并且代理端口设置正确。
- 关闭防火墙或者把Charles添加到防火墙白名单中。
- 部分请求无法抓取?
- 有些应用可能会使用自己的证书验证机制,导致 Charles 无法抓取。
- 部分请求不是标准的HTTP请求,Charles无法捕获。
- 忘记移除设备代理
- 可能导致无法访问网络。
学习并掌握 Charles 的使用,可以让你的工作事半功倍。希望这篇教程能够帮助你更好地理解和使用 Charles!