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 फेचलाई मात्र समेट्छ। तस्बिरहरू, स्क्रिप्टहरू र पछिको नेभिगेसनले अझै भ्यूको नेटवर्किङ प्रयोग गर्छन्; स्टोर त्यो मार्ग कन्फिगर गर्ने सार्वजनिक हुक हो।

सम्बन्धित लेखहरू