Konfigurisanje SOCKS5 proxyja kroz NWConnection na iOS 17+
Povežite iOS 17 SOCKSv5 ProxyConfiguration s NWParameters.PrivacyContext prije kreiranja NWConnection.
Na iOS 17 i novijim verzijama Network.framework može primijeniti SOCKSv5 proxy kroz kontekst privatnosti. Povežite taj kontekst s parametrima prije kreiranja veze:
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)
}
Funkcija vraća nepokrenutu TLS vezu. Instalirajte rukovanje stanjem aplikacije, pokrenite je na predviđenom redu, a zatim razmijenite protokol aplikacije kroz uobičajenu putanju slanja i primanja.
proxy.example:1080 je SOCKS slušalac. Za dopuštene veze s javnim uslugama lista SOCKS5 proxyja daje kandidate za host i port. service.example:443 ostaje odredište. Kontekst privatnosti primjenjuje svoje proxy konfiguracije na veze povezane s tim kontekstom; kreiranje nepovezane veze s drugim parametrima ne nasljeđuje ovo podešavanje.
Ovo je interfejs veza Network.framework. Zamjena proxyja u URLSession ili postavka spremišta podataka WKWebView konfigurišu te odvojene korisnike. Za WebSocket izgrađen na NWConnection, aplikacija također mora dostaviti odgovarajuće opcije WebSocket protokola.