Ребята, haymob √ дал правильное и интересное решение, возможно кому то пригодится
let js = """
(function() {
var proxied = window.XMLHttpRequest.prototype.open
window.XMLHttpRequest.prototype.open = function() {
window.webkit.messageHandlers.openURL.postMessage(arguments[1])
return proxied.apply(this, [].slice.call(arguments))
}
})()
"""
class ScriptMessageHandler: NSObject, WKScriptMessageHandler {
typealias Closure = (_ message: WKScriptMessage) -> Void
private let closure: Closure
init(_ closure: @escaping Closure) { self.closure = closure; super.init() }
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
closure(message)
}
}
class ViewController: UIViewController {
override func loadView() {
let contentController = WKUserContentController()
contentController.add(ScriptMessageHandler { message in
print(message.body)
}, name: "openURL")
contentController.addUserScript(WKUserScript(source: js, injectionTime: .atDocumentEnd, forMainFrameOnly: true))
let config = WKWebViewConfiguration()
config.userContentController = contentController
let webView = WKWebView(frame: .zero, configuration: config)
defer { view = webView }
webView.load(URLRequest(url: URL(string: "https://www.odnoklassniki.com/accounts/login/")!))
}
}