Enkursigi URLSession-WebSocket-jn tra SOCKS5 sur iOS 17+
Agordi URLSessionWebSocketTask tra sesinivela SOCKSv5-prokurilo sur iOS 17 aŭ pli nova kaj apartigi enkursigadon de WSS-malĉifrado.
La ordinaraj HTTPS-petoj de iOS-aplikaĵo povas aperi en sencimiga prokurilo dum ĝia WebSocket-trafiko mankas. Unue identigu la WebSocket-transportilon: URLSessionWebSocketTask povas uzi sesinivelan prokurilan agordon, dum biblioteko, kiu malfermas proprajn ingojn, bezonas propran subtenatan integriĝon. Por kruda Network.framework-konekto sur iOS 17+, agordu la propran prokurilan kuntekston de NWConnection.
Sur iOS 17 aŭ pli nova, kreu la sesion kun eksplicita SOCKSv5-prokurilo:
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)
}Anstataŭigu la dokumentaran adreson kaj pordon per la atingebla SOCKS-aŭskultanto de la ekzistanta sencimiga prokurilo. Ŝaltu tiun aŭskultanton en la prokurila aplikaĵo. Ĝia HTTP-aŭskultanto povas esti sur alia pordo.
Kreu la webSocketTask el la redonita sesio. Tasko kreita per alia URLSession ne heredas la anstataŭigon de ĉi tiu sesio. Malplena tabelo proxyConfigurations uzas la sistemajn defaŭltojn; ĝi ne estas eksplicita elekto de rekta vojo.
Atingebleco kaj legeblaj mesaĝoj estas apartaj mejloŝtonoj
Fizika telefono bezonas adreson, kiu atingas la sencimigan komputilon. Sur tiu telefono, 127.0.0.1 nomas la telefonon mem. Kontrolu la aŭskultantan interfacon kaj la permesitan klientan aliron de la prokurilo, kiam la konekto neniam atingas ĝin.
SOCKS-vojo portas la konekton. Legi wss-enhavon krome postulas la TLS-inspektan agordon de la sencimiga ilo kaj taŭgan fidadon sur la aparato. Atestila fiksado aŭ aparta TLS-realigo povas malhelpi tiun inspektadon eĉ kiam la trafiko atingas la aŭskultanton.
Serĉu la WebSocket-interŝanĝon kaj la mesaĝojn post kiam la konekto estas establita. Vidi nur unu enketpeton de Socket.IO-aplikaĵo ne pruvas, ke ĝia posta WebSocket-transportilo uzis la saman vojon. Tenu ĉi tiun eksplicitan sencimigan agordon ene de la intencita evoluiga medio de la aplikaĵo.