Konfigurer NWConnection SOCKS5-proxy på iOS 17+
Tilknyt en iOS 17 SOCKSv5 ProxyConfiguration til NWParameters.PrivacyContext, før du opretter en NWConnection.
På iOS 17 og nyere kan Network.framework anvende en SOCKSv5-proxy via en privatlivskontekst. Tilknyt den kontekst til parametrene, før forbindelsen oprettes:
import Network
@available(iOS 17.0, *)
func makeConnection() -> NWConnection {
let parameters = NWParameters.tls
let context = NWParameters.PrivacyContext(description: "Service route")
let endpoint = NWEndpoint.hostPort(
host: "proxy.example", port: 1080)
context.proxyConfigurations = [
ProxyConfiguration(socksv5Proxy: endpoint)
]
parameters.setPrivacyContext(context)
return NWConnection(
host: "service.example", port: 443, using: parameters)
}
Funktionen returnerer en TLS-forbindelse, der ikke er startet. Installer applikationens tilstandsbehandling, start den på den tilsigtede kø, og udveksl derefter applikationsprotokollen via dens normale send- og modtagelsesvej.
proxy.example:1080 er SOCKS-lytteren. For tilladte offentlige tjenesteforbindelser leverer SOCKS5-proxylisten værts- og portkandidater. service.example:443 forbliver destinationen. Privatlivskonteksten anvender sine proxykonfigurationer på forbindelser, der er knyttet til den kontekst; oprettelse af en urelateret forbindelse med andre parametre arver ikke denne opsætning.
Dette er Network.frameworks forbindelsesgrænseflade. En URLSession-proxyoverskrivning eller en WKWebView-datalagerindstilling konfigurerer disse separate forbrugere. For en WebSocket bygget på NWConnection skal applikationen også levere de relevante WebSocket-protokolindstillinger.