Configurarea proxy-ului SOCKS5 al NWConnection pe iOS 17+
Atașați un ProxyConfiguration SOCKSv5 iOS 17 la NWParameters.PrivacyContext înainte de a crea un NWConnection.
Pe iOS 17 și versiunile ulterioare, Network.framework poate aplica un proxy SOCKSv5 printr-un context de confidențialitate. Atașați acel context parametrilor înainte de a crea conexiunea:
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)
}
Funcția returnează o conexiune TLS nepornită. Instalați gestionarea stării aplicației, porniți-o pe coada dorită, apoi schimbați protocolul aplicației prin calea normală de trimitere și primire.
proxy.example:1080 este ascultătorul SOCKS. Pentru conexiunile permise către servicii publice, lista de proxy-uri SOCKS5 furnizează candidați de gazdă și port. service.example:443 rămâne destinația. Contextul de confidențialitate aplică configurațiile sale de proxy conexiunilor asociate acelui context; crearea unei conexiuni nelegate cu alți parametri nu moștenește această configurație.
Aceasta este interfața de conexiune a Network.framework. O suprascriere a proxy-ului URLSession sau o setare a depozitului de date WKWebView configurează acei consumatori separați. Pentru un WebSocket construit pe NWConnection, aplicația trebuie să furnizeze și opțiunile de protocol WebSocket adecvate.