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.

Relaterte artikler