最近在做一个项目,需要抓包移动端的网络请求。研究了一下,最终决定用 Charles,比较方便,只需要将手机代理到电脑就可以。下文将以我手头的设备为例,一台 macbook 和一台小米手机,我们来实现在电脑上抓包移动端的网络请求。
工具
长这样:
Charles是一个HTTP代理/HTTP监视器/反向代理,使开发人员能够查看其机器和互联网之间的所有HTTP和SSL/HTTPS流量。这包括请求、响应和HTTP标头(包含cookie和缓存信息)。
查看网络请求
首先确保电脑手机连接同一局域网,然后我们将手机代理到电脑上:
查看电脑的 IP 地址
打开手机当前 WLAN 的设置,代理选择手动,主机名填写电脑的 IP,端口号填写 Charles 默认端口号 8888,当然你也可以手动设置(Proxy -> Proxy Settings)
接下来就可以在 charles 中看到手机上的网络请求了。
其他配置
网址代理
想要进行网址代理也很简单,点击 Tools -> Map Remote。
设置 Map From 和 Map To,这样就可以通过 host/ajax.html 访问到 host/dom.html 了。
HTTPS
由于 HTTPS 安全性更高,用 Charles 抓包时会出现乱码。
解决办法:
首先设置 SSL,Proxy -> SSL Proxying Setting,添加:*:443
然后点击 Help -> SSL Proxying,会有安装 Charles 证书的帮助,这里以小米手机为例,选择 Mobile Device。
根据 Charles 弹出的提示,用手机访问 chls.pro/ssl 下载证书。
小米(MIUI 13.0.7)证书安装方法:安全 -> 更多安全设置 -> 加密与凭据 -> 安装证书 -> CA 证书,然后选择刚刚下载好的 Charles 证书安装,就可以正常抓包 HTTPS 的请求数据了。