如何为WKWebView设置代理?

时间:2018-03-12 05:36:55

标签: ios swift nsurlsession wkwebview nsurlrequest

我使用WKWebView打开网页,现在我需要为特定URL设置代理。
我知道如何使用代理发送请求,只需使用URLSession,如下所示。

let proxyHost = "1.2.3.4"
let proxyPort = 9000
let proxyConfiguration = URLSessionConfiguration.default
proxyConfiguration.connectionProxyDictionary = [
            kCFNetworkProxiesHTTPEnable: true,
            kCFNetworkProxiesHTTPProxy: proxyHost,
            kCFNetworkProxiesHTTPPort: proxyPort,
]
let session = URLSession(configuration: proxyConfiguration)

但是没有WKWebView的API可以接收URLSession或类似代理配置的内容。 任何人都知道怎么做? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用WKNavigationDelegate

例如

extension MyWKWebView: WKNavigationDelegate {
    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

        print("==================================")
        print("decidePolicyFor - navigationAction")
        print(webView.url?.absoluteString as Any)
        print(navigationAction.request.allHTTPHeaderFields)
        print("==================================")

        if isRequestOnInterceptList(navigationAction.request) {
            let nreq = modifyRequestUrl(navigationAction.request)
            //webView.load(nreq)
            webView.stopLoading()
            decisionHandler(.cancel)
        } else {
            decisionHandler(.allow)
        }
    }
}

在modifyRequestUrl()中,您可以设置代理