Обикновените 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 транспорт е използвал същия маршрут. Дръжте тази явна конфигурация за отстраняване на грешки в рамките на предвидената среда за разработка на приложението.

Подобни статии