Enrutar los WebSocket de URLSession por SOCKS5 en iOS 17+
Configura URLSessionWebSocketTask a través de un proxy SOCKSv5 a nivel de sesión en iOS 17 o posterior y separa el enrutamiento del descifrado WSS.
Las peticiones HTTPS habituales de una app de iOS pueden aparecer en un proxy de depuración mientras su tráfico WebSocket falta. Identifica primero el transporte WebSocket: URLSessionWebSocketTask puede usar una configuración de proxy a nivel de sesión, mientras que una biblioteca que abre sus propios sockets necesita su propia integración compatible. Para una conexión Network.framework sin procesar en iOS 17+, configura el contexto de proxy propio de NWConnection.
En iOS 17 o posterior, crea la sesión con un proxy SOCKSv5 explícito:
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)
}Sustituye la dirección y el puerto de la documentación por el receptor SOCKS accesible del proxy de depuración existente. Activa ese receptor en la aplicación de proxy. Su receptor HTTP puede estar en otro puerto.
Crea la webSocketTask a partir de la sesión devuelta. Una tarea creada mediante otra URLSession no hereda la anulación de esta sesión. Una matriz proxyConfigurations vacía usa los valores predeterminados del sistema; no es una selección explícita de ruta directa.
Alcanzabilidad y mensajes legibles son hitos separados
Un teléfono físico necesita una dirección que llegue al ordenador de depuración. En ese teléfono, 127.0.0.1 designa al propio teléfono. Comprueba la interfaz del receptor y el acceso de clientes permitido del proxy cuando la conexión nunca llega a él.
Una ruta SOCKS transporta la conexión. Leer contenido wss requiere además la configuración de inspección TLS de la herramienta de depuración y una confianza adecuada en el dispositivo. La fijación de certificados o una implementación TLS separada pueden impedir esa inspección incluso cuando el tráfico llega al receptor.
Busca el intercambio WebSocket y los mensajes después de establecer la conexión. Ver solo una petición de sondeo de una aplicación Socket.IO no demuestra que su transporte WebSocket posterior usara la misma ruta. Mantén esta configuración de depuración explícita dentro del entorno de desarrollo previsto de la app.