مخزنهای داده پراکسی 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 را پوشش میدهد. تصاویر، اسکریپتها و پیمایش بعدی همچنان از شبکهرسانی نما استفاده میکنند؛ مخزن قلاب عمومی برای پیکربندی این مسیر است.