Konfigurera NWConnection SOCKS5-proxy på iOS 17+
Anslut en iOS 17 SOCKSv5 ProxyConfiguration till NWParameters.PrivacyContext innan du skapar en NWConnection.
På iOS 17 och senare kan Network.framework tillämpa en SOCKSv5-proxy via en integritetskontext. Anslut den kontexten till parametrarna innan anslutningen skapas:
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 returnerar en TLS-anslutning som inte har startats. Installera applikationens tillståndshantering, starta den på den avsedda kön och utbyt sedan applikationsprotokollet via dess normala sändnings- och mottagningsväg.
proxy.example:1080 är SOCKS-lyssnaren. För tillåtna anslutningar till offentliga tjänster tillhandahåller SOCKS5-proxylistan värd- och portkandidater. service.example:443 förblir målet. Integritetskontexten tillämpar sina proxykonfigurationer på anslutningar som är kopplade till den kontexten; att skapa en orelaterad anslutning med andra parametrar ärver inte denna inställning.
Detta är Network.frameworks anslutningsgränssnitt. En URLSession-proxyöverstyrning eller en WKWebView-datalagringsinställning konfigurerar dessa separata konsumenter. För en WebSocket byggd på NWConnection måste applikationen också tillhandahålla lämpliga WebSocket-protokollalternativ.