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

Враћени приказ користи наменско непостојано WKWebsiteDataStore. Учитајте жељени веб-сајт кроз тај приказ. Користите налог посредника или изоставите applyCredential за прокси који га не захтева. За ту неаутентификовану HTTP грану листа HTTP проксија нуди кандидате крајње тачке за складиште података.

Сваки приказ који дели ово складиште дели и његову прокси политику. Ово наменско складиште такође има привремене податке веб-сајтова, па не наслеђује постојећу пријаву веб-сајта другог приказа.

Држите конфигурацију пре навигације. WebKit упозорава да промена прокси конфигурације складишта може прекинути његово тренутно умрежавање.

Одвојено преузимање преко URLSession праћено loadHTMLString покрива само то HTML преузимање. Слике, скрипте и каснија навигација и даље користе умрежавање приказа; складиште је јавна кука за конфигурисање те руте.

Повезани чланци