Ρύθμιση διαμεσολάβησης SOCKS5 με NWConnection σε iOS 17+
Συνδέστε ένα iOS 17 SOCKSv5 ProxyConfiguration στο NWParameters.PrivacyContext πριν δημιουργήσετε ένα NWConnection.
Στο iOS 17 και νεότερο, το Network.framework μπορεί να εφαρμόσει διαμεσολάβηση SOCKSv5 μέσω ενός περιβάλλοντος απορρήτου. Συνδέστε αυτό το περιβάλλον στις παραμέτρους πριν δημιουργήσετε τη σύνδεση:
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)
}
Η συνάρτηση επιστρέφει μια σύνδεση TLS που δεν έχει ξεκινήσει. Εγκαταστήστε τη διαχείριση κατάστασης της εφαρμογής, ξεκινήστε την στην προβλεπόμενη ουρά και έπειτα ανταλλάξτε το πρωτόκολλο εφαρμογής μέσω της κανονικής διαδρομής αποστολής και λήψης.
Το proxy.example:1080 είναι ο ακροατής SOCKS. Για επιτρεπόμενες συνδέσεις δημόσιων υπηρεσιών, η λίστα διαμεσολαβητών SOCKS5 παρέχει υποψήφιους κεντρικού υπολογιστή και θύρας. Το service.example:443 παραμένει ο προορισμός. Το περιβάλλον απορρήτου εφαρμόζει τις ρυθμίσεις διαμεσολάβησης σε συνδέσεις που σχετίζονται με αυτό το περιβάλλον· η δημιουργία μιας άσχετης σύνδεσης με άλλες παραμέτρους δεν κληρονομεί αυτή τη ρύθμιση.
Αυτή είναι η διεπαφή σύνδεσης του Network.framework. Μια παράκαμψη διαμεσολάβησης URLSession ή μια ρύθμιση χώρου δεδομένων WKWebView διαμορφώνουν αυτούς τους ξεχωριστούς καταναλωτές. Για ένα WebSocket που βασίζεται σε NWConnection, η εφαρμογή πρέπει επίσης να παρέχει τις κατάλληλες επιλογές πρωτοκόλλου WebSocket.