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 ذلك فقط. لا تزال الصور والنصوص البرمجية والتنقل اللاحق تستخدم شبكة العرض؛ والمخزن هو الخطاف العام لإعداد ذلك المسار.

مقالات ذات صلة