手机抓包教程(超详细版)
手机抓包,就是让你的手机和电脑“合作”,把手机 App 发送和接收的所有网络数据包(HTTP/HTTPS 请求、DNS 查询等)复制一份到电脑上,然后通过软件进行分析。

核心目的:
- 网络调试: 开发者定位 App 的网络问题。
- 安全分析: 白帽子或安全研究员分析 App 的安全性,寻找漏洞。
- 数据分析: 了解 App 在后台做了什么,请求了哪些接口,传回了什么数据。
- 逆向工程: 分析 App 的通信协议,用于“玩机”或开发第三方工具。
准备工作
在开始之前,请确保你准备好以下几样东西:
- 一台电脑: Windows, macOS, 或 Linux 均可。
- 一部手机: Android 或 iPhone。
- 一根数据线: 用于连接手机和电脑。
- 抓包软件:
- 电脑端: Wireshark (最专业,数据包分析王者) 或 Fiddler (更易用,侧重 HTTP/HTTPS)。
- 手机端 (可选但推荐): Charles (付费,跨平台,功能强大) 或 HTTPCanary (Android 免费,但需 Root)。
第一部分:Android 手机抓包
Android 系统相对开放,抓包方法也更多样,这里介绍三种主流方法:Fiddler (无需 Root)、Charles (无需 Root) 和 Wireshark + VPN (无需 Root)。
使用 Fiddler (无需 Root,推荐新手)
Fiddler 是一个 Windows 下的强大 HTTP 调试代理工具,它的原理是让手机将所有网络请求都通过 Fiddler 软件转发。

