En iOS 17 e posteriores, Network.framework pode aplicar un proxy SOCKSv5 mediante un contexto de privacidade. Conecta ese contexto aos parámetros antes de crear a conexión:

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

A función devolve unha conexión TLS non iniciada. Instala o manexo de estado da aplicación, iníciaa na cola prevista e despois intercambia o protocolo da aplicación pola súa ruta normal de envío e recepción.

proxy.example:1080 é o oínte SOCKS. Para as conexións públicas permitidas, a lista de proxies SOCKS5 fornece candidatos de host e porto. service.example:443 segue a ser o destino. O contexto de privacidade aplica as súas configuracións de proxy ás conexións asociadas a ese contexto; crear unha conexión non relacionada con outros parámetros non herda esta configuración.

Esta é a interface de conexión de Network.framework. Unha substitución de proxy de URLSession ou un axuste do almacén de datos de WKWebView configuran eses consumidores separados. Para un WebSocket construído sobre NWConnection, a aplicación tamén debe fornecer as opcións de protocolo WebSocket axeitadas.

Artigos relacionados