Armazenamentos de dados de proxy do WKWebView no iOS 17+ e macOS 14+
No iOS 17 ou macOS 14 e posteriores, defina proxyConfigurations antes de criar e navegar na visualização, com credenciais quando o intermediário CONNECT precisar delas.
import Network
import WebKit
@available(iOS 17.0, macOS 14.0, *)
@MainActor
func makeWebView(username: String, password: String) -> WKWebView {
let endpoint = NWEndpoint.hostPort(
host: "proxy.example.net", port: 8080)
let proxy = ProxyConfiguration(
httpCONNECTProxy: endpoint, tlsOptions: nil)
proxy.applyCredential(username: username, password: password)
let store = WKWebsiteDataStore.nonPersistent()
store.proxyConfigurations = [proxy]
let configuration = WKWebViewConfiguration()
configuration.websiteDataStore = store
return WKWebView(frame: .zero, configuration: configuration)
}A visualização retornada usa um WKWebsiteDataStore dedicado e não persistente. Carregue o site desejado por essa visualização. Use a conta do intermediário ou omita applyCredential para um proxy que não exija nenhuma. Para esse ramo HTTP não autenticado, a lista de proxies HTTP fornece endpoints candidatos para o armazenamento de dados.
Cada visualização que compartilha esse armazenamento compartilha sua política de proxy. Esse armazenamento dedicado também tem dados efêmeros de sites, então não herda o login existente de outra visualização.
Mantenha a configuração antes da navegação. O WebKit avisa que alterar a configuração de proxy de um armazenamento pode interromper sua rede atual.
Uma busca URLSession separada seguida de loadHTMLString cobre apenas essa busca HTML. Imagens, scripts e a navegação posterior ainda usam a rede da visualização; o armazenamento é o gancho público para configurar essa rota.