目录
-
第一部分:核心概念
(图片来源网络,侵删)- 1 什么是抓包?
- 2 为什么需要抓包?
- 3 HTTP vs. HTTPS:抓包的关键区别
- 4 核心术语:代理、中间人、证书
-
第二部分:抓包工具与环境准备
- 1 主力工具:Charles / Fiddler (桌面端)
- 2 开源神器:Wireshark (桌面端)
- 3 移动端抓包必备:Burp Suite (桌面端) + 手机设置
- 4 编程方式:Python +
mitmproxy(自动化)
-
第三部分:实战操作 - 以 Charles 为例
- 1 安装与配置 Charles
- 2 抓取 PC 端浏览器流量
- 3 抓取手机 App 流量
- 4 常见问题与解决 (SSL 握手失败)
-
第四部分:抓包分析与利用
- 1 界面速览:请求、响应、结构
- 2 分析 HTTP 请求/响应
- 3 分析 HTTPS 流量 (解密)
- 4 核心利用技巧:请求拦截与修改
- 5 核心利用技巧:流量重放
-
第五部分:高级应用与安全分析
(图片来源网络,侵删)- 1 Web 安全测试:寻找漏洞
- 2 API 分析与逆向
- 3 性能分析与优化
- 4 协议分析:深入理解网络
-
第六部分:重要注意事项与法律道德
- 1 合法性是第一前提
- 2 道德边界
- 3 保护隐私
第一部分:核心概念
1 什么是抓包?
抓包,顾名思义,就是捕获网络设备之间发送和接收的数据包,想象一下,你在邮局里截获了所有信件,你可以查看信件的地址(目标 IP/URL)、内容(数据载荷)、以及邮戳(请求头信息),抓包就是这样一个过程,只不过我们截获的是数字世界的“信件”。
2 为什么需要抓包?
- 开发者:调试 API 接口,定位前后端数据交互问题。
- 安全研究员/渗透测试工程师:分析 App 或网站的通信逻辑,寻找安全漏洞(如未授权访问、敏感信息泄露)。
- 测试工程师:模拟各种网络请求,测试接口的健壮性和正确性。
- 运维/性能工程师:分析网络延迟、数据传输效率,优化系统性能。
- 学习者:直观地学习 HTTP/HTTPS、TCP/IP 等网络协议的工作原理。
3 HTTP vs. HTTPS:抓包的关键区别
- HTTP (明文传输):所有数据(包括账号密码、Token)都以明文形式在网络中传输,抓包工具可以轻松直接查看所有内容,无需任何额外配置。
- HTTPS (加密传输):数据在传输前经过 SSL/TLS 加密,抓包工具无法直接解密,它会看到一个加密的“乱码”流。这就是为什么抓 HTTPS 流量需要“安装根证书”。
4 核心术语:代理、中间人、证书
- 代理:你的设备(电脑/手机)不直接访问服务器,而是将所有网络请求发送到抓包工具(如 Charles),由抓包工具代为转发给服务器,并将返回的数据再交给你,抓包工具就是这个“中间代理”。
- 中间人:在 HTTPS 抓包中,抓包工具扮演了一个“中间人”的角色,它伪装成服务器,与你设备建立连接;它又伪装成你的设备,与真实服务器建立连接。
- 证书:HTTPS 通信依赖于证书来验证身份,浏览器和操作系统内置了许多受信任的“根证书机构”(CA),为了让你的设备信任抓包工具这个“假服务器”,抓包工具需要生成一个自己的根证书,并手动安装到你的操作系统或设备的“受信任根证书列表”中,这样,抓包工具才能成功解密 HTTPS 流量。
第二部分:抓包工具与环境准备
选择合适的工具至关重要。
1 主力工具:Charles / Fiddler (桌面端)
- Charles:功能强大,界面美观,跨平台(Windows/macOS),在移动端抓包方面尤其出色,付费,但有免费试用版。
- Fiddler:老牌工具,功能全面,完全免费,基于 .NET,Windows 平台首选。
- 推荐:对于初学者和大多数应用,Charles 是首选,因为它配置相对简单。
2 开源神器:Wireshark (桌面端)
- 特点:最强大的网络协议分析器,能抓取几乎所有网络协议的数据包,不仅仅是 HTTP/HTTPS。
- 用途:当你需要分析底层的 TCP/IP 握手、DNS 查询、WebSocket 协议细节时,Wireshark 是不二之选,但它不提供像 Charles 那样的“一键修改/重放”功能。
- 定位:更偏向于深度协议分析,而非简单的 API 测试。
3 移动端抓包必备:Burp Suite (桌面端) + 手机设置
- Burp Suite:Web 应用渗透测试的“瑞士军刀”,其免费的 Community 版本就足够强大。
- 特点:强大的拦截、修改、重放、扫描功能,在 Web 安全领域是行业标准。
- 用途:主要用于 Web 安全测试,但也常用于抓取和分析 App 的 HTTP/HTTPS 流量。
4 编程方式:Python + mitmproxy (自动化)
- mitmproxy:一个命令行的中间人代理工具,功能强大,且可以通过 Python API 进行编程控制。
- 用途:当你需要自动化地抓取、修改、甚至响应海量网络请求时(爬取一个动态加载的 App),
mitmproxy是最佳选择。
第三部分:实战操作 - 以 Charles 为例
我们以最常用的 Charles 为例,讲解完整的抓包流程。

1 安装与配置 Charles
- 下载安装:从官网下载并安装 Charles。
- 开启代理:
- Charles 菜单:
Proxy->Proxy Settings... - 勾选
Enable transparent HTTP proxying。 - 端口默认为
8888。
- Charles 菜单:
- 配置 SSL 代理(抓 HTTPS 的关键):
- Charles 菜单:
Proxy->SSL Proxying Settings... - 勾选
Enable SSL Proxying。 - 在
Include列表中,添加 ,表示抓取所有端口的 HTTPS 流量,或者,为了更精确,可以只添加你关心的域名和端口,如*:443。
- Charles 菜单:
- 安装 Charles 根证书:
- Charles 菜单:
Help->SSL Proxying->Install Charles Root Certificate。 - 根据你的操作系统提示,将证书安装到“受信任的根证书颁发机构”中,这一步是信任抓包工具的关键。
- Charles 菜单:
2 抓取 PC 端浏览器流量
- 设置浏览器代理:
- 以 Chrome 为例,可以安装
SwitchyOmega插件。 - 新建一个代理情景,设置代理服务器为
0.0.1,端口为8888。 - 启用该情景。
- 以 Chrome 为例,可以安装
- 访问网站:在浏览器中打开任意网站(如
http://httpbin.org/get或https://www.baidu.com)。 - 查看抓包结果:回到 Charles 主界面,你应该能看到对应的请求记录,HTTP 的可以直接看,HTTPS 的也能正常解密查看。
3 抓取手机 App 流量
- 确保电脑和手机在同一 Wi-Fi 下。
- 获取电脑 IP 地址:在电脑命令行输入
ipconfig(Windows) 或ifconfig(macOS),找到你的 IP 地址(如168.1.100)。 - 设置手机 Wi-Fi 代理:
