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

Tampilan yang dikembalikan memakai WKWebsiteDataStore khusus yang tidak persisten. Muat situs web yang dimaksud melalui tampilan itu. Gunakan akun perantara atau hilangkan applyCredential untuk proxy yang tidak memerlukan kredensial apa pun. Untuk cabang HTTP tanpa autentikasi itu, daftar proxy HTTP menyediakan titik akhir kandidat untuk penyimpanan data.

Setiap tampilan yang berbagi penyimpanan ini berbagi kebijakan proxy-nya. Penyimpanan khusus ini juga memiliki data situs web sementara, sehingga tidak mewarisi login situs web yang sudah ada dari tampilan lain.

Jaga konfigurasi sebelum navigasi. WebKit memperingatkan bahwa mengubah konfigurasi proxy penyimpanan dapat mengganggu jaringan yang sedang berjalan.

Pengambilan URLSession terpisah yang diikuti loadHTMLString hanya mencakup pengambilan HTML itu. Gambar, skrip, dan navigasi berikutnya tetap memakai jaringan tampilan; penyimpanan adalah kait publik untuk mengonfigurasi rute itu.

Artikel terkait