NWConnection-SOCKS5-Proxying unter iOS 17+ konfigurieren
Hängen Sie eine iOS-17-SOCKSv5-ProxyConfiguration an NWParameters.PrivacyContext an, bevor Sie eine NWConnection erstellen.
Unter iOS 17 und neuer kann Network.framework einen SOCKSv5-Proxy über einen Datenschutzkontext anwenden. Hängen Sie diesen Kontext an die Parameter an, bevor die Verbindung erstellt wird:
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)
}
Die Funktion gibt eine nicht gestartete TLS-Verbindung zurück. Installieren Sie die Zustandsbehandlung der Anwendung, starten Sie sie in der vorgesehenen Warteschlange und tauschen Sie dann das Anwendungsprotokoll über den normalen Sende- und Empfangspfad aus.
proxy.example:1080 ist der SOCKS-Listener. Für zulässige Verbindungen zu öffentlichen Diensten liefert die SOCKS5-Proxy-Liste Host- und Portkandidaten. service.example:443 bleibt das Ziel. Der Datenschutzkontext wendet seine Proxykonfigurationen auf Verbindungen an, die diesem Kontext zugeordnet sind; eine unabhängige Verbindung mit anderen Parametern erbt diese Einrichtung nicht.
Dies ist die Verbindungsschnittstelle von Network.framework. Eine URLSession-Proxy-Überschreibung oder eine WKWebView-Datenspeichereinstellung konfiguriert diese separaten Verbraucher. Für einen auf NWConnection aufgebauten WebSocket muss die Anwendung außerdem die passenden WebSocket-Protokolloptionen bereitstellen.