首页 > 移动开发 > IOS > 如何在苹果手机上面进行抓包?iOS代理抓包,数据流抓包
事情起因并不复杂,一个 iOS 版本更新后,线上接口偶发失败,日志里只有模糊的错误码。代码回滚、重试都没法稳定复现,最后只能回到最原始的方式——看真实请求。
问题是,这个 App 已经上线,既不能加日志,也不能改网络层。
剩下的选择只有在真机上抓包。
刚开始我也犯过一个错误,先找工具,再想怎么用。
后来发现更合理的顺序应该是反过来的——
先判断网络路径,再决定抓哪一层。
在苹果手机上,抓包需求大致会落在三个层面:
不同层面,用到的工具并不一样。
在接口联调、参数校验这类场景里,HTTPS 代理抓包依然是首选。
Charles、Fiddler、Proxyman 都是这一类工具。
抓包大师的代理模式,本质上也是走系统代理,只是把证书和配置步骤做了整合。
我这次是在 Windows 上操作,流程大致如下:
第一次使用时,软件会引导安装描述文件和证书。
证书安装完成后,只需要在 iOS 的 Wi-Fi 设置中,把代理模式切换为手动,填入软件提示的地址和端口。
整个过程和 Charles 的原理一致,只是省掉了手动导出证书的步骤。
很多时候开始抓包之后就出现问题
比如这次遇到的情况是:
这种情况,基本可以判断的是 App 没走系统代理。
如果请求本身绕过了系统代理,再怎么检查证书、端口,结果都不会变。
我通常会直接换思路,去看 设备层的数据流。
在抓包大师里,选择数据流抓包模式:
开始抓取后,可以看到设备真实发出的 TCP、UDP 流量。
如果只关心某个 App,可以在开始前选择目标应用,过滤掉系统噪音。
这一层不关心 HTTP 结构,只回答一个问题:
这个 App 到底有没有在联网。
在这次问题里,我实际用的是一套组合:
没有哪一步是多余的。
当我重新在代理里捕获到部分请求后,下一步并不是马上改代码,而是先用拦截器做验证。
在抓包大师的代理界面右侧,可以打开拦截器,通过 JS 修改请求或响应。
比如:
这种方式的好处是
成本极低,几分钟就能验证一个假设。

回过头来看,这次问题并不复杂。
复杂的是,一开始把抓包当成了一个动作,而不是一个过程。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70047460/viewspace-3107940/ ,如需转载,请注明出处,否则将追究法律责任。