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

Qaytarılan görünüş ayrılmış qeyri-davamlı WKWebsiteDataStore istifadə edir. Nəzərdə tutulan veb saytı həmin görünüş vasitəsilə yükləyin. Vasitəçinin hesabından istifadə edin və ya heç bir tələb etməyən proxy üçün applyCredential buraxın. Autentifikasiyasız HTTP qolu üçün HTTP proxy siyahısı data store üçün namizəd son nöqtələr təqdim edir.

Bu store-u paylaşan hər görünüş onun proxy siyasətini paylaşır. Bu ayrılmış store həm də müvəqqəti veb sayt məlumatlarına malikdir, ona görə də başqa görünüşün mövcud veb sayt girişini miras almır.

Konfiqurasiyanı naviqasiyadan əvvəl saxlayın. WebKit xəbərdar edir ki, store-un proxy konfiqurasiyasını dəyişmək onun cari şəbəkə fəaliyyətini poza bilər.

Ayrı bir URLSession sorğusu və ardınca loadHTMLString yalnız həmin HTML sorğusunu əhatə edir. Şəkillər, skriptlər və sonrakı naviqasiya hələ də görünüşün şəbəkəsindən istifadə edir; store həmin marşrutu konfiqurasiya etmək üçün ictimai qarmaqdır.

Əlaqəli məqalələr