Almacéns de datos de proxy de WKWebView en iOS 17+ e macOS 14+
En iOS 17 ou macOS 14 e posteriores, defina proxyConfigurations antes de crear e navegar pola vista, con credenciais cando o intermediario CONNECT as necesite.
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 vista devolta usa un WKWebsiteDataStore dedicado non persistente. Cargue o sitio web desexado a través desa vista. Use a conta do intermediario ou omita applyCredential para un proxy que non requira ningunha. Para esa rama HTTP non autenticada, a lista de proxies HTTP fornece puntos finais candidatos para o almacén de datos.
Cada vista que comparte este almacén comparte a súa política de proxy. Este almacén dedicado tamén ten datos de sitio web efémeros, polo que non herda o inicio de sesión existente doutra vista.
Manteña a configuración antes da navegación. WebKit advirte de que cambiar a configuración de proxy dun almacén pode interromper a súa rede actual.
Unha obtención separada con URLSession seguida de loadHTMLString só cobre esa obtención HTML. As imaxes, os scripts e a navegación posterior seguen usando a rede da vista; o almacén é o gancho público para configurar esa ruta.