WKWebView отловить general значения headers webkit. Done ✅

uiwebview
swift

#1

Друзья Приветствую.
Подскажите, работаю с WKWebView
В браузере в категории Network есть разделы Headers, Cookies, Params, Response…
Я получаю данные из Headers Cookies, но не могу получить из Params :triumph:


Кто сталкивался, поскажите пжл как получить от туда данные :raised_hands:t2:


#2

Ребята, :muscle:t2: 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/")!))
    }
}