У 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.

Схожі статті