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

Когда я использую 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. Они просто считаются сырым сокетом. Таким образом, даже на настольном компьютере Чарльза нет.

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

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

0 ответов

Другие вопросы по тегам