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. Зображення, скрипти й подальша навігація далі використовують мережу подання; сховище — це публічний гачок для налаштування цього маршруту.

Схожі статті