På iOS 17 og nyare kan Network.framework bruke ein SOCKSv5-proxy via ein personvernkontekst. Kopla den konteksten til parametrane før tilkoplinga blir oppretta:

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 ei TLS-tilkopling som ikkje er starta. Installer tilstandsbehandlinga til appen, start henne i den tiltenkte køen og byt deretter applikasjonsprotokollen gjennom den vanlege sende- og mottekvegen.

proxy.example:1080 er SOCKS-lyttaren. For tillatne tilkoplingar til offentlege tenester leverer SOCKS5-proxylista verts- og portkandidatar. service.example:443 blir verande destinasjonen. Personvernkonteksten brukar proxykonfigurasjonane sine på tilkoplingar som er knytte til den konteksten; å opprette ei urelatert tilkopling med andre parametrar arvar ikkje dette oppsettet.

Dette er tilkoplingsgrensesnittet til Network.framework. Ei URLSession-proxyoverstyring eller ei WKWebView-datalagerinnstilling konfigurerer desse separate forbrukarane. For ein WebSocket bygd på NWConnection må appen òg levera dei rette WebSocket-protokollvala.

Relaterte artiklar