W iOS 17 i nowszych Network.framework może stosować proxy SOCKSv5 przez kontekst prywatności. Dołącz ten kontekst do parametrów przed utworzeniem połączenia:

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

Funkcja zwraca nieuruchomione połączenie TLS. Zainstaluj obsługę stanu aplikacji, uruchom ją w zamierzonej kolejce, a następnie wymieniaj protokół aplikacji zwykłą ścieżką wysyłania i odbierania.

proxy.example:1080 to nasłuchiwacz SOCKS. Dla dozwolonych połączeń z usługami publicznymi lista proxy SOCKS5 dostarcza kandydatów hosta i portu. service.example:443 pozostaje miejscem docelowym. Kontekst prywatności stosuje swoje konfiguracje proxy do połączeń powiązanych z tym kontekstem; utworzenie niepowiązanego połączenia z innymi parametrami nie dziedziczy tego ustawienia.

To interfejs połączeń Network.framework. Zastąpienie proxy w URLSession lub ustawienie magazynu danych WKWebView konfigurują tych odrębnych konsumentów. W przypadku WebSocket zbudowanego na NWConnection aplikacja musi również dostarczyć odpowiednie opcje protokołu WebSocket.

Powiązane artykuły