Запись сообщений веб-сокета

Мне нужно расширить HTTP-рекордер для записи трафика веб-сокетов. Регистратор HTTP находится на платформе C / unix.

Я знаю, что HTTP-трафик будет проходить через порт 80 или 443, поэтому я могу его записать. В сообщении HTTP передается новый порт, и через этот порт проходит трафик веб-сокета. Поскольку этот порт является динамическим, и сообщения HTTP будут разными в разных случаях, я не могу проанализировать и получить порт для веб-сокета.

Я думаю о приведенной ниже логике, не уверен, что это сработает. Нужны ваши предложения / указатели по этому поводу.

  • Используйте iptables
  • Перенаправить весь трафик на другой порт (где мое приложение прослушивает) с помощью правил iptable
  • Затем мое приложение должно получить данные (надеюсь, что это возможно)
  • Затем мое приложение должно получить информацию о месте назначения (когда данные перенаправляются из iptables в мое приложение, могу ли я получить фактический ip / порт назначения).
  • Предполагая, что я получаю фактический ip / порт, тогда из моего приложения я могу отправлять данные в фактическое место назначения.

    Я знаю, это долгий путь, сработает ли этот подход.

  • «Я знаю, что HTTP-трафик будет проходить через порт 80 или 443» - обычно, но не всегда. Это порты стандарт, но HTTP-сервер может использовать любой порт, который захочет. Нестандартный порт должен быть явно указан в любом URL-адресе, используемом для доступа к этому серверу.

    Remy Lebeau 26.09.2018 20:14

    «В сообщении HTTP передается новый порт, и через этот порт проходит трафик веб-сокета. Поскольку этот порт является динамическим, и сообщения HTTP будут разными в разных случаях, я не могу проанализировать и получить порт для веб-сокета.» - HTTP сам по себе не связан с WebSocket. Обычно сообщение HTTP будет содержать HTML, который использует сценарии для создания объекта WebSocket, передавая ему URL-адрес ws: или wss: для подключения к серверу WebSocket. В этом случае вы можете просто проанализировать сценарий HTML в поисках этих URL-адресов, тогда вы узнаете и имя хоста, и порт.

    Remy Lebeau 26.09.2018 20:14

    Эта часть «ws:» или «wss:» действительно полезна. Я изучу содержимое HTTP-сообщений и посмотрю, можно ли это реализовать.

    Austin 27.09.2018 04:15

    просто обратите внимание, что сценарий HTML-страницы может быть встроен непосредственно в сам HTML или может находиться по отдельному URL-адресу, на который ссылается HTML. Таким образом, вам может потребоваться выполнить несколько HTTP-запросов для обнаружения адреса WebSocket, к которому вы подключены.

    Remy Lebeau 27.09.2018 04:24
    Альтернативные WebSockets для netty/java: удвоение пропускной способности небольших сообщений
    Альтернативные WebSockets для netty/java: удвоение пропускной способности небольших сообщений
    Этот пост - краткая презентация netty-websocket-http1 - альтернативной netty/java реализации RFC6455 - протокола WebSocket.
    Очень простая установка Websocket с помощью Deno без каких-либо пакетов
    Очень простая установка Websocket с помощью Deno без каких-либо пакетов
    Здесь мы рассмотрим, как можно использовать Websocket в Deno и развернуть его в Deno deploy. Мы будем слушать Websocket, а также отправлять сообщения.
    0
    4
    170
    0

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