Мне нужно расширить HTTP-рекордер для записи трафика веб-сокетов. Регистратор HTTP находится на платформе C / unix.
Я знаю, что HTTP-трафик будет проходить через порт 80 или 443, поэтому я могу его записать. В сообщении HTTP передается новый порт, и через этот порт проходит трафик веб-сокета. Поскольку этот порт является динамическим, и сообщения HTTP будут разными в разных случаях, я не могу проанализировать и получить порт для веб-сокета.
Я думаю о приведенной ниже логике, не уверен, что это сработает. Нужны ваши предложения / указатели по этому поводу.
Я знаю, это долгий путь, сработает ли этот подход.
«В сообщении HTTP передается новый порт, и через этот порт проходит трафик веб-сокета. Поскольку этот порт является динамическим, и сообщения HTTP будут разными в разных случаях, я не могу проанализировать и получить порт для веб-сокета.» - HTTP сам по себе не связан с WebSocket. Обычно сообщение HTTP будет содержать HTML, который использует сценарии для создания объекта WebSocket
, передавая ему URL-адрес ws:
или wss:
для подключения к серверу WebSocket. В этом случае вы можете просто проанализировать сценарий HTML в поисках этих URL-адресов, тогда вы узнаете и имя хоста, и порт.
Эта часть «ws:» или «wss:» действительно полезна. Я изучу содержимое HTTP-сообщений и посмотрю, можно ли это реализовать.
просто обратите внимание, что сценарий HTML-страницы может быть встроен непосредственно в сам HTML или может находиться по отдельному URL-адресу, на который ссылается HTML. Таким образом, вам может потребоваться выполнить несколько HTTP-запросов для обнаружения адреса WebSocket, к которому вы подключены.
«Я знаю, что HTTP-трафик будет проходить через порт 80 или 443» - обычно, но не всегда. Это порты стандарт, но HTTP-сервер может использовать любой порт, который захочет. Нестандартный порт должен быть явно указан в любом URL-адресе, используемом для доступа к этому серверу.