Rut URLSession-WebSockets gjennom SOCKS5 på iOS 17+
Konfigurer URLSessionWebSocketTask gjennom ein SOCKSv5-proxy på sesjonsnivå på iOS 17 eller nyare, og skil ruting frå WSS-dekryptering.
Dei vanlege HTTPS-førespurnadene til ein iOS-app kan dukke opp i ein feilsøkingsproxy medan WebSocket-trafikken manglar. Identifiser først WebSocket-transporten: URLSessionWebSocketTask kan bruke ein proxykonfigurasjon på sesjonsnivå, medan eit bibliotek som opnar eigne socketar treng si eiga støtta integrering. For ei rå Network.framework-tilkopling på iOS 17+ konfigurerer du NWConnection sin eigen proxykontekst.
På iOS 17 eller nyare opprettar du sesjonen med ein eksplisitt SOCKSv5-proxy:
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)
}Erstatt dokumentasjonsadressa og -porten med den tilgjengelege SOCKS-lyttaren i den eksisterande feilsøkingsproxyen. Slå på den lyttaren i proxyprogrammet. HTTP-lyttaren kan vere på ein annan port.
Opprett webSocketTask frå den returnerte sesjonen. Ei oppgåve som er oppretta via ein annan URLSession, arvar ikkje overstyringa til denne sesjonen. Ein tom proxyConfigurations-matrise brukar systemstandardane; det er ikkje eit eksplisitt val av direkte rute.
Tilgjenge og lesbare meldingar er separate milepælar
Ein fysisk telefon treng ei adresse som når feilsøkingsdatamaskina. På den telefonen angir 127.0.0.1 sjølve telefonen. Kontroller grensesnittet til lyttaren og tillaten klienttilgang for proxyen når tilkoplinga aldri når dit.
Ei SOCKS-rute ber tilkoplinga. Å lese wss-innhald krev i tillegg TLS-inspeksjonsoppsettet til feilsøkingsverktøyet og høveleg tillit på eininga. Sertifikatpinning eller ei eiga TLS-implementering kan hindre den inspeksjonen sjølv når trafikken når lyttaren.
Sjå etter WebSocket-utvekslinga og meldingane etter at tilkoplinga er oppretta. Å sjå berre éin pollingførespurnad frå ein Socket.IO-applikasjon er ikkje prov på at den seinare WebSocket-transporten brukte same rute. Hald denne eksplisitte feilsøkingskonfigurasjonen innanfor den tiltenkte utviklingsomgivinga til appen.