5

我一直在寻找一种方法来为 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?

我会非常感谢你的帮助

4

3 回答 3

4

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

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

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

于 2019-04-05T18:31:56.073 回答
0

我们的访问权限有限,我们可以实现WKWebView的最低限度 如果您的代理服务器支持隧道(VPN),那么您可以使用 NetworkExtension.framework 在这里查看内容,希望它会对您有所帮助。 来源在这里delegateNSURLProtocol

于 2019-04-10T08:01:33.300 回答
0

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

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

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

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

如果您真的可以这样做,那么使用 Web 视图会非常危险。

于 2019-04-05T18:43:11.643 回答