iOS HTTPS 抓包踩坑记:几种方案尝试与替代工具记录

iOS HTTPS 抓包踩坑记:几种方案尝试与替代工具记录

最近负责一个 iOS App 的调试任务,遇到了 HTTPS 接口抓包难题,顺手做个记录,顺带分享一些试过的工具和方案。

背景

这个 App 启用了 HTTPS 双向认证和证书 pinning,很多传统的抓包方法都失效。起初只是想看看接口返回结构,但发现普通的代理类工具根本看不到请求内容。项目紧急,只能开始四处试工具。

尝试的工具/方案

1. Charles

大家都熟,用了很多年。但这次基本抓不到东西,主要原因是:

  • App 拒绝代理连接
  • 系统层面有弹窗/信任证书问题
  • 部分请求是走私有栈,直接绕过系统代理了

2. Proxyman

UI 比 Charles 好很多,对规则支持也不错,但在 iOS 15+ 上和 Charles 一样,抓包成功率不高。对有 pinning 的应用基本无解。

3. Wireshark

更偏向协议分析工具,不适合实际项目中做应用层调试。偶尔用来查看端口是否真的建立连接。

4. 其他工具

在群里有人提到一个叫 Sniffmaster 的工具。我起初是抱着试一试的心态用的,结果还真能看到 HTTPS 包内容,甚至带 response body。

它的工作机制看起来不是基于代理,而是更底层一点。好处是绕开了 pinning 和描述文件限制,对一些安全防护重的 App 比较友好。

实际测试下来,还能用 JS 写拦截脚本对请求和响应做一些定制化修改,比如模拟服务器故障、响应内容异常等场景,用来测前端兜底逻辑还挺方便。


一个小例子

我们调了一个转账接口,后端返回是这样的:

复制代码
json复制编辑{
  "code": "0000",
  "message": "Success",
  "balance": 18423.67
}

用脚本把 balance 改成了负数 + code 改成异常码,重新走了一遍流程,前端果然弹出了兜底页面,顺利验证完毕。


总结

这次的抓包过程还是有不少坑,感触最深的是:

  • 模拟器能抓不代表真机能抓
  • HTTPS + Pinning 是现在很多 App 的标配,代理类工具逐渐没那么万能了
  • 工具没有最好,只有适合自己项目的

建议配置两种类型工具备用:

代理型(如 Charles、Proxyman)用于调试内部测试包

非代理型(如 Sniffmaster)用于应对上架版或安全策略更强的场景

以上是我这次的一点踩坑记录,希望对同样在调 HTTPS 的开发者有帮助。


如果你也有好用的抓包方案或脚本工具,欢迎评论区交流。

相关推荐
派葛穆1 小时前
ESP32开发-作为TCP服务端接收数据
网络协议·tcp/ip
Hello.Reader2 小时前
NGINX 的 ngx_http_auth_jwt_module模块
运维·nginx·http
非自律懒癌患者2 小时前
相同IP和端口的服务器ssh连接时出现异常
服务器·tcp/ip·ssh
北海有初拥4 小时前
【Linux网络#3】:Socket编程应用层UDP
linux·网络·udp
✿ ༺ ོIT技术༻4 小时前
Linux:深入理解数据链路层
linux·网络·网络协议
vortex55 小时前
Socat 用法详解:网络安全中的瑞士军刀
linux·安全·web安全·网络安全
满怀101514 小时前
【ICMP协议深度解析】从网络诊断到安全实践
网络·tcp/ip·安全·icmp·网络诊断
林十一npc14 小时前
Fiddler抓取APP端,HTTPS报错全解析及解决方案(一篇解决常见问题)
android·前端·网络协议·https·fiddler·接口测试
盛满暮色 风止何安14 小时前
OSPF的路由
运维·服务器·网络·网络协议·网络安全·华为·智能路由器