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 为例):
      1. 进入 Wi-Fi 设置,找到已连接的 Wi-Fi,点击右侧的 "i" 图标。
      2. 拉到最底部,点击 "配置代理"。
      3. 选择 "手动",填写服务器地址(电脑 IP)和端口(Charles 代理端口)。

4. 开始抓包

配置好代理后,所有通过代理服务器的网络请求都会被 Charles 捕获并显示在主界面。

二、进阶篇:HTTPS 抓包与常用功能

1. 安装 SSL 证书

由于 HTTPS 使用加密连接,Charles 默认无法解析 HTTPS 请求内容。为了抓取 HTTPS 请求,需要安装 Charles 根证书。

  • 安装电脑端证书:

    1. 在 Charles 中,点击 Help -> SSL Proxying -> Install Charles Root Certificate
    2. 按照提示将证书安装到 "受信任的根证书颁发机构"。
  • 安装手机端证书 (以 iOS 为例):

    1. 在 Charles 中,点击 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser
    2. 手机浏览器访问 chls.pro/ssl 下载证书。
    3. 进入 设置 -> 通用 -> 描述文件设置 -> 通用 -> 关于本机 -> 证书信任设置,找到 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 LocalMap Remote 进行设置。
  • 限速 (Throttle):

    • 模拟不同的网络环境,例如 3G、4G、低速网络等。
    • Proxy -> Throttle Settings 中进行设置。
  • 重复请求 (Repeat/Advanced Repeat):

    • Repeat:重新发送选中的请求。
    • Advanced Repeat:可以修改请求参数并多次重复发送,常用于压力测试。
    • 在需要重复发送的请求上右键,选择 RepeatAdvanced Repeat
  • 黑名单/白名单 (Black List/White List):

    • Black List:阻止指定的请求。
    • White List:只允许指定的请求通过。
    • Tools 中选择 Black ListWhite List 进行设置。
  • Compose:

    • 可以手动编写新的请求。
    • Tools中选择Compose
  • 导出和导入:

    • 可以导出抓包记录,方便分享和分析。
    • 可以导入已有的抓包记录,方便复现问题。
    • File 菜单中选择 ExportImport

三、精通篇:高级技巧与实战应用

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!

THE END