Uobičajeni HTTPS zahtjevi iOS aplikacije mogu se pojaviti u proxyju za otklanjanje pogrešaka, dok njezin WebSocket promet nedostaje. Najprije identificirajte WebSocket transport: URLSessionWebSocketTask može koristiti konfiguraciju proxyja na razini sesije, dok biblioteka koja otvara vlastite sockete treba vlastitu podržanu integraciju. Za sirovo Network.framework spoj na iOS 17+ konfigurirajte vlastiti proxy kontekst NWConnection.

Na iOS 17 ili novijem stvorite 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šateljem postojećeg proxyja za otklanjanje pogrešaka. Omogućite taj slušatelj u proxy aplikaciji. Njegov HTTP slušatelj može biti na drugom portu.

Stvorite webSocketTask iz vraćene sesije. Zadatak stvoren kroz drugu URLSession ne nasljeđuje zamjenu ove sesije. Prazan proxyConfigurations niz koristi sistemske zadane vrijednosti; to nije eksplicitan odabir izravne rute.

Dostupnost i čitljive poruke odvojene su prekretnice

Fizički telefon treba adresu koja doseže računalo za otklanjanje pogrešaka. Na tom telefonu 127.0.0.1 označava sam telefon. Provjerite sučelje slušatelja i dopušteni 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 pogrešaka i odgovarajuće povjerenje na uređaju. Pričvršćivanje certifikata ili zasebna TLS implementacija mogu spriječiti tu inspekciju čak i kada promet stigne do slušatelja.

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

Povezani članci