Reititä URLSessionin WebSocketit SOCKS5:n kautta iOS 17+:ssa
Määritä URLSessionWebSocketTask istuntotason SOCKSv5-välityspalvelimen kautta iOS 17:ssä tai uudemmassa ja erota reititys WSS:n salauksen purusta.
iOS-sovelluksen tavalliset HTTPS-pyynnöt voivat näkyä virheenkorjausvälityspalvelimessa, kun taas sen WebSocket-liikenne puuttuu. Tunnista ensin WebSocketin siirtotapa: URLSessionWebSocketTask voi käyttää istuntotason välityspalvelinmääritystä, kun taas omat pistokkeensa avaava kirjasto tarvitsee oman tuetun integraationsa. Raakaa Network.framework-yhteyttä varten iOS 17+:ssa määritä NWConnectionin oma välityspalvelinkonteksti.
Määritä iOS 17:ssä tai uudemmassa istunto eksplisiittisellä SOCKSv5-välityspalvelimella:
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)
}Korvaa dokumentaation osoite ja portti olemassa olevan virheenkorjausvälityspalvelimen tavoitettavissa olevalla SOCKS-kuuntelijalla. Ota tämä kuuntelija käyttöön välityspalvelinsovelluksessa. Sen HTTP-kuuntelija voi olla toisessa portissa.
Luo webSocketTask palautetusta istunnosta. Toisen URLSessionin kautta luotu tehtävä ei peri tämän istunnon ohitusta. Tyhjä proxyConfigurations-taulukko käyttää järjestelmän oletuksia; se ei ole suoran reitin eksplisiittinen valinta.
Tavoitettavuus ja luettavat viestit ovat erillisiä virstanpylväitä
Fyysinen puhelin tarvitsee osoitteen, joka tavoittaa virheenkorjaustietokoneen. Siinä puhelimessa 127.0.0.1 tarkoittaa puhelinta itseään. Tarkista kuuntelijan rajapinta ja välityspalvelimen sallittu asiakaspääsy, kun yhteys ei koskaan saavuta sitä.
SOCKS-reitti kuljettaa yhteyden. Wss-sisällön lukeminen vaatii lisäksi virheenkorjaustyökalun TLS-tarkastusasetukset ja asianmukaisen luottamuksen laitteessa. Varmenteen kiinnittäminen tai erillinen TLS-toteutus voi estää tämän tarkastuksen, vaikka liikenne saavuttaisi kuuntelijan.
Etsi WebSocket-vaihto ja viestit, kun yhteys on muodostettu. Pelkän yhden kyselypyynnön näkeminen Socket.IO-sovelluksesta ei todista, että sen myöhempi WebSocket-siirtotapa käytti samaa reittiä. Pidä tämä eksplisiittinen virheenkorjausmääritys sovelluksen tarkoitetussa kehitysympäristössä.