Konfigurowanie proxy SOCKS5 NWConnection w iOS 17+
Przed utworzeniem NWConnection dołącz iOS 17 SOCKSv5 ProxyConfiguration do NWParameters.PrivacyContext.
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.