使用WKWebView支持HTTP代理

9

有没有一种方法可以配置WKWebView通过HTTP代理服务器进行访问?我知道直接使用NSURLSession是可能的,但我想配置它,使得WKWebView浏览器中的所有请求都通过代理进行。

1个回答

6
NSURLSessionConfiguration有一个直接的接口(connectionProxyDictionary)可以实现代理,所以这可以很容易地完成。
但是,WkWebView没有像那样的直接接口,它请求并在进程外呈现内容,所以你可以想象WkWebview实例就像被隔离在应用程序的其余部分之外一样。
WkWeView甚至忽略了NSURLSession和NSURLConnection的cookie(NSHTTPCookieStorage)、缓存(NSURLCache)和凭据(NSCredentialStorage),同样这些网络类也无法访问WkWebView实例的cookie、缓存和凭据。
UIWebView没有在进程外执行,因此您可以使用NSURLProtocol来代理到服务器,如CustomHTTPProtocol示例中所示。
截至iOS 10,WkWebView仍不支持NSURLProtocol,因此无法使用WkWebView进行代理。
如果您的代理服务器支持隧道(VPN),则可以使用NetworkExtension.framework及其类(NEVPNManager、NEVPNProtocol、NEVPNConnection等)将应用程序的所有网络流量定向通过您的代理服务器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接