Konfigurasi Proxy SOCKS5 NWConnection di iOS 17+
Lampirkan iOS 17 SOCKSv5 ProxyConfiguration ke NWParameters.PrivacyContext sebelum membuat NWConnection.
Di iOS 17 dan yang lebih baru, Network.framework dapat menerapkan proxy SOCKSv5 melalui konteks privasi. Lampirkan konteks itu ke parameter sebelum membuat koneksi:
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)
}
Fungsi ini mengembalikan koneksi TLS yang belum dimulai. Pasang penanganan status aplikasi, jalankan pada antrean yang dimaksud, lalu tukarkan protokol aplikasi melalui jalur kirim dan terima normalnya.
proxy.example:1080 adalah listener SOCKS. Untuk koneksi layanan publik yang diizinkan, daftar proxy SOCKS5 menyediakan kandidat host dan port. service.example:443 tetap menjadi tujuan. Konteks privasi menerapkan konfigurasi proxy-nya pada koneksi yang terkait dengan konteks tersebut; membuat koneksi tak terkait dengan parameter lain tidak mewarisi pengaturan ini.
Ini adalah antarmuka koneksi Network.framework. Penggantian proxy URLSession atau pengaturan penyimpanan data WKWebView mengonfigurasi konsumen terpisah tersebut. Untuk WebSocket yang dibangun di atas NWConnection, aplikasi juga harus menyediakan opsi protokol WebSocket yang sesuai.