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 retornada utilitza un WKWebsiteDataStore dedicat i no persistent. Carregueu el lloc web desitjat a través d'aquesta vista. Utilitzeu el compte de l'intermediari o ometeu applyCredential per a un proxy que no en requereixi cap. Per a aquesta branca HTTP no autenticada, la llista de proxies HTTP proporciona punts finals candidats per al magatzem de dades.

Cada vista que comparteix aquest magatzem comparteix la seva política de proxy. Aquest magatzem dedicat també té dades de lloc web efímeres, de manera que no hereta l'inici de sessió existent d'una altra vista.

Mantingueu la configuració abans de la navegació. WebKit adverteix que canviar la configuració de proxy d'un magatzem pot interrompre la seva xarxa actual.

Una obtenció separada amb URLSession seguida de loadHTMLString només cobreix aquesta obtenció HTML. Les imatges, els scripts i la navegació posterior encara utilitzen la xarxa de la vista; el magatzem és el ganxo públic per configurar aquesta ruta.

Articles relacionats