Zwykłe żądania HTTPS aplikacji iOS mogą pojawiać się w proxy debugowania, podczas gdy jej ruch WebSocket nie. Najpierw ustal transport WebSocket: URLSessionWebSocketTask może używać konfiguracji proxy na poziomie sesji, natomiast biblioteka otwierająca własne gniazda wymaga własnej obsługiwanej integracji. W przypadku surowego połączenia Network.framework w iOS 17+ skonfiguruj własny kontekst proxy NWConnection.

W iOS 17 lub nowszym utwórz sesję z jawnym proxy SOCKSv5:

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

Zastąp adres i port z dokumentacji osiągalnym nasłuchem SOCKS istniejącego proxy debugowania. Włącz ten nasłuch w aplikacji proxy. Jej nasłuch HTTP może być na innym porcie.

Utwórz webSocketTask ze zwróconej sesji. Zadanie utworzone przez inną URLSession nie dziedziczy nadpisania tej sesji. Pusta tablica proxyConfigurations używa ustawień domyślnych systemu; nie jest to jawne wybranie trasy bezpośredniej.

Osiągalność i czytelne komunikaty to osobne kamienie milowe

Fizyczny telefon potrzebuje adresu, który dociera do komputera debugowania. W tym telefonie 127.0.0.1 oznacza sam telefon. Sprawdź interfejs nasłuchu i dozwolony dostęp klientów proxy, gdy połączenie nigdy do niego nie dociera.

Trasa SOCKS przenosi połączenie. Odczyt treści wss wymaga dodatkowo konfiguracji inspekcji TLS narzędzia debugowania i odpowiedniego zaufania na urządzeniu. Przypinanie certyfikatów lub osobna implementacja TLS mogą uniemożliwić tę inspekcję nawet wtedy, gdy ruch dociera do nasłuchu.

Po nawiązaniu połączenia szukaj wymiany WebSocket i komunikatów. Widzenie tylko jednego żądania odpytywania z aplikacji Socket.IO nie dowodzi, że jej późniejszy transport WebSocket użył tej samej trasy. Utrzymuj tę jawną konfigurację debugowania w zamierzonym środowisku programistycznym aplikacji.

Powiązane artykuły