A iOS 17 i posteriors, Network.framework pot aplicar un proxy SOCKSv5 mitjançant un context de privadesa. Adjunta aquest context als paràmetres abans de crear la connexió:

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

La funció retorna una connexió TLS no iniciada. Instal·la la gestió d’estat de l’aplicació, inicia-la a la cua prevista i després intercanvia el protocol de l’aplicació pel seu camí normal d’enviament i recepció.

proxy.example:1080 és l’oient SOCKS. Per a connexions públiques permeses, la llista de proxys SOCKS5 proporciona candidats d’amfitrió i port. service.example:443 continua sent la destinació. El context de privadesa aplica les seves configuracions de proxy a les connexions associades amb aquest context; crear una connexió no relacionada amb altres paràmetres no hereta aquesta configuració.

Aquesta és la interfície de connexió de Network.framework. Una substitució de proxy de URLSession o un paràmetre d’emmagatzematge de dades de WKWebView configuren aquests consumidors separats. Per a un WebSocket construït sobre NWConnection, l’aplicació també ha de proporcionar les opcions de protocol WebSocket adequades.

Articles relacionats