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 restituita usa un WKWebsiteDataStore dedicato e non persistente. Caricare il sito web desiderato tramite quella vista. Usare l'account dell'intermediario o omettere applyCredential per un proxy che non ne richiede alcuno. Per quel ramo HTTP non autenticato, il elenco di proxy HTTP fornisce endpoint candidati per l'archivio dati.

Ogni vista che condivide questo archivio condivide la sua politica proxy. Questo archivio dedicato ha anche dati di siti web effimeri, quindi non eredita l'accesso esistente di un'altra vista.

Mantenere la configurazione prima della navigazione. WebKit avverte che modificare la configurazione proxy di un archivio può interrompere la sua rete in corso.

Un recupero URLSession separato seguito da loadHTMLString copre solo quel recupero HTML. Immagini, script e navigazione successiva usano ancora la rete della vista; l'archivio è l'aggancio pubblico per configurare quel percorso.

Articoli correlati