Маршрутизація 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 використав той самий маршрут. Тримайте цю явну налагоджувальну конфігурацію в межах передбаченого середовища розробки застосунку.