Le normali richieste HTTPS di un'app iOS possono comparire in un proxy di debug mentre il suo traffico WebSocket manca. Identifica prima il trasporto WebSocket: URLSessionWebSocketTask può usare una configurazione proxy a livello di sessione, mentre una libreria che apre socket propri necessita della propria integrazione supportata. Per una connessione Network.framework grezza su iOS 17+, configura il contesto proxy proprio di NWConnection.

Su iOS 17 o successivo, crea la sessione con un proxy SOCKSv5 esplicito:

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)
}

Sostituisci l'indirizzo e la porta della documentazione con l'ascoltatore SOCKS raggiungibile del proxy di debug esistente. Abilita quell'ascoltatore nell'applicazione proxy. Il suo ascoltatore HTTP può essere su un'altra porta.

Crea la webSocketTask dalla sessione restituita. Un'attività creata tramite un'altra URLSession non eredita l'override di questa sessione. Un array proxyConfigurations vuoto usa le impostazioni predefinite di sistema; non è una selezione esplicita di percorso diretto.

Raggiungibilità e messaggi leggibili sono traguardi separati

Un telefono fisico necessita di un indirizzo che raggiunga il computer di debug. Su quel telefono, 127.0.0.1 indica il telefono stesso. Controlla l'interfaccia dell'ascoltatore e l'accesso client consentito del proxy quando la connessione non lo raggiunge mai.

Una rotta SOCKS trasporta la connessione. Leggere il contenuto wss richiede inoltre la configurazione dell'ispezione TLS dello strumento di debug e una fiducia adeguata sul dispositivo. Il pinning dei certificati o un'implementazione TLS separata possono impedire quell'ispezione anche quando il traffico raggiunge l'ascoltatore.

Cerca lo scambio WebSocket e i messaggi dopo che la connessione è stabilita. Vedere solo una richiesta di polling da un'applicazione Socket.IO non prova che il suo successivo trasporto WebSocket abbia usato la stessa rotta. Mantieni questa configurazione di debug esplicita nell'ambiente di sviluppo previsto dall'app.

Articoli correlati