V iOS 17 a novšom môže Network.framework použiť proxy SOCKSv5 prostredníctvom kontextu súkromia. Pred vytvorením pripojenia pripojte tento kontext k parametrom:

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

Funkcia vracia nespustené TLS pripojenie. Nainštalujte obsluhu stavu aplikácie, spustite ju v zamýšľanom fronte a potom vymieňajte protokol aplikácie bežnou cestou odosielania a prijímania.

proxy.example:1080 je listener SOCKS. Pre povolené pripojenia k verejným službám zoznam proxy SOCKS5 poskytuje kandidátov hostiteľa a portu. service.example:443 zostáva cieľom. Kontext súkromia uplatňuje svoje konfigurácie proxy na pripojenia spojené s týmto kontextom; vytvorenie nesúvisiaceho pripojenia s inými parametrami toto nastavenie nededia.

Toto je rozhranie pripojení Network.framework. Prepis proxy v URLSession alebo nastavenie úložiska údajov WKWebView konfigurujú týchto samostatných spotrebiteľov. Pre WebSocket postavený na NWConnection musí aplikácia tiež poskytnúť príslušné možnosti protokolu WebSocket.

Súvisiace články