Charles抓包
Charles 是 Mac 上常用的抓包工具。
安装tips:
- 官网下载最新版本
- 本地安装-》打开软件-》窗口工具条 Help -》显示 Register Charles
- 通过在线破解工具下载对应版本的 charles.jar 文件
- 访达-》应用程序-》Charles右键-》显示包内容-》Contents-》Java,替换此目录下的 charles.jar 文件
- 关闭 Charles,重新打开,窗口工具条 Help -》显示 Registered to <填写的注册人名>填写的注册人名>
- 窗口工具条 Proxy-》macOS Proxy,开启权限
注意要严格按上面的顺序执行操作。(2021.5.25,作者更新了,只需要输入在线生成的register码即可。)
代理 Simulator 中的 https 请求
开发RN项目像代理请求到本地mock文件,Tools-》Map Local-》Enable Map Local-》Add,添加 Location(稍微有点烦,一般填写协议、host、path即可)。
配置完发现http请求可以正常代理,https 的请求就是不行。有人提示移动端测试时针对 https 请求,需要在手机端安装证书。谷歌找到一篇文章,跟着操作成功了。
How to Set Up Charles Proxy for an iOS Simulator
记录下:
- 【Charles】菜单栏:Help -》SSL Proxying -》Install Charles Root Certificate in iOS Simulators.
- 【Simulator】菜单栏:Device -》Restart
- 【Charles】菜单栏:Proxy -》macOS Proxy
- 【Charles】菜单栏:Proxy -》SSL Proxying Settings -》SSL Proxying 栏里勾选 Enable SSL Proxying -》Include 表格点 Add,在 Host 输入泛域名如 *.example.com
- 重启 Charles
- 确保 Charles 里点了 Start Recording,如果还是有问题,排查下 simulator 的证书是否最新
localhost 抓包
Some systems are hard coded to not use proxies for localhost traffic.官方文档说一些系统硬编码默认对localhost不使用proxy
因此 localhost 下的请求不会出现在 Charles 里,macOS上的解决方法如下:
sudo vi /etc/hosts
在 hosts 文件加上: 127.0.0.1 localhost.charlesproxy.com
本地项目浏览地址 localhost:3000 改成 localhost.charlesproxy.com:3000 即可
抓取 https 请求
Charles 抓取 https 请求时默认显示 unknown。解决:
- 【Charles】菜单栏:Help -》SSL Proxying-》Install Charles Root Certificate
- 双击“Charles Proxy CA…” -》信任 -》使用此证书时:始终信任
- 【Charles】菜单栏:Proxy -》macOS Proxy(确保勾选),Proxy Settings弹窗里采用默认设置
- 【Charles】菜单栏:Proxy -》SSL Proxying Settings -》SSL Proxying 栏里勾选 Enable SSL Proxying -》Include 表格点 Add -》.(添加所有域名)-》点 OK
iOS app https 抓包
- 【Charles】菜单栏:Help -》Local IP Address
- 【iPhone】设置-》无线局域网-》选择与电脑相同的 wifi,点问号图标-》拉到下方,点击“配置代理”-》手动-》输入 ip,端口写 8888
- 【Charles】菜单栏:Help -》SSL Proxying-》Install Charles Root Certificate on a Mobile Device or Remote Browser
- Charles 弹出框里点 ok
- 【iPhone】浏览器地址栏输入 chls.pro/ssl -》完成证书下载
- 【iPhone】通用-》VPN与设备管理-》点击刚下载的配置描述文件-》安装-》回到“关于本机”-》证书信任设置-》在“针对根证书启用完全信任”里,开启信任
完成上述操作,无需重启Charles,已经可以抓取https请求了。
抓包结束后,需要在这个 wifi 里关闭代理配置。