Налаштування проксі SOCKS5 для NWConnection на iOS 17+
Перед створенням NWConnection підключіть iOS 17 SOCKSv5 ProxyConfiguration до NWParameters.PrivacyContext.
У 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.