Swift 4/5设置将代理添加到WKWebview

时间:2019-04-02 19:40:39

标签: ios swift wkwebview nsurlsessionconfiguration wkwebviewconfiguration

我正在寻找一种方法来为WKWebview请求设置代理,但是没有运气。

另一方面,我已经能够将代理设置为http请求

func createURLSessionConfiguration(_ host:String,_  port:String) -> URLSessionConfiguration {

    let config = URLSessionConfiguration.default
    config.requestCachePolicy = URLRequest.CachePolicy.reloadIgnoringLocalCacheData
    config.connectionProxyDictionary = [AnyHashable: Any]()
    config.connectionProxyDictionary?[kCFNetworkProxiesHTTPEnable as String] = 1
    config.connectionProxyDictionary?[kCFNetworkProxiesHTTPSProxy as String] = host
    config.connectionProxyDictionary?[kCFNetworkProxiesHTTPSPort as String] = port

    return config
}

但是我对你们的问题是如何将代理设置为WKWebView?

非常感谢您的帮助

3 个答案:

答案 0 :(得分:3)

WKWebView无法使用HTTP代理-使用WKWebView时,NSURLProtocol注册技巧不起作用(仅适用于UIWebView)。

使用WKURLSchemeHandler可能有类似的技巧,但是它不允许注册由WKWebView本地处理的方案,因此实际上是不可能的。

来源:https://forums.developer.apple.com/thread/110312#337642

答案 1 :(得分:0)

Web视图用于输入您不希望应用程序直接访问的非常敏感的信息(例如信用卡号,密码)。

因此,WKWebview明确阻止了所有劫持该信息的尝试。

例如,在委托方法中,您可以看到正在发生请求,并可以看到其URL,但是您无法访问请求正文。

出于同样的原因,不允许您篡改代理。

如果您实际上可以这样做,将使Web视图的使用非常危险。

答案 2 :(得分:0)

我们对WKWebView的访问权限有限,最少需要delegate就可以实现NSURLProtocol 如果您的代理服务器支持隧道(VPN),则可以使用NetworkExtension.framework,在此处查看内容,希望对您有所帮助。  source is here