一、背景
1 ios 端没抓包到对应的请求
想为一个IOS app抓包排查一个网络请求的问题,怀疑该请求为 http 协议,但是在 IOS 端装了stream、蜻蜓抓包、HTTP Catcher 等较流行的 http 抓包工具,其他http都抓包到了,然后我关注的请求没有抓到对应的记录。
所以,决定通过 mac 为 IOS 抓包。
2 系统说明
mac: macOS Sequoia 15.2
ios: iphone15 18.1.1
二、便捷方案
参考网上博客的方案摸索了半天,没能实现 mac 为 IOS 抓包。最终自己摸索出下面的方案,非常简单。
1.准备一根数据线,连接 ios 和 mac。
2.在mac【系统设置】- 【互联网共享】里勾选上 【iPhone USB】
3.在mac 终端上通过命令 ifconfig -l找到我们新增的虚拟网卡,我本机上是 bridge100,其他电脑可能有差异。
4.mac上安装 wireshark,再安装ChmodBDF.pkg
5.打开wireshark,找到新增的bridge100,双击进入网络请求抓包页面
6.搜索http
非常nice,找到了 http 请求的记录。
不过,还是有部分疑问:为何 IOS 端装了stream、蜻蜓抓包、HTTP Catcher 等抓包工具却没有抓到该请求的记录?可能是因为这些抓包工具没法代理我关注的请求,那些请求是C写的,比较底层,估计没法代理也就没法抓包。这个留着以后再探索吧。
如果是 https 请求怎么抓包呢?
上面的请求是 http 协议的,也可以看 tcp 协议的,但如果是 https 协议的怎么抓包看明文数据呢?
如果是https,可以使用 Fiddler 来实现,先给 ios 安装 Fiddler 的网络证书。然后 mac 和 ios 连接同一个局域网,并以 mac 作为 ios 的代理服务。
这个方案还没有完全走通,后面再验证一下。
三、失败的方案
尝试了下面的一些方案,都没有成功,还耗费了大量时间。
(1)通过命令来实现虚拟网卡
【iOS Wireshark抓包】juejin.cn/post/684490…
【macOS下抓iOS端TCP包的优雅方案】 www.dllhook.com/post/141.ht…
(2)升级macOS 版本也没解决
如果大家有其他成功的经验,也可以分享一下。