【网络】使用 Mac 和 Wireshark 进行 iOS 网络抓包

1,744 阅读2分钟

一、背景

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 的代理服务。

这个方案还没有完全走通,后面再验证一下。

参考:docs.telerik.com/fiddler-eve…

三、失败的方案

尝试了下面的一些方案,都没有成功,还耗费了大量时间。

(1)通过命令来实现虚拟网卡

【iOS Wireshark抓包】juejin.cn/post/684490…

【macOS下抓iOS端TCP包的优雅方案】 www.dllhook.com/post/141.ht…

(2)升级macOS 版本也没解决

如果大家有其他成功的经验,也可以分享一下。