iOS 17+ மற்றும் macOS 14+ இல் WKWebView ப்ராக்ஸி தரவுச் சேமிப்பகங்கள்
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 பெறுதலை மட்டுமே உள்ளடக்கும். படங்கள், ஸ்கிரிப்ட்கள் மற்றும் பிந்தைய வழிநடத்தல் இன்னும் காட்சியின் வலையமைப்பைப் பயன்படுத்துகின்றன; அந்தப் பாதையை உள்ளமைக்கும் பொது இணைப்பு சேமிப்பகமே.