На iOS 17 и новијим верзијама Network.framework може применити SOCKSv5 прокси кроз контекст приватности. Повежите тај контекст са параметрима пре креирања везе:

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

Функција враћа непокренуту TLS везу. Инсталирајте руковање стањем апликације, покрените је на предвиђеном реду, а затим размените протокол апликације уобичајеним путем слања и примања.

proxy.example:1080 је SOCKS слушалац. За дозвољене везе са јавним услугама листа SOCKS5 проксија даје кандидате за хост и порт. service.example:443 остаје одредиште. Контекст приватности примењује своје прокси конфигурације на везе повезане са тим контекстом; креирање неповезане везе са другим параметрима не наслеђује ово подешавање.

Ово је интерфејс веза Network.framework. Замена проксија у URLSession или поставка складишта података WKWebView конфигуришу те одвојене кориснике. За WebSocket изграђен на NWConnection, апликација такође мора да достави одговарајуће опције WebSocket протокола.

Повезани чланци