详解如何实现移动端抓包网络请求

5,203 阅读2分钟

最近在做一个项目,需要抓包移动端的网络请求。研究了一下,最终决定用 Charles,比较方便,只需要将手机代理到电脑就可以。下文将以我手头的设备为例,一台 macbook 和一台小米手机,我们来实现在电脑上抓包移动端的网络请求。

工具

长这样:

Screen Shot 2023-03-10 at 09.02.44.png

Charles是一个HTTP代理/HTTP监视器/反向代理,使开发人员能够查看其机器和互联网之间的所有HTTP和SSL/HTTPS流量。这包括请求、响应和HTTP标头(包含cookie和缓存信息)。

charles 下载地址

查看网络请求

首先确保电脑手机连接同一局域网,然后我们将手机代理到电脑上:

查看电脑的 IP 地址 image.png

打开手机当前 WLAN 的设置,代理选择手动,主机名填写电脑的 IP,端口号填写 Charles 默认端口号 8888,当然你也可以手动设置(Proxy -> Proxy Settings)

image.png

接下来就可以在 charles 中看到手机上的网络请求了。

其他配置

网址代理

想要进行网址代理也很简单,点击 Tools -> Map Remote。

设置 Map From 和 Map To,这样就可以通过 host/ajax.html 访问到 host/dom.html 了。

image.png

HTTPS

由于 HTTPS 安全性更高,用 Charles 抓包时会出现乱码。 image.png

解决办法:
首先设置 SSL,Proxy -> SSL Proxying Setting,添加:*:443

Screen Shot 2023-03-10 at 00.33.34.png

然后点击 Help -> SSL Proxying,会有安装 Charles 证书的帮助,这里以小米手机为例,选择 Mobile Device。

根据 Charles 弹出的提示,用手机访问 chls.pro/ssl 下载证书。

iShot_2023-03-17_07.34.51.png

小米(MIUI 13.0.7)证书安装方法:安全 -> 更多安全设置 -> 加密与凭据 -> 安装证书 -> CA 证书,然后选择刚刚下载好的 Charles 证书安装,就可以正常抓包 HTTPS 的请求数据了。