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 ਫੈਚ ਨੂੰ ਕਵਰ ਕਰਦੀ ਹੈ। ਤਸਵੀਰਾਂ, ਸਕ੍ਰਿਪਟਾਂ ਅਤੇ ਬਾਅਦ ਦੀ ਨੈਵੀਗੇਸ਼ਨ ਅਜੇ ਵੀ ਵਿਊ ਦੀ ਨੈੱਟਵਰਕਿੰਗ ਵਰਤਦੀਆਂ ਹਨ; ਸਟੋਰ ਉਸ ਰਸਤੇ ਨੂੰ ਕਨਫਿਗਰ ਕਰਨ ਦਾ ਜਨਤਕ ਹੁੱਕ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