Проксі-сховища даних WKWebView в iOS 17+ і macOS 14+
В iOS 17 або macOS 14 і новіших задайте proxyConfigurations до створення й навігації подання, з обліковими даними, коли вони потрібні посереднику CONNECT.
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. Зображення, скрипти й подальша навігація далі використовують мережу подання; сховище — це публічний гачок для налаштування цього маршруту.