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