在WebKit视图中使用自定义代理(ip、端口、登录名和密码)



我有一个带有WebKit View的应用程序,当我打开其中的链接时,我想通过ip、端口、登录和传递来使用代理,在这种情况下我应该怎么做,我不知道如何解决这个问题。有人能帮助理解算法并举例说明吗。

它只能用于单个请求,而不能用于流量拦截,并且我只能加载html版本的网站(

func loadAddressURL(url : String){


let proxyHost : CFString = NSString(string: "****") as CFString
let proxyPort : CFNumber = NSNumber(value: ****) as CFNumber
let proxyEnable : CFNumber = NSNumber(value: 1) as CFNumber
let proxyHostName : CFString = NSString(string: "****") as CFString
let proxyPassword : CFString = NSString(string: "****") as CFString

let proxyDict: [NSObject : AnyObject] = [
kCFNetworkProxiesHTTPEnable: proxyEnable,
kCFStreamPropertyHTTPProxyHost: proxyHost,
kCFStreamPropertyHTTPProxyPort: proxyPort,
kCFStreamPropertyHTTPSProxyHost: proxyHost,
kCFStreamPropertyHTTPSProxyPort: proxyPort,
kCFProxyTypeKey: kCFProxyTypeHTTPS,
kCFProxyUsernameKey: proxyHostName,
kCFProxyPasswordKey: proxyPassword
]

let configuration : URLSessionConfiguration = URLSessionConfiguration.ephemeral

configuration.connectionProxyDictionary = proxyDict

let session : URLSession = URLSession(configuration: configuration, delegate: self, delegateQueue: OperationQueue.main)
let requestURl = NSURL(string: url)
let request = NSURLRequest(url:requestURl! as URL)

let task1: URLSessionDataTask = session.dataTask(with: request as URLRequest, completionHandler: {(data, response, error) -> Void in
if (error == nil) {
let myHtmlString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
self.webView.loadHTMLString(myHtmlString! as String, baseURL: nil)

} else {
print(error)
}

});
task1.resume()
}

流量拦截在WKWebkit中是不可能的;请求";已从应用程序工作流程中移出。

相关内容

最新更新