Permintaan HTTPS biasa aplikasi iOS boleh muncul dalam proksi penyahpepijatan manakala trafik WebSocket-nya hilang. Kenal pasti dahulu pengangkutan WebSocket: URLSessionWebSocketTask boleh menggunakan konfigurasi proksi peringkat sesi, manakala pustaka yang membuka soketnya sendiri memerlukan integrasi tersokongnya sendiri. Untuk sambungan Network.framework mentah pada iOS 17+, konfigurasikan konteks proksi NWConnection sendiri.

Pada iOS 17 atau lebih baharu, cipta sesi dengan proksi SOCKSv5 yang 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)
}

Gantikan alamat dan port dokumentasi dengan pendengar SOCKS yang boleh dicapai bagi proksi penyahpepijatan sedia ada. Dayakan pendengar itu dalam aplikasi proksi. Pendengar HTTP-nya boleh berada pada port lain.

Cipta webSocketTask daripada sesi yang dikembalikan. Tugas yang dicipta melalui URLSession lain tidak mewarisi pengatasan sesi ini. Tatasusunan proxyConfigurations kosong menggunakan lalai sistem; ia bukan pilihan laluan terus yang eksplisit.

Kebolehcapaian dan mesej boleh baca ialah pencapaian berasingan

Telefon fizikal memerlukan alamat yang mencapai komputer penyahpepijatan. Pada telefon itu, 127.0.0.1 menamakan telefon itu sendiri. Semak antara muka pendengar dan akses klien yang dibenarkan proksi apabila sambungan tidak pernah mencapainya.

Laluan SOCKS membawa sambungan. Membaca kandungan wss juga memerlukan persediaan pemeriksaan TLS alat penyahpepijatan dan kepercayaan yang sesuai pada peranti. Penyematan sijil atau pelaksanaan TLS berasingan boleh menghalang pemeriksaan itu walaupun trafik mencapai pendengar.

Cari pertukaran WebSocket dan mesej selepas sambungan diwujudkan. Melihat hanya satu permintaan pengundian daripada aplikasi Socket.IO bukan bukti bahawa pengangkutan WebSocket kemudiannya menggunakan laluan yang sama. Kekalkan konfigurasi penyahpepijatan eksplisit ini dalam persekitaran pembangunan yang dimaksudkan aplikasi.

Artikel berkaitan