Configurare il proxy SOCKS5 di NWConnection su iOS 17+
Collega una ProxyConfiguration SOCKSv5 di iOS 17 a NWParameters.PrivacyContext prima di creare una NWConnection.
Su iOS 17 e versioni successive, Network.framework può applicare un proxy SOCKSv5 tramite un contesto di privacy. Collega quel contesto ai parametri prima di creare la connessione:
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)
}
La funzione restituisce una connessione TLS non avviata. Installa la gestione dello stato dell’app, avviala sulla coda prevista, quindi scambia il protocollo dell’app tramite il suo normale percorso di invio e ricezione.
proxy.example:1080 è il listener SOCKS. Per le connessioni ai servizi pubblici consentite, l’elenco di proxy SOCKS5 fornisce candidati host e porta. service.example:443 resta la destinazione. Il contesto di privacy applica le sue configurazioni proxy alle connessioni associate a quel contesto; creare una connessione non correlata con altri parametri non eredita questa configurazione.
Questa è l’interfaccia di connessione di Network.framework. Una sostituzione del proxy di URLSession o un’impostazione dell’archivio dati di WKWebView configurano quei consumatori separati. Per un WebSocket basato su NWConnection, l’app deve anche fornire le opzioni del protocollo WebSocket appropriate.