我正在寻找一种方法来为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?
非常感谢您的帮助
答案 0 :(得分:3)
WKWebView无法使用HTTP代理-使用WKWebView时,NSURLProtocol注册技巧不起作用(仅适用于UIWebView)。
使用WKURLSchemeHandler可能有类似的技巧,但是它不允许注册由WKWebView本地处理的方案,因此实际上是不可能的。
答案 1 :(得分:0)
Web视图用于输入您不希望应用程序直接访问的非常敏感的信息(例如信用卡号,密码)。
因此,WKWebview
明确阻止了所有劫持该信息的尝试。
例如,在委托方法中,您可以看到正在发生请求,并可以看到其URL,但是您无法访问请求正文。
出于同样的原因,不允许您篡改代理。
如果您实际上可以这样做,将使Web视图的使用非常危险。
答案 2 :(得分:0)
我们对WKWebView
的访问权限有限,最少需要delegate
就可以实现NSURLProtocol
如果您的代理服务器支持隧道(VPN),则可以使用NetworkExtension.framework,在此处查看内容,希望对您有所帮助。
source is here