Конфигуриране на SOCKS5 проксиране през NWConnection на iOS 17+
Свържете iOS 17 SOCKSv5 ProxyConfiguration с NWParameters.PrivacyContext, преди да създадете NWConnection.
В 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 протокола.