URLSession WebSocket srautų nukreipimas per SOCKS5 iOS 17+
Sukonfigūruokite URLSessionWebSocketTask per sesijos lygio SOCKSv5 tarpinį serverį iOS 17 arba naujesnėje versijoje ir atskirkite maršrutizavimą nuo WSS iššifravimo.
Įprastos iOS programos HTTPS užklausos gali pasirodyti derinimo tarpiniame serveryje, o jos WebSocket srautas nematomas. Pirmiausia nustatykite WebSocket transportą: URLSessionWebSocketTask gali naudoti sesijos lygio tarpinio serverio konfigūraciją, o biblioteka, atidaranti savo lizdus, turi turėti savo palaikomą integraciją. Jei iOS 17+ naudojate neapdorotą Network.framework ryšį, sukonfigūruokite NWConnection savą tarpinio serverio kontekstą.
iOS 17 arba naujesnėje versijoje sukurkite sesiją su aiškiu SOCKSv5 tarpiniu serveriu:
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)
}Pakeiskite dokumentacijos adresą ir prievadą pasiekiamu esamo derinimo tarpinio serverio SOCKS klausytuvu. Įjunkite tą klausytuvą tarpinio serverio programoje. Jo HTTP klausytuvas gali būti kitame prievade.
Sukurkite webSocketTask iš grąžintos sesijos. Užduotis, sukurta per kitą URLSession, nepaveldi šios sesijos perrašymo. Tuščias proxyConfigurations masyvas naudoja sistemos numatytuosius nustatymus; tai nėra aiškus tiesioginio maršruto pasirinkimas.
Pasiekiamumas ir skaitomi pranešimai yra atskiri etapai
Fiziniam telefonui reikia adreso, kuris pasiektų derinimo kompiuterį. Tame telefone 127.0.0.1 žymi patį telefoną. Patikrinkite klausytuvo sąsają ir tarpinio serverio leidžiamą klientų prieigą, kai ryšys niekada jo nepasiekia.
SOCKS maršrutas perneša ryšį. Norint skaityti wss turinį, papildomai reikia derinimo įrankio TLS tikrinimo sąrankos ir tinkamo pasitikėjimo įrenginyje. Sertifikatų prisegimas arba atskira TLS implementacija gali sutrukdyti tam tikrinimui net tada, kai srautas pasiekia klausytuvą.
Po ryšio užmezgimo ieškokite WebSocket mainų ir pranešimų. Matyti tik vieną apklausos užklausą iš Socket.IO programos nėra įrodymas, kad vėlesnis jos WebSocket transportas naudojo tą patį maršrutą. Laikykite šią aiškią derinimo konfigūraciją numatytoje programos kūrimo aplinkoje.