iOS 17+ және macOS 14+ жүйелеріндегі WKWebView прокси дерекқорлары
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 сұранысын қамтиды. Суреттер, скрипттер және кейінгі навигация әлі де көріністің желісін пайдаланады; қор — сол маршрутты конфигурациялаудың ашық ілгегі.