På iOS 17 og nyere kan Network.framework anvende en SOCKSv5-proxy via en privatlivskontekst. Tilknyt den kontekst til parametrene, før forbindelsen oprettes:

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)
}

Funktionen returnerer en TLS-forbindelse, der ikke er startet. Installer applikationens tilstandsbehandling, start den på den tilsigtede kø, og udveksl derefter applikationsprotokollen via dens normale send- og modtagelsesvej.

proxy.example:1080 er SOCKS-lytteren. For tilladte offentlige tjenesteforbindelser leverer SOCKS5-proxylisten værts- og portkandidater. service.example:443 forbliver destinationen. Privatlivskonteksten anvender sine proxykonfigurationer på forbindelser, der er knyttet til den kontekst; oprettelse af en urelateret forbindelse med andre parametre arver ikke denne opsætning.

Dette er Network.frameworks forbindelsesgrænseflade. En URLSession-proxyoverskrivning eller en WKWebView-datalagerindstilling konfigurerer disse separate forbrugere. For en WebSocket bygget på NWConnection skal applikationen også levere de relevante WebSocket-protokolindstillinger.

Relaterede artikler