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.

Ähnliche Artikel