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.

Relaterade artiklar