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 ഫെച്ച് മാത്രം ഉൾക്കൊള്ളുന്നു. ചിത്രങ്ങൾ, സ്ക്രിപ്റ്റുകൾ, പിന്നീടുള്ള നാവിഗേഷൻ എന്നിവ ഇപ്പോഴും വ്യൂവിന്റെ നെറ്റ്വർക്കിംഗ് ഉപയോഗിക്കുന്നു; ആ പാത ക്രമീകരിക്കാനുള്ള പൊതു ഹുക്ക് സ്റ്റോർ ആണ്.

അനുബന്ധ ലേഖനങ്ങൾ