Прокси хранилища за данни на 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. Изображенията, скриптовете и следващата навигация все още използват мрежата на изгледа; хранилището е публичната кука за конфигуриране на този маршрут.