“抓包”通常指的是捕获网络通信中的数据包,是一种了解应用程序与服务器或其他服务之间的交互的方法,常用于调试网络请求、排查问题以及性能分析等。
常见的抓包工具有 Wireshark 和 Charles,这里我们使用 Charles 来演示具体的抓包过程。
1. Charles 的安装与配置
需要注意的是,Charles 是基于 Java 开发的,它的运行同样依赖于 jdk 环境,因此在进行下面的安装教程之前,要在电脑上先安装 jdk。
1.1 安装教程
-
访问 www.charlesproxy.com/download 下载对应系统的安装包。
-
以 windows 为例,打开名为
charles-proxy-4.6.2-win64.msi
的文件,点击 Next。 -
先打勾安装窗口左下方的
I accept ...
,然后点击 Next。 -
安装路径可以自定义或选择默认的,确定安装路径后,点击 Next。
-
直到 Install 安装完成后,点击 Finish 退出安装向导。
-
找到并打开 Charles,点击 Help -> Register Charles 后输入以下信息完成注册。
Charles-Help-Register Charles:
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
1.2 常规配置
-
Charles 的工作原理是通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。因为我们需要勾选
Windows-Proxy
,然后测试是否代理到本地。 -
安装 ssl 证书。
2. Charles 抓包过程
curl
是常用的命令行工具,用来请求 Web 服务器,它的命令行参数多达几十种。
在数据抓包前,我们需要先启动 Charles,然后使用 curl
复制某个请求的代码,通常是从浏览器的开发者工具中获取。以下是一般步骤:
-
打开浏览器开发者工具:
- 在大多数现代浏览器中,你可以按下
F12
或右键点击页面并选择 "检查"来打开开发者工具。
- 在大多数现代浏览器中,你可以按下
-
导航到 Network 标签页:
- 在开发者工具中,切换到 "Network" 标签页。这里记录了页面加载期间的网络请求。
-
触发你关注的请求:
- 在浏览器中执行你关注的操作,触发相应的请求。例如点击按钮、刷新页面等。
-
查找请求:
- 在 "Network" 标签页中,找到你想要复制的请求。可以使用筛选器或手动查看请求列表。
-
右键点击请求:
- 在请求列表中,右键点击你关注的请求,然后选择适用于 Unix/Linux 系统的
copy as cURL(bash)
或适用于 Windows 系统的copy as cURL(cmd)
。
- 在请求列表中,右键点击你关注的请求,然后选择适用于 Unix/Linux 系统的
-
粘贴
curl
命令:- 回到终端或命令行窗口,粘贴刚刚复制的内容执行即可。通常,这将是一个以
curl
开头的命令,类似于:
- 回到终端或命令行窗口,粘贴刚刚复制的内容执行即可。通常,这将是一个以
curl 'https://example.com/api' -H 'User-Agent: Mozilla/5.0' ...
- 查看 Charles 面板获取抓包详情
3. Charles 面板功能简易讲解
3.1 面板解释
-
Charles 提供两种查看封包的视图 Structure 和 Sequence。
(1)Structure 视图呈树状结构显示,它将网络请求按访问的域名分类。
(2)Sequence 视图呈水平结构显示,它将网络请求按访问的时间排序。
-
快捷工具栏功能说明
3.2 字段解释
-
Overview:查看这次请求的详细内容,例如耗时详细列出了请求开始时间、结束时间,响应开始时间、结束时间,总耗时、DNS 耗时、网络延时等。
参数解释(主要是状态响应,请求,协议,连接,时间,字节数)
-
Contents:主要显示具体的数据报文。
-
Summary:查看发送数据的一些简要信息(主机,状态码,数据的类型,header 和 body 大小,加载时间,总时间)。
-
Chart:Summary 中简要信息以图表形式展示。
-
Notes:备注,方便记录一些接口的信息,在 Overview 视图上可以看到备注信息。
参考资源: