我使用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
或类似代理配置的内容。
任何人都知道怎么做?
提前谢谢。
答案 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()中,您可以设置代理