Маршрутызацыя WebSocket у URLSession праз SOCKS5 на iOS 17+
Наладзьце URLSessionWebSocketTask праз праксі SOCKSv5 на ўзроўні сесіі на iOS 17 або навей і аддзяліце маршрутызацыю ад расшыфроўкі WSS.
Звычайныя HTTPS-запыты праграмы iOS могуць з'яўляцца ў праксі для адладкі, а яе трафік WebSocket пры гэтым адсутнічае. Спачатку вызначце транспарт WebSocket: URLSessionWebSocketTask можа выкарыстоўваць канфігурацыю праксі на ўзроўні сесіі, а бібліятэка, якая адкрывае ўласныя сокеты, патрабуе ўласнай падтрыманай інтэграцыі. Для неапрацаванага злучэння Network.framework на iOS 17+ наладзьце уласны кантэкст праксі NWConnection.
На iOS 17 або навей стварыце сесію з яўным праксі 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)
}Замяніце адрас і порт з дакументацыі на даступны слухач SOCKS існуючага праксі для адладкі. Уключыце гэты слухач у праграме праксі. Яго HTTP-слухач можа быць на іншым порце.
Стварыце webSocketTask з вернутай сесіі. Задача, створаная праз іншую URLSession, не атрымлівае ў спадчыну перавызначэнне гэтай сесіі. Пусты масіў proxyConfigurations выкарыстоўвае сістэмныя значэнні па змаўчанні; гэта не яўны выбар прамога маршруту.
Дасягальнасць і чытэльныя паведамленні — асобныя этапы
Фізічнаму тэлефону патрэбны адрас, які дасягае камп'ютара для адладкі. На гэтым тэлефоне 127.0.0.1 пазначае сам тэлефон. Праверце інтэрфейс слухача і дазволены доступ кліентаў праксі, калі злучэнне ніколі не дасягае яго.
Маршрут SOCKS пераносіць злучэнне. Чытанне змесціва wss дадаткова патрабуе наладкі інспекцыі TLS у інструменце адладкі і адпаведнага даверу на прыладзе. Замацаванне сертыфікатаў або асобная рэалізацыя TLS могуць перашкодзіць гэтай інспекцыі нават тады, калі трафік дасягае слухача.
Шукайце абмен WebSocket і паведамленні пасля ўсталявання злучэння. Бачыць толькі адзін запыт апытання ад праграмы Socket.IO — не доказ таго, што яе наступны транспарт WebSocket выкарыстаў той жа маршрут. Трымайце гэтую яўную канфігурацыю адладкі ў межах прызначанага асяроддзя распрацоўкі праграмы.