Lei URLSession-WebSocket deur SOCKS5 op iOS 17+
Stel URLSessionWebSocketTask deur 'n sessievlak-SOCKSv5-volmag op iOS 17 of later en skei herleiding van WSS-ontsyphering.
'n iOS-app se gewone HTTPS-versoeke kan in 'n ontfoutingsvolmag verskyn terwyl sy WebSocket-verkeer ontbreek. Identifiseer eers die WebSocket-transport: URLSessionWebSocketTask kan 'n sessievlak-volmagkonfigurasie gebruik, terwyl 'n biblioteek wat sy eie sokkels oopmaak, sy eie ondersteunde integrasie nodig het. Vir 'n rou Network.framework-verbinding op iOS 17+, stel NWConnection se eie volmagkonteks op.
Vir iOS 17 of later, skep die sessie met 'n eksplisiete SOCKSv5-volmag:
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)
}Vervang die dokumentasie-adres en -poort met die bereikbare SOCKS-luisteraar van die bestaande ontfoutingsvolmag. Aktiveer daardie luisteraar in die volmagtoepassing. Sy HTTP-luisteraar kan op 'n ander poort wees.
Skep die webSocketTask vanaf die teruggekeerde sessie. 'n Taak wat deur 'n ander URLSession geskep is, erf nie hierdie sessie se oorheersing nie. 'n Leë proxyConfigurations-skikking gebruik die stelselverstek; dit is nie 'n eksplisiete keuse vir 'n direkte roete nie.
Bereikbaarheid en leesbare boodskappe is aparte mylpale
'n Fisiese foon het 'n adres nodig wat die ontfoutingsrekenaar bereik. Op daardie foon dui 127.0.0.1 op die foon self. Kontroleer die luisteraarkoppelvlak en die volmag se toegelate kliënttoegang wanneer die verbinding nooit daar aankom nie.
'n SOCKS-roete dra die verbinding. Om wss-inhoud te lees, vereis bykomend die ontfoutingsnutsding se TLS-inspeksie-opstelling en gepaste vertroue op die toestel. Sertifikaatspenning of 'n aparte TLS-implementering kan daardie inspeksie verhoed selfs wanneer verkeer die luisteraar bereik.
Soek die WebSocket-uitruiling en boodskappe nadat die verbinding gevestig is. Om net 'n peilingsversoek van 'n Socket.IO-toepassing te sien, is nie bewys dat sy latere WebSocket-transport dieselfde roete gebruik het nie. Hou hierdie eksplisiete ontfoutingskonfigurasie binne die app se beoogde ontwikkelingsopstelling.