WkWebView 请求拦截
- karosLi/KKJSBridge: 一站式解决 WKWebView 支持离线包,Ajax/Fetch 请求,表单请求和 Cookie 同步的问题 (基于 Ajax Hook,Fetch Hook 和 Cookie Hook)
- zhengmiaokai/MKWebResources: 通过 "WKURLSchemeHandler + AjaxHook",实现WKWebview的资源拦截,解决了Ajax/Fetch请求的Cookie与HTTPBody信息同步问题,为H5秒开项目提供基础支持。
这里面的方案2还是可以考虑一下,就是 js 注入,为了解决声明周期的问题,我可以在 OC 侧进行这段 JS 的注入。
开源项目
搜索 WKURLSchemeHandler
- karosLi/KKJSBridge: 一站式解决 WKWebView 支持离线包,Ajax/Fetch 请求,表单请求和 Cookie 同步的问题 (基于 Ajax Hook,Fetch Hook 和 Cookie Hook)
- zhengmiaokai/MKWebResources: 通过 "WKURLSchemeHandler + AjaxHook",实现WKWebview的资源拦截,解决了Ajax/Fetch请求的Cookie与HTTPBody信息同步问题,为H5秒开项目提供基础支持。
- hite/URLSchemeHandlerTest: what can I do with WKURLSchemeHandler
- xjh093/JHURLSchemeHandler: WKURLSchemeHandler Demo
网络资源
- wkwebview 拦截请求 - Google 搜索
- 如何接管WKWebView的网络请求?众所周知,WKWebView是一个独立进程,对于开发者来说,WKWebView相当 - 掘金
- NSURLProtocol
- 拦截到Post请求时,由于考虑到IPC通讯效率问题,WebKit开发者将将body进行了丢弃操作,所以会产生丢body的问题。
- 解决方法:注入js脚本,Hook-XMLHttpRequest/Fetch请求,将 body 传回 App 端,综合实现拦截
- WKURLSchemeHandler
- 苹果提供给开发者拦截自定义的URLScheme协议
- 绝大多数Post请求都是不会丢body的
- 对于 blob,表单等类型的请求也会有丢body的情况
- 还是需要注入 js 来实现
- WKURLSchemeHandler拦截时机靠前,会在浏览器读取缓存之前就进行拦截
- 默认禁止拦截 WS、WSS、File、FTP、HTTP、HTTPS,需要
Hook +[WKWebView handlesURLScheme:]
进行绕过 - 只支持拦截,重定向需要私有 API,有被拒审的风险
- NSURLProtocol
- iOS 通过NSURLProtocol拦截WKWebView网络请求_ios webview 拦截网络请求-CSDN博客
- WKWebView的请求拦截和修改实现。技术方法:NSURLProtocol_wkwebview拦截网络请求-CSDN博客
- WKWebView启动优化1.背景 用户体验 网页的开启速度是用户最直观的体验之一。但网页相对于原生的启动相应速度还是略 - 掘金
本文作者:Maeiee
本文链接:WkWebView 请求拦截
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!