Quiet
  • 主页
  • 归档
  • 分类
  • 标签
  • 链接
  • 关于我

bajiu

  • 主页
  • 归档
  • 分类
  • 标签
  • 链接
  • 关于我
Quiet主题

Charles 从入门到入

bajiu
工具文档

2021-04-08 11:57:00

Charles 简介

Charles 是在 PC 端常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。

Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。

Charles 主要的功能包括(下载地址):

  • 截取 Http 和 Https 网络封包。
  • 支持重发网络请求,方便后端调试。
  • 支持修改网络请求参数。
  • 支持网络请求的截获并动态修改。
  • 支持模拟慢速网络。

Charles 使用教程

通过 Charles 进行 PC 端抓包

Charles 会自动配置浏览器和工具的代理设置,所以说打开工具直接就已经是抓包状态了。只需要保证一下几点即可:

  1. 确保 Charles 处于 Start Recording 状态。
  2. 勾选 Proxy | Windows Proxy 和 Proxy | Mozilla FireFox Proxy。

通过 Charles 进行移动端抓包

手机抓包的原理,和 PC 类似,手机通过把网络委托给 Charles 进行代理与服务端进行对话。具体步骤如下:

  1. 使手机和电脑在一个局域网内,不一定非要是一个 IP 段,只要是在同一个路由器下即可。
  2. 电脑端配置:
    • 关掉电脑端的防火墙(这点很重要)
    • 打开 Charles 的代理功能:通过主菜单打开 Proxy | Proxy Settings 弹窗,填入代理端口(端口默认为 8888 ,不用修改),勾选 Enable transparent HTTP proxying。
    • 如果不需要抓取电脑上的请求,可以取消勾选 Proxy | Windows Proxy 和 Proxy | Mozilla FireFox Proxy。
  3. 手机端配置:
    • 通过 Charles 的主菜单 Help | Local IP Address 或者通过命令行工具输入 ipconfig/ifconfig 查看本机的 IP 地址
    • 设置代理:打开手机端的 WIFI 代理设置,输入电脑 IP 和 Charles 的代理端口。
  4. 设置好之后,我们打开手机上的任意需要网络请求的程序,就可以看到 Charles 弹出手机请求连接的确认菜单(只有首次弹出),点击 Allow 即可完成设置。

通过 Charles 进行 HTTPS 抓包

HTTPS 的抓包需要在 HTTP 抓包基础上再进行设置。需要完成一下步骤:

  1. 完成 HTTP 抓包配置
  2. 电脑端安装 Charles 证书:通过 Charles 的主菜单 Help | SSL Proxying | Install Charles Root Certificate 安装证书
  3. 设置 SSL 代理:通过主菜单打开** Proxy | SSL Proxy Settings** 弹窗,勾选 Enable SSL proxying
  4. 移动端安装 Charles 证书: 通过 Charles 的主菜单 Help | SSL Proxying | Install Charles Root Certificate on a Mobile Device or Remote Browser 安装证书
  5. 设置好之后,我们打开手机上的任意需要网络请求的程序,就可以看到 Charles 弹出手机请求连接的确认菜单(只有首次弹出),点击 Allow 即可完成设置。

过滤网络请求

通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:

  • 在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:https://www.ruan89.cn/ , 那么只需要在 Filter 栏中填入 survey 即可
  • 在 Charles 的菜单栏选择 Proxy”–>“Recording Settings ,然后选择 Include 栏,选择 add 一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。
  • 在想过滤的网络请求上右击,选择 Focus,之后在 Filter 一栏勾选上 Focussed 一项,这种方式可以临时性的,快速地过滤出一些没有通过关键字的一类网络请求。

通常情况下,我们使用第一种方法做一些临时性的封包过滤,使用第二种方法做一些经常性的封包过滤。

修改网络请求内容

有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键,选择 Compose,即可创建一个可编辑的网络请求

我们可以修改该请求的任何信息,包括 URL 地址、端口、参数等,之后点击 Execute 即可发送该修改后的网络请求。Charles 支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便。

修改服务器返回内容

Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:

  • Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件

    在 Charles 的菜单中,选择 “Tools” –> “Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面

  • Rewrite 功能适合对网络请求进行一些正则替换
  • Breakpoints 功能适合做一些临时性的修改

    使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时

模拟慢速网络

  • 在 Charles 的菜单上,选择 Proxy | Throttle Setting 项,在之后弹出的对话框中,我们可以勾选上 Enable Throttling,并且可以设置 Throttle Preset 的类型
  • 如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的 Only for selected hosts 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可
上一篇

HTTP教程

下一篇

Electron App 在 MacOS 下 申请摄像头及麦克风权限

©2024 By bajiu.