Rutekan WebSocket URLSession melalui SOCKS5 di iOS 17+
Konfigurasikan URLSessionWebSocketTask melalui proxy SOCKSv5 tingkat sesi di iOS 17 atau lebih baru dan pisahkan perutean dari dekripsi WSS.
Permintaan HTTPS biasa aplikasi iOS dapat muncul di proxy debugging sementara lalu lintas WebSocket-nya hilang. Identifikasi dulu transport WebSocket: URLSessionWebSocketTask dapat memakai konfigurasi proxy tingkat sesi, sedangkan pustaka yang membuka soketnya sendiri memerlukan integrasi terdukungnya sendiri. Untuk koneksi Network.framework mentah di iOS 17+, konfigurasikan konteks proxy NWConnection sendiri.
Di iOS 17 atau lebih baru, buat sesi dengan proxy SOCKSv5 eksplisit:
import Foundation
import Network
@available(iOS 17.0, *)
func makeDebugSession() -> URLSession {
let configuration = URLSessionConfiguration.default
let endpoint = NWEndpoint.hostPort(
host: "192.0.2.10", port: 8889)
configuration.proxyConfigurations = [
ProxyConfiguration(socksv5Proxy: endpoint)
]
return URLSession(configuration: configuration)
}Ganti alamat dan port dokumentasi dengan pendengar SOCKS yang dapat dijangkau dari proxy debugging yang ada. Aktifkan pendengar itu di aplikasi proxy. Pendengar HTTP-nya bisa berada di port lain.
Buat webSocketTask dari sesi yang dikembalikan. Tugas yang dibuat melalui URLSession lain tidak mewarisi penimpaan sesi ini. Larik proxyConfigurations kosong memakai default sistem; itu bukan pilihan rute langsung yang eksplisit.
Keterjangkauan dan pesan yang terbaca adalah tonggak terpisah
Ponsel fisik memerlukan alamat yang menjangkau komputer debugging. Di ponsel itu, 127.0.0.1 menunjuk ponsel itu sendiri. Periksa antarmuka pendengar dan akses klien yang diizinkan proxy saat koneksi tidak pernah sampai ke sana.
Rute SOCKS membawa koneksi. Membaca konten wss juga memerlukan penyiapan inspeksi TLS alat debugging dan kepercayaan yang sesuai di perangkat. Pinning sertifikat atau implementasi TLS terpisah dapat mencegah inspeksi itu bahkan saat lalu lintas mencapai pendengar.
Cari pertukaran WebSocket dan pesannya setelah koneksi terbentuk. Melihat hanya satu permintaan polling dari aplikasi Socket.IO bukan bukti bahwa transport WebSocket berikutnya memakai rute yang sama. Pertahankan konfigurasi debugging eksplisit ini dalam lingkungan pengembangan yang dimaksudkan aplikasi.