Konfigurer NWConnection SOCKS5-proxy på iOS 17+
Koble en iOS 17 SOCKSv5 ProxyConfiguration til NWParameters.PrivacyContext før du oppretter en NWConnection.
På iOS 17 og nyere kan Network.framework anvende en SOCKSv5-proxy gjennom en personvernkontekst. Koble denne konteksten til parameterne før forbindelsen opprettes:
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)
}
Funksjonen returnerer en TLS-forbindelse som ikke er startet. Installer applikasjonens tilstandsbehandling, start den på den tiltenkte køen, og utveksle deretter applikasjonsprotokollen gjennom dens vanlige sende- og mottaksvei.
proxy.example:1080 er SOCKS-lytteren. For tillatte tilkoblinger til offentlige tjenester leverer SOCKS5-proxylisten verts- og portkandidater. service.example:443 forblir destinasjonen. Personvernkonteksten anvender proxykonfigurasjonene sine på tilkoblinger som er knyttet til denne konteksten; å opprette en urelatert tilkobling med andre parametere arver ikke dette oppsettet.
Dette er forbindelsesgrensesnittet til Network.framework. En URLSession-proxyoverstyring eller en WKWebView-datalagerinnstilling konfigurerer disse separate forbrukerne. For en WebSocket bygget på NWConnection må applikasjonen også levere de riktige WebSocket-protokollalternativene.