Op iOS 17 en later kan Network.framework ’n SOCKSv5-proxy deur ’n privaatheidskonteks toepas. Koppel daardie konteks aan die parameters voordat die verbinding geskep word:

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

Die funksie gee ’n TLS-verbinding terug wat nog nie begin het nie. Installeer die toepassing se toestandhantering, begin dit op die beoogde tou en wissel dan die toepassingsprotokol deur sy normale stuur- en ontvangpad uit.

proxy.example:1080 is die SOCKS-luisteraar. Vir toegelate openbare diensverbindings verskaf die SOCKS5-proxylys gasheer- en poortkandidate. service.example:443 bly die bestemming. Die privaatheidskonteks pas sy proxykonfigurasies toe op verbindings wat met daardie konteks geassosieer word; die skep van ’n onverwante verbinding met ander parameters erf nie hierdie opstelling nie.

Dit is Network.framework se verbindingskoppelvlak. ’n URLSession-proxy-oorheersing of ’n WKWebView-databerginstelling konfigureer daardie aparte verbruikers. Vir ’n WebSocket wat op NWConnection gebou is, moet die toepassing ook die toepaslike WebSocket-protokolopsies verskaf.

Verwante artikels