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 ලබාගැනීම පමණක් ආවරණය කරයි. රූප, ස්ක්රිප්ට් සහ පසු සංචාලනය තවමත් දර්ශනයේ ජාලකරණය භාවිත කරයි; ගබඩාව එම මාර්ගය වින්යාස කිරීමේ පොදු කොක්කයයි.