Almacenes de datos de proxy de WKWebView en iOS 17+ y macOS 14+
En iOS 17 o macOS 14 y versiones posteriores, establezca proxyConfigurations antes de crear y navegar por la vista, con credenciales cuando el intermediario CONNECT las 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)
}La vista devuelta usa un WKWebsiteDataStore dedicado y no persistente. Cargue el sitio web deseado a través de esa vista. Use la cuenta del intermediario u omita applyCredential para un proxy que no requiera ninguna. Para esa rama HTTP no autenticada, la lista de proxies HTTP proporciona puntos finales candidatos para el almacén de datos.
Cada vista que comparte este almacén comparte su política de proxy. Este almacén dedicado también tiene datos de sitios web efímeros, por lo que no hereda el inicio de sesión existente de otra vista.
Mantenga la configuración antes de la navegación. WebKit advierte que cambiar la configuración de proxy de un almacén puede interrumpir su red actual.
Una obtención separada con URLSession seguida de loadHTMLString solo cubre esa obtención HTML. Las imágenes, los scripts y la navegación posterior siguen usando la red de la vista; el almacén es el gancho público para configurar esa ruta.