Программирование HTML websocat Sat, January 17 2026  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


websocat Печать
Добавил(а) microsin   

Утилита командной строки websocat [1], написанная на Rust [2], предназначена для обмена сообщениями по протоколу WebSocket.

$ websocat --help

websocat 1.14.1
Vitaly "_Vi" Shukela < vi0oss@gmail.com>
Клиент командной строки для web sockets, наподобие netcat/curl/socat для ws://.

USAGE:

    websocat ws://URL | wss://URL                 (простой клиент)
    websocat -s port                              (простой сервер)
    websocat [FLAGS] [OPTIONS] < addr1> < addr2>  (продвинутый режим)

ФЛАГИ (некоторые флаги скрыты, см. --help=long):

-e, --set-environment

   Установит переменные окружения WEBSOCAT_*, когда выполняется exec:/cmd:/sh-c:
   В настоящее время это WEBSOCAT_URI и WEBSOCAT_CLIENT для запрашиваемого URI
   и адреса клиента (если TCP).

   Остерегайтесь ShellShock или подобных проблем с безопасностью.

-E, --exit-on-eof Закроет направление передачи данных, если другая сторона достигла EOF

--jsonrpc Форматирует сообщения введенные вами как метод вызова JSON RPC 2.0. Первое слово
   становится именем метода, остальное становится параметрами, возможно автоматически
   обернутыми в [].

-0, --null-terminated Использует \0 вместо \n для linemode
     --no-fixups Чтобы распознать, что вставляется автоматически, читайте полное руководство
                по внутренней работе Websocat.

-1, --one-message Отправка и/или прием только одного сообщения. Используется вместе с --no-close
                и/или -u/-U.
    --oneshot Только однократная подача. Не путайте с -1 (--one-message)
    --print-ping-rtts Печатает в stderr время прохождения туда и обратно (round-trip-time)
              после каждого принятого WebSocket pong.

-q Подавляет все диагностические сообщения, кроме ошибок запуска (startup errors)

-s, --server-mode Режим простого сервера: в качестве одиночного аргумента указывается порт TCP
     или связка addr:port
-S, --strict Ограниченный режим line/message: отбрасывание слишком длинных сообщений вместо
    их разделения на части, отбрасывание незавершенных строк.

-k, --insecure Принимать невалидные сертификаты и имена хостов при подключении к TLS.

-u, --unidirectional Запретить копирование данных в одном направлении
-U, --unidirectional-reverse Запретить копирование данных в другом направлении
      или может быть в обоих направлениях в комбинации с -u).

-v Повысить уровень подробности вывода информации (verbosity level).

-b, --binary Отправить сообщение в WebSocket как двоичное.

-n, --no-close Не посылать сообщение Close в websocket при EOF.

-t, --text Послать сообщения в WebSocket как текст.

--base64 Кодировать приходящие двоичные сообщения WebSocket в однострочные one-line Base64.
    Если установлен `--binary-prefix` (см. `--help=full`), то исходящие сообщения WebSocket,
    которые начинаются с префикса, декодируются из base64 перед отправкой.

ОПЦИИ (некоторые опции скрыты, см. --help=long):

--socks5 < auto_socks5> Использовать указанные address:port как SOCKS5 proxy.
      Пример: --socks5 127.0.0.1:9050

--basic-auth < basic_auth> Добавление заголовка HTTP-запроса `Authorization: Basic`
      с этим параметром, закодированном base64. Также доступно как переменная
      окружения WEBSOCAT_BASIC_AUTH.
--basic-auth-file < basic_auth_file>
      Добавление заголовка HTTP-запроса `Authorization: Basic`, закодированным содержимым
      указанного файла.

-B, --buffer-size < buffer_size> Максимальный размер сообщения в байтах [по умолчанию 65536].

--close-reason < close_reason>
      Закрыть соединение с сообщением причины. Эта опция дает эффект только если также
      предоставлена опция --close-status-code.
--close-status-code < close_status_code> Закроет соединение с кодом состояния.

-H, --header < custom_headers>...
      Добавит пользовательский HTTP-заголовок к запросу клиента websocket. Разделяйте двоеточием
      имя заголовка и значение, и опционально одиночным пробелом. Можно использовать несколько
      раз. Обратите внимание, что одна опция -H может принять несколько последующих аргументов
      что приводит к неожиданным ошибкам. Указывайте заголовки в конце, или указывайте их
      с помощью знака присваивания наподобие -H='X: y'.
--server-header < custom_reply_headers>...
      Добавит пользовательский заголовок HTTP к ответу websocket upgrade. Разделяйте двоеточием
      имя заголовка и значение, и опционально одиночным пробелом. Можно использовать несколько
      раз. Обратите внимание, что одна опция -H может принять несколько последующих аргументов
      что приводит к неожиданным ошибкам.
--header-to-env < headers_to_env>...
      Перенаправит указанный заголовок пришедшего запроса в переменную окружения H_*
      для указаний наподобие `exec:`.

-h, --help < help>
      Вывод подсказки.
--help=short Список простых типов опций и адреса.
--help=long Список всех опций и типов (см. маркеры [A]).
--help=doc Также покажет увеличенное описание и примеры.

--max-messages < max_messages>
      Максимальное количество сообщений для копирования в одном направлении.

--max-messages-rev < max_messages_rev>
      Максимальное количество сообщений для копирования в другом направлении.

--conncap < max_parallel_conns>
      Максимальное количество одновременных соединений для режима прослушивания (listening)

