В 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 протокола.

Подобни статии