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)
}

Vrácené zobrazení používá vyhrazené nepersistentní WKWebsiteDataStore. Načtěte zamýšlený web přes toto zobrazení. Použijte účet zprostředkovatele nebo vynechejte applyCredential pro proxy, které žádný nevyžaduje. Pro tuto neověřenou HTTP větev seznam HTTP proxy nabízí kandidátní koncové body pro úložiště dat.

Každé zobrazení sdílející toto úložiště sdílí jeho proxy zásady. Toto vyhrazené úložiště má také efemérní data webů, takže nedědí existující přihlášení k webu jiného zobrazení.

Udržujte konfiguraci před navigací. WebKit varuje, že změna proxy konfigurace úložiště může přerušit jeho aktuální síťování.

Samostatné načtení pomocí URLSession následované loadHTMLString pokrývá pouze toto načtení HTML. Obrázky, skripty a další navigace stále používají síťování zobrazení; úložiště je veřejný háček pro konfiguraci této trasy.

Související články