步骤:
-
在电脑上安装并配置 Fiddler
- 下载并安装 Fiddler (官网:https://www.telerik.com/fiddler)。
- 打开 Fiddler,点击菜单栏的
Tools->Options。 - 在
Connections选项卡中:- 勾选
Allow remote computers to connect。 - 记下端口号(默认
8888)。 - 点击
OK,Fiddler 会提示你重启,点击Yes。
- 勾选
- 重要: 为了抓取 HTTPS 流量,必须在
HTTPS选项卡中:- 勾选
Decrypt HTTPS traffic。 - 点击
Actions->Export Root Certificate...,将证书导出到桌面。
- 勾选
-
配置手机网络
- 确保手机和电脑连接在同一个 Wi-Fi 网络下。
- 在手机上,进入
设置->WLAN。 - 长按你当前连接的 Wi-Fi 网络,选择
修改网络或网络配置。 - 在
代理或代理服务器选项中,选择手动。 - 代理主机名: 输入你电脑的 IP 地址。
- 代理端口: 输入 Fiddler 中设置的端口号(默认
8888)。 - 如何找到电脑的 IP 地址?
- Windows: 打开命令提示符,输入
ipconfig,找到IPv4 地址。 - macOS: 打开终端,输入
ifconfig | grep "inet " | grep -v 127.0.0.1。
- Windows: 打开命令提示符,输入
- 保存设置。
-
在手机上安装 Fiddler 证书
(图片来源网络,侵删)- 用手机浏览器访问
http://电脑IP地址:8888(http://192.168.1.10:8888)。 - 你会看到一个页面,点击
FiddlerRoot certificate链接下载证书。 - 下载完成后,点击安装证书。
- Android 7.0 及以上系统: 系统会提示“此证书不是由受信任的证书颁发机构颁发的”,你需要先在
设置->安全->加密与凭据->从存储设备安装中,将你之前导出的 Fiddler 根证书(.pfx或.cer文件)导入到手机中,然后再安装下载的证书。 - 如果安装失败,可以尝试将证书重命名为
FiddlerRoot.cer,然后通过文件管理器放到手机的Download目录下,再通过设置->安全->从存储设备安装来安装。
- 用手机浏览器访问
-
开始抓包
- 现在打开 Fiddler,刷新一下,你会看到很多连接。
- 在手机上打开你想要抓包的 App。
- Fiddark 的会话列表中就会出现 App 的网络请求了!点击任意一个请求,在右侧的
Inspectors标签页中可以查看详细的请求和响应内容。
使用 Charles (跨平台,功能强大)
Charles 是一款付费软件,但有免费试用版,它和 Fiddler 原理类似,但界面更现代化,跨平台支持更好。
步骤:
-
在电脑上安装并配置 Charles
- 下载并安装 Charles (官网:https://www.charlesproxy.com/)。
- 打开 Charles,点击菜单栏的
Proxy->Proxy Settings...。 - 在
Proxies选项卡中,确保Enable transparent HTTP proxying是勾选状态,并记下端口号(默认8888)。 - 在
SSL Proxying Settings...中,勾选Enable SSL Proxying,然后点击Add,在Host和Port中填入 和443,这样就能抓取所有 HTTPS 流量。
-
配置手机网络
- 和 Fiddler 一样,将手机的 Wi-Fi 代理设置为电脑的 IP 地址和 Charles 的端口号(
8888)。
- 和 Fiddler 一样,将手机的 Wi-Fi 代理设置为电脑的 IP 地址和 Charles 的端口号(
-
在手机上安装 Charles 证书
- 用手机浏览器访问
chls.pro/ssl。 - 下载并安装证书,过程和 Fiddler 类似,可能需要手动导入根证书(在 Charles 的
Help->SSL Proxying->Save Charles Root Certificate...中导出)。
- 用手机浏览器访问
-
开始抓包
在手机上打开 App,Charles 就能捕获到网络请求了。
使用 Wireshark + VPN (无需 Root,最底层)
这种方法不依赖代理,而是通过 VPN 的方式将所有网络流量导向电脑,再用 Wireshark 进行抓包,这是最接近“真·抓包”的方法。
步骤:
-
在电脑上启动 Wireshark 并设置监听
- 下载并安装 Wireshark (官网:https://www.wireshark.org/)。
- 打开 Wireshark,在网卡列表中选择你连接 Wi-Fi 的那个网卡(通常是
Wi-Fi或以太网)。 - 点击左上角的蓝色鲨鱼鳍图标开始捕获。
-
在手机上安装 VPN App
- 在手机应用商店搜索并下载一个支持“本地代理”或“PC 端代理”的 VPN App。
- HTTPCanary (Android): 免费,功能强大,可以直接在手机上分析抓包结果,也可以设置本地代理。
- Postern (Android): 免费,轻量级,专门用于配置本地代理。
- 以 HTTPCanary 为例:
- 打开 App,同意相关权限。
- 进入
设置->代理->代理模式,选择本地代理。 - 代理地址: 输入你电脑的 IP 地址。
- 代理端口: 输入一个端口号,
1080。 - 保存设置,然后回到主界面,点击右上角的开关,启动 VPN。
- 在手机应用商店搜索并下载一个支持“本地代理”或“PC 端代理”的 VPN App。
-
开始抓包
- 手机的所有网络流量都会通过 HTTPCanary 转发到你电脑的
1080端口。 - 回到电脑上的 Wireshark,此时你应该能看到大量的数据包在滚动,这些就是手机的原始网络流量。
- 过滤数据: 直接看原始数据包很困难,你需要过滤,在 Wireshark 的显示过滤器中输入
http或tls(HTTPS),这样就能只显示 HTTP/HTTPS 流量了。 - 分析数据: 双击一个数据包,可以查看其详细信息,包括源/目标 IP、端口、协议内容等。
- 手机的所有网络流量都会通过 HTTPCanary 转发到你电脑的
第二部分:iOS (iPhone) 手机抓包
iOS 系统封闭性较强,无法像 Android 那样直接设置 Wi-Fi 代理,我们主要使用 Charles 或 Fiddler 的方法,或者 Mac 自带的抓包工具。
使用 Charles (最主流)
步骤:
-
前提条件: 你必须使用一台 Mac 电脑来配合 iPhone,Windows 上的 Charles 无法直接抓取 iOS 的 HTTPS 流量(需要安装额外的证书信任工具,非常麻烦)。
-
在 Mac 上配置 Charles
- 安装并打开 Charles。
- 配置代理和 SSL 代理,和方法二的 Android 部分完全一样。
-
在 iPhone 上配置
- 确保 iPhone 和 Mac 连接在同一个 Wi-Fi 网络下。
- 在 iPhone 上,进入
设置->无线局域网。 - 点击你连接的 Wi-Fi 右边的蓝色信息图标
i。 - 在
HTTP 代理中,选择手动。 - 服务器: 输入 Mac 的 IP 地址。
- 端口: 输入
8888。 - 安装证书:
- 用 Safari 浏览器访问
chls.pro/ssl。 - 下载并安装证书。
- 如果安装失败,请前往
设置->通用->关于本机->证书信任设置,在这里找到Charles Proxy并将其打开信任。
- 用 Safari 浏览器访问
-
开始抓包
在 iPhone 上打开 App,Charles 就能捕获到网络请求了。
使用 Mac 自带的命令行工具 (macOS 用户)
如果你是 Mac 用户,可以使用系统自带的 tcpdump 和 Wireshark 进行抓包。
步骤:
-
在 iPhone 上安装证书
- 你需要一个 CA 证书,可以自己生成,也可以使用 Charles 或其他工具生成的。
- 将
.pem或.cer证书文件通过邮件或其他方式发送到 iPhone,然后打开安装。
-
在 Mac 上抓包
- 将 iPhone 和 Mac 用数据线连接。
- 打开 Mac 的终端。
- 输入以下命令,将 iPhone 的网络流量实时写入到
capture.pcap文件中:sudo tcpdump -i utun0 -s 0 -w capture.pcap
utun0是 iPhone 通过 USB 共享网络时在 Mac 上显示的网卡名称。
- 在 iPhone 上打开你想要抓包的 App。
- 抓包完成后,在终端按
Ctrl + C停止抓包。 - 用 Wireshark 打开生成的
capture.pcap文件进行分析。
常见问题与解决方法
-
抓不到 App 的数据?
- 检查代理设置: 确保手机的 Wi-Fi 代理 IP 和端口完全正确。
- 检查防火墙: 电脑的防火墙可能阻止了连接,尝试暂时关闭防火墙。
- App 使用了非 HTTP 协议: 某些 App 可能使用 gRPC、WebSocket 或其他自定义协议,这些在 Fiddler/Charles 中可能无法直接解析,但数据包依然能被捕获。
- App 使用了系统代理排除列表: 检查手机或电脑的代理设置,是否有域名被排除。
- HTTPS 证书问题: 如果是 HTTPS,确保你已经在手机上正确安装并信任了抓包软件的根证书。
-
抓到的 HTTPS 内容是乱码?
- 这是正常现象! 因为抓包软件中间人攻击了 HTTPS 连接,解密后再用抓包软件自己的证书加密发给你,如果你没有安装或信任抓包软件的根证书,浏览器/App 会提示证书不安全,抓包软件也无法解密,内容自然就是乱码。
- 解决方案: 回去检查证书安装和信任的步骤。
-
手机无法上网或网络变慢?
- 这是代理设置导致的,检查代理 IP 和端口是否正确,或者将手机的 Wi-Fi 代理设置为
无即可恢复。
- 这是代理设置导致的,检查代理 IP 和端口是否正确,或者将手机的 Wi-Fi 代理设置为
| 方法 | 平台 | 优点 | 缺点 | 适用人群 |
|---|---|---|---|---|
| Fiddler | Windows | 免费,功能强大,HTTPS 抓取成熟 | 仅限 Windows,配置稍复杂 | Windows 用户,新手入门 |
| Charles | Win/macOS | 跨平台,界面友好,功能强大 | 付费,iOS 抓包需 Mac | 专业开发者,跨平台用户 |
| Wireshark + VPN | All | 最底层,能抓所有流量,最“真实” | 需要额外 App,分析门槛高 | 安全研究员,网络工程师 |
| Mac 命令行 | macOS | 免费,系统原生,无需额外软件 | 仅限 Mac,命令行操作,复杂 | macOS 开发者,极客 |
对于绝大多数用户,推荐从 Fiddler (Windows) 或 Charles (macOS) 开始,它们提供了最友好的界面和最直接的 HTTP/HTTPS 分析能力,当你需要分析更底层的网络问题时,再考虑使用 Wireshark。
