2016-12-09 116 views
6

有没有办法配置WKWebView通过HTTP代理服务器?我知道这可以直接使用NSURLSession,但我想配置它,以便通过WKWebView浏览器的所有请求都通过代理。使用WKWebView的HTTP代理支持

回答

3

NSURLSessionConfiguration有直接的接口(connectionProxyDictionary)要做到这一点,所以它可以很容易地做到

但是,WkWebView没有那方面的直接接口,它请求,呈现内容OUT-的过程,所以你可以想像这样WkWebview实例从您的应用程序

WkWeView其余沙盒甚至忽略NSURLSession & NSURLConnection的的饼干(NSHTTPCookieStorage),高速缓存(NSURLCache)和凭证(NSCredentialStorage)同样这些网络类无法访问WkWebView实例的Cookie,缓存和凭证。

UIWebView不会将它用于进程外,因此您可以使用NSURLProtocol来演示CustomHTTPProtocol示例以代理服务器。

从iOS 10开始,在WkWebView中仍然不支持NSURLProtocol,因此您无法使用WkWebView进行代理。

如果您的代理服务器支持隧道(VPN),那么你可以使用NetworkExtension.framework和它的类(NEVPNManager,NEVPNProtocol,NEVPNConnection等)通过代理服务器直接您的应用程序的所有网络流量。

这是关于如何做到这一点的tutorial