Прокси-соединения через веб-сокет в 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 (ов)? Как я могу отслеживать и (даже лучше) прокси-соединения через веб-сокет?