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 ఫెచ్‌ను మాత్రమే కవర్ చేస్తాయి. చిత్రాలు, స్క్రిప్ట్‌లు మరియు తర్వాతి నావిగేషన్ ఇప్పటికీ వీక్షణ నెట్‌వర్కింగ్‌ను ఉపయోగిస్తాయి; స్టోర్ ఆ మార్గాన్ని కాన్ఫిగర్ చేయడానికి ప్రజా హుక్.

సంబంధిత వ్యాసాలు