Op iOS 17 en later kan Network.framework een SOCKSv5-proxy toepassen via een privacycontext. Koppel die context aan de parameters voordat de verbinding wordt gemaakt:

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)
}

De functie retourneert een niet-gestarte TLS-verbinding. Installeer de statusafhandeling van de app, start deze op de bedoelde wachtrij en wissel vervolgens het applicatieprotocol uit via het normale verzend- en ontvangstpad.

proxy.example:1080 is de SOCKS-listener. Voor toegestane openbare serviceverbindingen levert de SOCKS5-proxylijst host- en poortkandidaten. service.example:443 blijft de bestemming. De privacycontext past de proxyconfiguraties toe op verbindingen die aan die context zijn gekoppeld; een losstaande verbinding met andere parameters neemt deze instelling niet over.

Dit is de verbindingsinterface van Network.framework. Een URLSession-proxyoverschrijving of een WKWebView-gegevensopslaginstelling configureert die afzonderlijke consumenten. Voor een WebSocket die op NWConnection is gebouwd, moet de app ook de juiste WebSocket-protocolopties leveren.

Gerelateerde artikelen