V iOS 17 a novějším může Network.framework použít proxy SOCKSv5 prostřednictvím kontextu soukromí. Před vytvořením připojení připojte tento kontext k parametrům:

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

Funkce vrací nezahájené TLS připojení. Nainstalujte obsluhu stavu aplikace, spusťte ji ve zamýšlené frontě a poté vyměňujte aplikační protokol běžnou cestou odesílání a příjmu.

proxy.example:1080 je listener SOCKS. Pro povolená připojení k veřejným službám seznam proxy SOCKS5 poskytuje kandidáty hostitele a portu. service.example:443 zůstává cílem. Kontext soukromí uplatňuje své konfigurace proxy na připojení přidružená k tomuto kontextu; vytvoření nesouvisejícího připojení s jinými parametry toto nastavení nedědí.

Toto je rozhraní připojení Network.framework. Přepsání proxy v URLSession nebo nastavení úložiště dat WKWebView konfigurují tyto samostatné spotřebitele. Pro WebSocket postavený na NWConnection musí aplikace také poskytnout příslušné možnosti protokolu WebSocket.

Související články