|
Утилита командной строки 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. |