Običajne zahteve HTTPS aplikacije iOS se lahko pojavijo v odklopniškem proxyju, medtem ko njen promet WebSocket manjka. Najprej določite transport WebSocket: URLSessionWebSocketTask lahko uporabi konfiguracijo proxyja na ravni seje, medtem ko knjižnica, ki odpira lastne vtičnice, potrebuje lastno podprto integracijo. Za surovo povezavo Network.framework v iOS 17+ nastavite lastni kontekst proxyja NWConnection.

V iOS 17 ali novejšem ustvarite sejo z izrecnim proxyjem 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)
}

Zamenjajte naslov in vrata iz dokumentacije z dosegljivim poslušalcem SOCKS obstoječega odklopniškega proxyja. Ta poslušalec omogočite v aplikaciji proxy. Njegov poslušalec HTTP je lahko na drugih vratih.

Ustvarite webSocketTask iz vrnjene seje. Opravilo, ustvarjeno prek druge URLSession, ne podeduje prepisa te seje. Prazno polje proxyConfigurations uporablja sistemske privzete vrednosti; to ni izrecna izbira neposredne poti.

Dosegljivost in berljiva sporočila sta ločeni mejnik

Fizični telefon potrebuje naslov, ki doseže računalnik za odpravljanje napak. Na tem telefonu 127.0.0.1 označuje telefon sam. Preverite vmesnik poslušalca in dovoljen dostop odjemalcev proxyja, ko povezava nikoli ne doseže tja.

Pot SOCKS prenaša povezavo. Branje vsebine wss dodatno zahteva nastavitev pregledovanja TLS v orodju za odpravljanje napak in ustrezno zaupanje v napravi. Pripenjanje potrdil ali ločena izvedba TLS lahko to pregledovanje prepreči tudi, ko promet doseže poslušalca.

Po vzpostavitvi povezave poiščite izmenjavo WebSocket in sporočila. Če vidite samo eno zahtevo za anketiranje iz aplikacije Socket.IO, to ni dokaz, da je njen poznejši transport WebSocket uporabil isto pot. To izrecno konfiguracijo za odpravljanje napak ohranite v predvidenem razvojnem okolju aplikacije.

Sorodni članki