Pe iOS 17 și versiunile ulterioare, Network.framework poate aplica un proxy SOCKSv5 printr-un context de confidențialitate. Atașați acel context parametrilor înainte de a crea conexiunea:

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

Funcția returnează o conexiune TLS nepornită. Instalați gestionarea stării aplicației, porniți-o pe coada dorită, apoi schimbați protocolul aplicației prin calea normală de trimitere și primire.

proxy.example:1080 este ascultătorul SOCKS. Pentru conexiunile permise către servicii publice, lista de proxy-uri SOCKS5 furnizează candidați de gazdă și port. service.example:443 rămâne destinația. Contextul de confidențialitate aplică configurațiile sale de proxy conexiunilor asociate acelui context; crearea unei conexiuni nelegate cu alți parametri nu moștenește această configurație.

Aceasta este interfața de conexiune a Network.framework. O suprascriere a proxy-ului URLSession sau o setare a depozitului de date WKWebView configurează acei consumatori separați. Pentru un WebSocket construit pe NWConnection, aplicația trebuie să furnizeze și opțiunile de protocol WebSocket adecvate.

Articole similare