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 ಫೆಚ್ ಅನ್ನು ಮಾತ್ರ ಒಳಗೊಳ್ಳುತ್ತದೆ. ಚಿತ್ರಗಳು, ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಮತ್ತು ನಂತರದ ನ್ಯಾವಿಗೇಷನ್ ಇನ್ನೂ ವ್ಯೂವಿನ ನೆಟ್‌ವರ್ಕಿಂಗ್ ಬಳಸುತ್ತವೆ; ಸ್ಟೋರ್ ಆ ಮಾರ್ಗವನ್ನು ಸಂರಚಿಸುವ ಸಾರ್ವಜನಿಕ ಹುಕ್ ಆಗಿದೆ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು