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 татлагыг хамарна. Зураг, скрипт болон дараагийн шилжилт нь харагдацын сүлжээг ашигласаар байна; сан нь тэр замыг тохируулах нийтийн дэгээ юм.