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