Configurar o proxy SOCKS5 do NWConnection no iOS 17+
Anexe um ProxyConfiguration SOCKSv5 do iOS 17 ao NWParameters.PrivacyContext antes de criar um NWConnection.
No iOS 17 e posteriores, o Network.framework pode aplicar um proxy SOCKSv5 por meio de um contexto de privacidade. Anexe esse contexto aos parâmetros antes de criar a conexão:
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)
}
A função retorna uma conexão TLS não iniciada. Instale o tratamento de estado do aplicativo, inicie-o na fila pretendida e troque o protocolo do aplicativo pelo seu caminho normal de envio e recebimento.
proxy.example:1080 é o ouvinte SOCKS. Para conexões públicas permitidas, a lista de proxies SOCKS5 fornece candidatos de host e porta. service.example:443 continua sendo o destino. O contexto de privacidade aplica suas configurações de proxy às conexões associadas a esse contexto; criar uma conexão não relacionada com outros parâmetros não herda essa configuração.
Esta é a interface de conexão do Network.framework. Uma substituição de proxy do URLSession ou uma configuração de armazenamento de dados do WKWebView configuram esses consumidores separados. Para um WebSocket construído sobre NWConnection, o aplicativo também deve fornecer as opções de protocolo WebSocket apropriadas.