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 小时前
5. 从零开始搭建一个 AI Agent —— 人机协作与中断恢复
前端·人工智能·架构
宠友信息1 小时前
多端即时通讯源码技术实践,Redis路由、MySQL持久化与Socket接入
spring boot·websocket·mysql·uni-app
apihz1 小时前
台风实时与历史详情查询免费 API 接口完整教程
android·开发语言·tcp/ip·dubbo·台风·天气预报
品尚公益团队2 小时前
C#在asp.net网页开发中的带cookie登录实现
前端·c#·asp.net
小羊Yveesss2 小时前
2026年如何自己搭建一个外贸网页?单页验证和完整网站的区别
微信小程序·小程序·开源
浪客川2 小时前
AOSP源码隐藏状态栏
android·aosp
weishuangyun1232 小时前
怎么开发自己的小程序?2026 三种主流方式实测对比
小程序
没有了遇见2 小时前
AI Agent 是什么?—— 一文理解 LLM、Memory、Skills、Tools、MCP、Workflow,Context
android·前端·程序员
后台开发者Ethan3 小时前
setState组件更新
前端·javascript·react
御坂嘀喵3 小时前
Speed Tools:一套低侵入的 Android 插件化 + 动态换肤 + 字体切换框架
android·gitee