Usmerjanje WebSocketov URLSession prek SOCKS5 na iOS 17+
Nastavite URLSessionWebSocketTask prek proxyja SOCKSv5 na ravni seje v iOS 17 ali novejšem in ločite usmerjanje od dešifriranja WSS.
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.