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

Vrnjeni pogled uporablja namensko nestanovitno WKWebsiteDataStore. Naložite želeno spletno mesto prek tega pogleda. Uporabite račun posrednika ali izpustite applyCredential za proxy, ki ne zahteva nobenega. Za to neoverjeno vejo HTTP seznam proxyjev HTTP ponuja kandidatne končne točke za shrambo podatkov.

Vsak pogled, ki si deli to shrambo, si deli njeno proxy politiko. Ta namenska shramba ima tudi efemerne podatke spletnih mest, zato ne podeduje obstoječe prijave spletnega mesta drugega pogleda.

Ohranite konfiguracijo pred krmarjenjem. WebKit opozarja, da lahko sprememba proxy konfiguracije shrambe prekine njeno trenutno delovanje v omrežju.

Ločeno pridobivanje prek URLSession, ki mu sledi loadHTMLString, pokriva samo to pridobivanje HTML. Slike, skripti in poznejše krmarjenje še vedno uporabljajo omrežje pogleda; shramba je javni kavelj za konfiguracijo te poti.

Sorodni članki