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

Döndürülen görünüm, kendisine ayrılmış kalıcı olmayan bir WKWebsiteDataStore kullanır. İstenen web sitesini bu görünüm üzerinden yükleyin. Aracının hesabını kullanın veya hiç kimlik bilgisi gerektirmeyen bir proxy için applyCredential çağrısını atlayın. Kimlik doğrulaması olmayan bu HTTP dalı için HTTP proxy listesi, veri deposu için aday uç noktalar sunar.

Bu depoyu paylaşan her görünüm, onun proxy ilkesini paylaşır. Bu ayrılmış depo ayrıca geçici web sitesi verilerine sahiptir, bu nedenle başka bir görünümün mevcut web sitesi oturumunu devralmaz.

Yapılandırmayı gezinmeden önce tutun. WebKit, bir deponun proxy yapılandırmasını değiştirmenin mevcut ağ işleyişini kesintiye uğratabileceği konusunda uyarır.

Ayrı bir URLSession isteği ve ardından loadHTMLString yalnızca o HTML isteğini kapsar. Görseller, betikler ve sonraki gezinme hâlâ görünümün ağını kullanır; depo, bu rotayı yapılandırmak için genel kancadır.

İlgili makaleler