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

Paparan yang dikembalikan menggunakan WKWebsiteDataStore khusus yang tidak berterusan. Muatkan laman web yang dimaksudkan melalui paparan itu. Gunakan akaun perantara atau tinggalkan applyCredential untuk proksi yang tidak memerlukan apa-apa. Untuk cabang HTTP tanpa pengesahan itu, senarai proksi HTTP menyediakan titik akhir calon untuk stor data.

Setiap paparan yang berkongsi stor ini berkongsi dasar proksinya. Stor khusus ini juga mempunyai data laman web sementara, jadi ia tidak mewarisi log masuk laman web sedia ada paparan lain.

Kekalkan konfigurasi sebelum navigasi. WebKit memberi amaran bahawa menukar konfigurasi proksi stor boleh mengganggu rangkaian semasanya.

Pengambilan URLSession berasingan diikuti loadHTMLString hanya meliputi pengambilan HTML itu. Imej, skrip dan navigasi seterusnya masih menggunakan rangkaian paparan; stor ialah cangkuk awam untuk mengkonfigurasi laluan itu.

Artikel berkaitan