--origin < origin> Добавит HTTP-заголовок Origin HTTP к запросу клиента websocket.

--pkcs12-der < pkcs12_der> Нужен архив Pkcs12, чтобы принять соединения SSL, сертификат и ключ.
      Команда для их вывода: openssl pkcs12 -export -out output.pkcs12 -inkey key.pem -in cert.pem.
      Используйте с опцией -s (--server-mode) или с указанными вручную оверлеями TLS.
      Для дополнительной информации см. moreexamples.md.
--pkcs12-passwd < pkcs12_passwd>
      Пароль для архива --pkcs12-der pkcs12. Требуется на Mac.

-p, --preamble < preamble>...
      Предварительно добавляет указанную строку к скопированным данным. Может указываться
      несколько раз.

-P, --preamble-reverse < preamble_reverse>...
      Предварительно добавляет указанную строку к скопированным данным (в обратном
      направлении). Может указываться несколько раз.

--restrict-uri < restrict_uri>
      Когда обслуживается websocket, принимается только указанный URI, наподобие `/ws`
      Это освобождает другие URI от таких вещей, как обслуживание статических файлов
      или прокси.

-F, --static-file < serve_static_files>...
      Обслуживает именованный статический файл для соединений non-websocket.
      Синтаксис аргумента: < URI>:< Content-Type>:< file-path>
      Пример аргумента: /index.html:text/html:index.html
      Каталоги не поддерживаются и не будут поддерживаться по соображениям безопасности.
      Может указываться несколько раз. Рекомендуется указывать это в конце или
      с помощью знака присваивания наподобие `-F=...`, иначе эта опция может съесть
      позиционные аргументы.

--ua < useragent> Установит заголовок запроса `User-Agent` в это значение. Подобно
      установке с помощью `-H`.

--protocol < websocket_protocol>
      Укажите этот заголовок Sec-WebSocket-Protocol: при подключении.

--server-protocol < websocket_reply_protocol>
      Принудительно использовать этот заголовок Sec-WebSocket-Protocol: при принятии подключения.

--websocket-version < websocket_version>
      Переназначить значение Sec-WebSocket-Version.

--ping-interval < ws_ping_interval>
      Отправлять пинги WebSocket с интервалом в это указанное количество секунд.
--ping-timeout < ws_ping_timeout>
      Отбросить соединение WebSocket, если Pong сообщение не было принято в течение этого
      таймаута в секундах.

АРГУМЕНТЫ:

< addr1> В простом режиме WebSocket URL для соединения. В расширенном режиме первый адрес
      (есть много видов адресов) для использования. Сведения о типах адресов см. в --help=types.
      Если это адрес для прослушивания, то websocat попытается обслуживать несколько подключений.

< addr2> В расширенном режиме это второй адрес для подключения. Если это адрес для
       прослушивания, то websocat попытается обслуживать только одно подключение.

БАЗОВЫЕ ПРИМЕРЫ

Command-line websocket client:
    websocat ws://ws.vi-server.org/mirror/

WebSocket server:
    websocat -s 8080

WebSocket-to-TCP proxy:
    websocat --binary ws-l:127.0.0.1:8080 tcp:127.0.0.1:5678

Частичный список типов адресов:

ws://       Insecure (ws://) WebSocket client. Аргумент это хост и URL.
wss://      Secure (wss://) WebSocket client. Аргумент это хост и URL.
ws-listen:  WebSocket server. Аргумент это хост и порт для прослушивания.
wss-listen: Прослушивание соединений secure WebSocket на порту TCP.
tcp:        Подключение к указанному хосту и порту TCP. Аргумент это адрес сокета.
tcp-listen: Прослушивание порта TCP на указанном адресе.
ssl-listen: Прослушивание соединений SSL на порту TCP.
sh-c:       Запуск указанной команды с помощью `sh -c` (даже на Windows).
cmd:        Запуск указанной командной строки с помощью `sh -c` или `cmd /C`
            (в зависимости от платформы).
readfile:   Синхронно читает файл. Аргумент это путь до файла.
writefile:  Синхронно обрезает и записывает файл.
appendfile: Синхронно добавляет данные к файлу.
udp:        Отправка и прием пакетов в указанный сокет UDP, из случайного порта UDP.
udp-listen: Привязка сокета UDP к указанным host:port, прием пакета.
-           Чтение ввода из консоли, печать в консоль. Использует многопоточную
            реализацию даже в UNIX, если этого не требует параметр CLI '--async-stdio'.
mirror:     Простое копирования вывода на ввод. Никакие аргументы не нужны.
literalreply: Ответ указанной строкой на каждый входной пакет.
literal:    Вывод строки, отбрасывание ввода.
random:     Генерирует случайные байты при чтении из, отбрасывает записанные байты.

Частичный список оверлеев:

broadcast:     Повторное использование этого соединения для обслуживания нескольких
               клиентов, отправка отвевтов всем клиентам.
autoreconnect: Восстановление основного соединения при любой ошибке или EOF.
foreachmsg:    Запустить что-нибудь для каждого приходящего сообщения.
log:           Лог каждого буфера, когда он проходит через нижележащий коннектор.

Большее количество типов адресов см. с опцией --help=long.

См. короткие примеры и имена --dump-spec для большинства типов адресов и оверлеев
с опцией --help=doc.

[Ссылки]

1. vi/websocat https://github.com/vi/websocat.

 

Добавить комментарий


Защитный код
Обновить

Top of Page