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 преземање. Сликите, скриптите и подоцнежната навигација сè уште го користат вмрежувањето на приказот; складиштето е јавната кука за конфигурирање на таа рута.

Поврзани статии