Uobičajeni HTTPS zahtjevi iOS aplikacije mogu se pojaviti u proxyju za otklanjanje grešaka, dok njen WebSocket saobraćaj nedostaje. Prvo identificirajte WebSocket transport: URLSessionWebSocketTask može koristiti konfiguraciju proxyja na nivou sesije, dok biblioteka koja otvara vlastite sockete treba vlastitu podržanu integraciju. Za sirovu Network.framework vezu na iOS 17+ konfigurirajte vlastiti proxy kontekst NWConnection.

Na iOS 17 ili novijem kreirajte sesiju s eksplicitnim SOCKSv5 proxyjem:

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

Zamijenite adresu i port iz dokumentacije dostupnim SOCKS slušaocem postojećeg proxyja za otklanjanje grešaka. Omogućite taj slušalac u proxy aplikaciji. Njen HTTP slušalac može biti na drugom portu.

Kreirajte webSocketTask iz vraćene sesije. Zadatak kreiran kroz drugu URLSession ne nasljeđuje zamjenu ove sesije. Prazan proxyConfigurations niz koristi sistemske zadane vrijednosti; to nije eksplicitan izbor direktne rute.

Dostupnost i čitljive poruke su odvojene prekretnice

Fizički telefon treba adresu koja doseže računar za otklanjanje grešaka. Na tom telefonu 127.0.0.1 označava sam telefon. Provjerite interfejs slušaoca i dozvoljeni pristup klijenata proxyja kada veza nikada ne stigne do njega.

SOCKS ruta nosi vezu. Čitanje wss sadržaja dodatno zahtijeva postavku TLS inspekcije u alatu za otklanjanje grešaka i odgovarajuće povjerenje na uređaju. Prikvačivanje certifikata ili zasebna TLS implementacija mogu spriječiti tu inspekciju čak i kada saobraćaj stigne do slušaoca.

Tražite WebSocket razmjenu i poruke nakon uspostavljanja veze. Vidjeti samo jedan zahtjev za anketiranje iz Socket.IO aplikacije nije dokaz da je njen kasniji WebSocket transport koristio istu rutu. Držite ovu eksplicitnu konfiguraciju za otklanjanje grešaka unutar predviđenog razvojnog okruženja aplikacije.

Povezani članci