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

Den returnerte visninga brukar eit dedikert ikkje-varig WKWebsiteDataStore. Last inn nettstaden du vil bruke, gjennom den visninga. Bruk kontoen til mellomleddet, eller utelat applyCredential for ein proxy som ikkje krev nokon. For den uautentiserte HTTP-greina gjev HTTP-proxylista kandidat-endepunkt for datalageret.

Kvar visning som deler dette lageret, deler proxy-policyen. Dette dedikerte lageret har også mellombelse nettstaddata, så det arvar ikkje ei anna visning si eksisterande nettstadinnlogging.

Hald konfigurasjonen før navigeringa. WebKit åtvarar om at endring av proxykonfigurasjonen til eit lager kan avbryte den gjeldande nettverksaktiviteten.

Eit separat URLSession-hent etterfølgt av loadHTMLString dekkjer berre det HTML-hentet. Bilete, skript og seinare navigering brukar framleis nettverket til visninga; lageret er den offentlege kroken for å konfigurere den ruta.

Relaterte artiklar