WebKit 抓包,WKWebView 请求的完整数据获取方法

在 iOS 调试中,有一类请求比较特殊,页面是 H5,运行在 App 内,使用 WKWebView 加载,这种请求表面上看和普通 App 请求一样,但抓包时会出现一些情况,比如:

  1. 有时可以直接看到
  2. 有时只能看到一部分
  3. 有时代理抓不到

关键是WebKit 请求走的是哪一方面


一、先确认请求是不是 WebKit 发出的

打开 App 中的某个页面,例如:

  • 活动页
  • 登录页(H5)
  • 内嵌 Web 页面

然后做一个判断,页面是否可以在 Safari 中打开同样 URL


验证方法

  1. 在页面中复制 URL
  2. 粘贴到 Safari 打开
  3. 对比页面行为

如果内容一致,可以认为请求来源是 WebKit(WKWebView)


二、直接用 Safari Web Inspector 抓

对于 WebKit 请求,第一步不一定是代理抓包。

可以先用 Safari 自带工具。


开启 Web Inspector

在 iPhone 上:

  1. 设置 → Safari
  2. 打开"高级"
  3. 开启 Web 检查器(Web Inspector)

在 Mac 上:

  1. 打开 Safari
  2. 菜单栏 → 开发
  3. 连接设备

抓取请求

  1. 打开 App 中的 H5 页面
  2. 在 Mac Safari 的"开发"菜单中选择对应页面
  3. 打开 Network 面板

观察结果

可以直接看到:

  • XHR 请求
  • Fetch 请求
  • JS 执行情况

这些数据来自 WebKit 内部。


三、当 Web Inspector 不够用

Web Inspector 有两个限制:

  • 无法抓到所有底层请求
  • 不支持修改请求

如果需要:

  • 查看完整 Header
  • 分析 HTTPS
  • 修改请求

需要使用代理抓包。


四、用代理抓 WebKit 请求

准备工具:

  • Charles
  • Proxyman
  • Sniffmaster

配置代理

步骤如下:

  1. 启动代理工具
  2. 获取端口(例如 8888)
  3. iPhone 与电脑同一 Wi-Fi
  4. 设置 HTTP 代理

--


安装证书

在 iPhone 上:

  1. 下载证书
  2. 安装描述文件
  3. 在"证书信任设置"中开启信任

触发请求

重新打开 WebView 页面。观察变化

在代理工具中可以看到:

  • 页面加载请求
  • JS 发起的接口请求

如果页面来自 WebKit,这些请求会正常经过代理。


五、一个容易混淆的情况

在某些页面中:

  • 主页面请求可以抓到
  • 部分接口请求抓不到

这时可以观察 URL:

  • 如果接口域名不同
  • 或使用了特殊协议

可能绕过了代理。


六、可以用数据线直连设备进行抓包

当代理抓不到部分请求时,可以使用 SniffMaster(抓包大师)。


操作步骤

  1. USB 连接 iPhone
  2. 保持设备解锁
  3. 点击信任电脑
  4. 启动 SniffMaster
  5. 选择设备
  6. 安装描述文件
  7. 进入 数据流抓包 / HTTPS 暴力抓包模式
  8. 点击开始

观察结果

在这里可以看到:

  • WebView 发起的所有网络连接
  • 包括未经过代理的请求

七、只抓当前 WebView 的流量

设备级抓包会包含:

  • 系统请求
  • 其他 App 请求

可以通过筛选减少干扰。


筛选方式

  1. 点击 选择 App
  2. 勾选当前 App
  3. 再触发页面加载

再进一步筛选

可以根据域名过滤:

复制代码
api.example.com

快速定位接口请求。


修改 WebKit 请求的方式

如果需要修改请求,例如:

  • 修改接口参数
  • 模拟返回数据

需要回到代理抓包。


使用代理拦截

在 Charles 或 Proxyman 或 Sniffmaster:

  1. 开启 Breakpoints 或 打开拦截器
  2. 刷新页面
  3. 拦截请求
  4. 修改参数
  5. 继续发送

HTTPS 数据如果不可见

如果在代理中:

  • 请求存在
  • 但 Response 看不到

可以做两个测试:

验证步骤

  1. 用 Safari 打开同一 URL
  2. 查看是否能解密

判断结果

  • Safari 也解不开 → 证书问题
  • Safari 正常 → 页面内存在校验

此时可以用 SniffMaster 查看数据结构。

参考链接:https://www.sniffmaster.net/blog/140

相关推荐
智能直播1 小时前
RK3518:1.5G 内存 + 8G 存储,如何跑起硬件编解码、Web、AI 识别、绿幕特效
前端·人工智能·5g
掘金酱2 小时前
【10.24 特别活动】AI 时代,程序员的新饭碗在哪里?
前端·人工智能·后端
excel2 小时前
多进程环境下使用 PM2 部署 Socket.IO:需要注意什么
前端
IT_陈寒3 小时前
Redis的原子性竟然失效了?记一次分布式锁翻车实录
前端·人工智能·后端
老李IT笔记3 小时前
关掉设备上的 AI 扩展:两个键各管一层,配错了等于没配
人工智能·ios·智能手机
2501_915921434 小时前
iOS应用耗电测试:使用Energy Log、Keymob和Instruments进行性能监控与能源消耗分析
android·ios·小程序·https·uni-app·iphone·webview
时间的情敌4 小时前
《回顾 2018 前端:Vue2 成熟期,Webpack4 发布,PWA 大火》
前端
蒲公英内测分发4 小时前
热成像仪交付客户后,Android 配套 App 不上架,怎么持续下载安装和更新
android·机器人·项目管理·智能家居·智能硬件
脚踏实地,坚持不懈!4 小时前
Android 常见性能问题总结
android
Java后端的Ai之路5 小时前
前端技术Vue-09-webpack-vuejs-实战
前端·vue.js·webpack