2016-12-09 118 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