Smerovanie WebSocketov URLSession cez SOCKS5 na iOS 17+
Nakonfigurujte URLSessionWebSocketTask cez SOCKSv5 proxy na úrovni relácie na iOS 17 alebo novšom a oddeľte smerovanie od dešifrovania WSS.
Bežné požiadavky HTTPS aplikácie pre iOS sa môžu objaviť v ladiacej proxy, zatiaľ čo jej prevádzka WebSocket chýba. Najprv určite transport WebSocket: URLSessionWebSocketTask môže použiť konfiguráciu proxy na úrovni relácie, kým knižnica, ktorá otvára vlastné sokety, potrebuje vlastnú podporovanú integráciu. Pre surové pripojenie Network.framework na iOS 17+ nakonfigurujte vlastný kontext proxy NWConnection.
Na iOS 17 alebo novšom vytvorte reláciu s explicitnou proxy 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)
}Nahraďte adresu a port z dokumentácie dostupným poslucháčom SOCKS existujúcej ladiacej proxy. Tento poslucháč zapnite v aplikácii proxy. Jej poslucháč HTTP môže byť na inom porte.
Vytvorte webSocketTask z vrátenej relácie. Úloha vytvorená cez inú URLSession nededia prepísanie tejto relácie. Prázdne pole proxyConfigurations používa systémové predvolené hodnoty; nie je to výslovná voľba priamej trasy.
Dostupnosť a čitateľné správy sú samostatné míľniky
Fyzický telefón potrebuje adresu, ktorá dosiahne počítač na ladenie. Na tomto telefóne 127.0.0.1 označuje samotný telefón. Skontrolujte rozhranie poslucháča a povolený prístup klientov proxy, keď sa pripojenie k nemu nikdy nedostane.
Trasa SOCKS prenáša pripojenie. Čítanie obsahu wss navyše vyžaduje nastavenie inšpekcie TLS v ladiacom nástroji a primeranú dôveru v zariadení. Pripnutie certifikátov alebo samostatná implementácia TLS môžu tejto inšpekcii zabrániť aj vtedy, keď prevádzka dosiahne poslucháča.
Po nadviazaní pripojenia hľadajte výmenu WebSocket a správy. Vidieť iba jednu požiadavku na dopytovanie z aplikácie Socket.IO nie je dôkazom, že jej neskorší transport WebSocket použil rovnakú trasu. Udržujte túto výslovnú ladiacu konfiguráciu v zamýšľanom vývojovom prostredí aplikácie.