Charles 抓包工具使用教程
Charles 抓包工具使用教程
一、Charles 简介
Charles 是一款功能强大的网络抓包工具,支持 HTTP/HTTPS 流量监控、请求 / 响应分析、断点调试等功能。它通过将自身设置为系统的网络代理服务器,拦截并分析经过它的网络请求,帮助开发人员和测试人员深入了解网络通信过程,排查问题、优化性能。Charles 适用于多种操作系统,包括 Windows、MacOS 和 Linux,并且提供了直观易用的界面,使得用户能够高效地进行网络抓包和分析工作。
二、下载与安装
2.1 下载
Charles 官网为:https://www.charlesproxy.com/download/ 。你可以在官网根据自己的操作系统下载对应的最新版本安装包。
2.2 安装
- Windows 系统:双击下载的安装包,按照安装向导的提示,一路点击 “下一步” 进行默认安装即可。安装完成后,可在开始菜单中找到 Charles 程序并启动。
- Mac 系统:下载完成后,双击打开.dmg 镜像文件,将 Charles 图标拖拽到 Applications 文件夹中完成安装。安装完成后,在 “应用程序” 中找到 Charles 并打开。
Charles 是收费软件,但提供 30 天的免费试用期。试用期过后,未付费用户每次使用时间不能超过 30 分钟,且启动时有 10 秒延迟。
三、基础设置
3.1 代理设置
Charles 默认监听 8888 端口,并自动设置系统代理(部分系统可能需要手动确认)。你也可以手动检查或修改代理设置:
- 打开 Charles,在菜单栏中选择 “Proxy” -> “Proxy Settings”。
- 在弹出的对话框中,确保 “Enable transparent HTTP proxying” 被勾选,端口号一般保持默认的 8888 即可。若需要修改端口,直接在 “Port” 处输入新端口号,点击 “OK” 保存设置。
3.2 查看本机 IP 地址
在抓取移动设备或其他远程设备的网络包时,需要知道本机的 IP 地址。在 Charles 中,通过菜单栏 “Help” -> “Local IP Address”,即可查看到当前设备的 IP 地址。
四、基础抓包流程
4.1 开始抓包
启动 Charles 后,点击工具栏上的 “Start Recording”(红色圆点图标),此时 Charles 开始捕获网络请求。
4.2 触发网络请求
在浏览器或应用程序中进行相关操作,例如访问网页、调用 API、在手机应用中进行页面切换、数据加载等操作,这些操作所产生的网络请求都会被 Charles 捕获。
4.3 查看请求
- 左侧面板:显示捕获的域名和请求列表。在 “Structure” 视图下,请求按域名分类显示,方便查看同一域名下的所有请求;在 “Sequence” 视图下,请求按照访问时间从上到下排序,直观展示请求的先后顺序。
- 右侧面板:显示选中请求的详细信息,包括请求头(Headers)、请求体(Body)、响应头、响应内容等。对于常见的数据格式,如 JSON,Charles 会提供格式化显示,方便阅读和分析。
五、过滤请求
当捕获的请求较多时,为了更快速地找到需要分析的请求,可使用过滤功能。
5.1 域名过滤
在 Charles 界面中部的 “Filter” 栏中输入关键字,例如域名 “example.com”,则只会显示包含该关键字的请求。此方法可快速筛选出特定域名相关的请求。
5.2 Focus 功能
在左侧请求列表中,右键点击需要关注的域名,选择 “Focus”,此时 Charles 界面只会显示该域名的请求,再次点击 “Focus” 可取消该过滤。
5.3 高级过滤
在菜单栏中选择 “Proxy” -> “Recording Settings”,在弹出的对话框中选择 “Include” 栏,点击 “add” 添加需要监控的协议(如 HTTP、HTTPS)、主机地址和端口号。通过这种方式,可精确设置只截取目标网站的网络包。例如,设置监控 “https://api.example.com:443” 的请求,只有符合该条件的请求才会被捕获。
六、HTTPS 抓包配置
默认情况下,Charles 不能直接抓取 HTTPS 网络通讯的数据,需要进行额外配置。
6.1 安装 Charles 根证书
- Mac 系统:在 Charles 菜单栏中选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,按照提示输入系统账号密码,证书将安装到钥匙串中。安装完成后,打开 “钥匙串访问”,找到 Charles 证书,双击打开,在 “信任” 选项中,将 “使用此证书时” 设置为 “始终信任”。
- Windows 系统:在 Charles 菜单栏中选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,按照证书安装向导提示,将证书安装到 “受信任的根证书颁发机构”。
- 移动设备(以 iOS 为例):确保手机和电脑连接在同一网络下,且手机已设置代理(代理设置方法见下文 “移动设备抓包” 部分)。在手机浏览器中输入 “chls.pro/ssl”,下载 Charles 根证书。下载完成后,在手机 “设置” -> “通用” -> “描述文件与设备管理” 中找到并安装下载的证书。安装完成后,进入 “设置” -> “通用” -> “关于本机” -> “证书信任设置”,打开刚安装的 Charles 证书的开关,使其受信任。
- 移动设备(以 Android 为例):同样确保手机和电脑在同一网络且已设置代理。在手机浏览器中访问 “chls.pro/ssl” 下载证书。部分手机可直接下载并安装证书;若不能直接安装,需下载证书文件(.pem 结尾),然后在手机 “设置” -> “安全” -> “从设备存储空间安装” 中找到下载的证书进行安装。安装完成后,在相关安全设置中找到已安装的 Charles 证书并设置为信任(不同 Android 系统版本路径可能略有差异)。
6.2 启用 SSL 代理
在 Charles 菜单栏中选择 “Proxy” -> “SSL Proxying Settings”,在弹出的对话框中,勾选 “SSL Proxying”,点击 “Add” 添加需要抓取 HTTPS 请求的域名和端口。例如,若要抓取所有 HTTPS 请求,可在 “Host” 处输入 “*”(通配符,表示所有主机),“Port” 处输入 “443”(HTTPS 默认端口),点击 “OK” 保存设置。完成上述两步后,Charles 即可抓取 HTTPS 网络请求。
七、移动设备抓包
7.1 手机代理设置
- iOS 设备:打开手机 “设置” -> “无线局域网”,点击当前已连接的 WiFi 名称,在 “HTTP 代理” 中选择 “手动”,输入电脑的 IP 地址(可通过 Charles 的 “Help” -> “Local IP Address” 查看)和 Charles 的代理端口(默认为 8888),点击 “存储”。
- Android 设备:打开手机 “设置” -> “WLAN”,长按已连接的无线网络名称,选择 “修改网络”,勾选 “显示高级选项”,在 “代理” 选择项中选择 “手动”,输入电脑 IP 地址和 Charles 代理端口,点击 “保存”。设置完成后,在手机上打开任意联网应用,Charles 会弹出请求连接的确认菜单,点击 “Allow” 即可开始捕获手机的网络请求。
八、常用功能
8.1 断点调试
- 设置断点:在 Charles 左侧请求列表中,右键点击需要设置断点的请求,选择 “Breakpoints”,该请求前会出现断点标识。
- 触发断点:在手机或浏览器上再次触发该请求,Charles 会拦截该请求,显示请求详细信息。此时可在 Charles 中修改请求参数,如修改表单数据、URL 参数等,点击 “Execute” 发送修改后的请求。服务端返回响应后,还可在 Charles 中修改响应内容,然后点击 “Execute” 将修改后的响应返回给客户端,观察客户端的表现,用于调试和测试。
- 取消断点:再次右键点击已设置断点的请求,选择 “Breakpoints” 可取消断点;或在菜单栏中选择 “Proxy” -> “Breakpoint Settings”,在弹出的对话框中删除或禁用已设置的断点。
8.2 重写请求(Rewrite)
在 Charles 中,可通过 “Rewrite” 功能修改请求头、URL 或响应内容。
- 选择 “Tools” -> “Rewrite”,在弹出的 “Rewrite Settings” 对话框中,点击 “Enable Rewrite” 开启重写功能。
- 点击 “Add” 添加重写规则,可设置匹配条件(如请求的 URL、请求头、响应状态码等)和要执行的操作(如修改请求头的值、替换 URL 中的部分内容、修改响应体等)。例如,可设置规则将所有请求的 User - Agent 头修改为指定值,模拟不同设备的访问。设置完成后,点击 “OK”,当符合规则的请求经过 Charles 时,会按照设置进行重写。
8.3 模拟慢速网络
在测试应用在不同网络环境下的性能时,可使用 Charles 模拟慢速网络。
- 选择 “Proxy” -> “Throttle Settings”,在弹出的对话框中勾选 “Enable Throttling” 启用限速功能。
- “Throttle Preset” 下拉框中提供了多种预设的网络类型,如 “DSL (128K/sec)” 模拟低速宽带网络、“3G (CDMA)” 模拟 3G 网络等,可根据需求选择。也可自定义网络带宽(Bandwidth)、延迟(Latency)、可靠性(Reliability)和稳定性(Stability)等参数。例如,降低带宽可模拟网络速度慢的情况,增加延迟可模拟网络延迟高的场景。设置完成后,点击 “OK”,此时应用的网络请求速度将按照设置的网络环境进行模拟。
8.4 保存与导出
- 保存会话:若需要保存当前捕获的所有网络请求会话,以便后续分析,可在 Charles 菜单栏中选择 “File” -> “Save Session”,选择保存路径并输入文件名(文件格式为.chls),点击 “保存”。下次可通过 “File” -> “Open Session” 打开保存的会话文件继续查看分析。
- 导出请求:对于单个请求,若需要导出其相关信息,如用于在其他工具中进行调试或分享给他人,可在请求上右键点击,选择 “Export”,然后选择导出格式,如 “cURL” 可导出为 cURL 命令格式,方便在命令行中执行;“HTTP” 可导出为 HTTP 文件格式,包含请求头、请求体、响应头和响应体等详细信息。
九、抓包失败排查
9.1 网络连接问题
确保电脑和被抓包设备(如手机)处于同一局域网内,网络连接正常。可通过 ping 命令测试设备之间的连通性,例如在命令提示符中输入 “ping 手机 IP 地址”(手机 IP 地址可在手机网络设置中查看),若能正常 ping 通,说明网络连接基本正常;若 ping 不通,检查网络设置、路由器等设备。
9.2 代理设置错误
仔细检查 Charles 的代理设置和设备上的代理设置是否正确匹配。确认 Charles 的代理端口与设备设置的代理端口一致,且设备已成功连接到 Charles 代理。在 Charles 的 “Proxy” -> “Proxy Settings” 中查看代理端口,在设备的网络代理设置中核对输入的电脑 IP 地址和端口号。
9.3 证书问题
若抓包 HTTPS 请求失败,检查证书安装和信任情况。在设备上确认 Charles 根证书已正确安装并受信任(安装和信任证书步骤见上文 HTTPS 抓包配置部分)。在 Charles 中,确保已启用 SSL 代理并正确添加了需要抓取的 HTTPS 域名和端口。若证书不受信任,重新安装证书并设置为始终信任;若 SSL 代理设置有误,重新配置 SSL 代理设置。
9.4 Charles 配置问题
检查 Charles 的录制设置、过滤设置等是否影响抓包。若设置了过于严格的过滤规则,可能导致部分请求无法显示。在 “Proxy” -> “Recording Settings” 中检查录制设置,确保没有排除需要抓包的请求;在 “Filter” 栏和 “Focus” 功能中,确认过滤条件没有误过滤掉目标请求。若不确定设置是否正确,可尝试将 Charles 恢复默认设置(在 Charles 安装目录中找到配置文件,备份后删除,重新启动 Charles 会生成默认配置),然后逐步重新配置必要的设置进行抓包测试。
通过上述步骤,你可以完成 Charles 的安装、代理配置、HTTPS 解密及移动端抓包,并使用其常用功能进行网络分析和调试。在实际使用中,建议多进行练习,尝试捕获不同类型应用的请求,分析其请求头、响应内容等,逐步熟悉 Charles 的各项功能,提高网络问题排查和分析的能力。