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 फेचला व्यापते. प्रतिमा, स्क्रिप्ट्स आणि पुढील नेव्हिगेशन अजूनही दृश्याचे नेटवर्किंग वापरतात; स्टोअर हाच तो मार्ग कॉन्फिगर करण्याचा सार्वजनिक हुक आहे.

संबंधित लेख