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 მოთხოვნას. სურათები, სკრიპტები და შემდგომი ნავიგაცია კვლავ იყენებენ ხედის ქსელს; საცავი არის საჯარო კაუჭი ამ მარშრუტის კონფიგურირებისთვის.

დაკავშირებული სტატიები