Прокси-соединения через веб-сокет в iOS NEPacketTunnelProvider с использованием NEKit - PullRequest
0 голосов
/ 23 октября 2018

Когда я использую Charles Proxy для iOS и играю в некоторые игры, я узнаю, что они устанавливают соединения с префиксом протокола «socket: //», за которым следует IP-адрес (вместо имени хоста, которое всегда присутствует для других HTTP (s) соединения).Я бы предположил, что это веб-сокеты.

В настоящее время я пытаюсь реализовать инструмент для отслеживания элементарной сетевой активности.Для архивации я использую NEKit (https://zhuhaow.me/NEKit/) в сочетании с расширением NEPacketTunnelProvider для iOS. С его помощью я смог настроить локальный прокси-сервер HTTP и настроить сетевой интерфейс наперенаправлять каждый запрос HTTP (ов) через этот локальный прокси. Через наблюдателя я смог увидеть все запрошенные имена хостов.

Теперь я обнаружил, что некоторые игры (те, которые используют веб-сокеты) не работаютправильно с моим решением. Что касается этого обсуждения https://news.ycombinator.com/item?id=16694670, похоже, что проксирование потока данных HTTP (s) не позволяет мне обрабатывать подключения к веб-сокету:

Да, но проблемаЧарльз (ну, по крайней мере, связанный с iOS) заключается в том, что веб-сокеты iOS не проходят через настроенный прокси-сервер HTTP. Они просто считаются необработанным сокетом. Таким образом, даже на настольном компьютере Чарльз это nogo.

Из-за этого некоторые приложения даже не работают, когда мой трекер включен, поскольку они не могут установить соединение со своими серверами.

Есть ли возможность архивироватьчто-то похожее для соединений через веб-сокет, поскольку комбинация GCDHTTPProxyServer (NEKit) и NEProxySettings (NetworkExtension) работает только для HTTP (s)?Как я могу отслеживать и (что еще лучше) прокси-соединения с веб-сокетами?

...