Перейти к содержанию

API статистики трафика

Если в вашей конфигурации установлен секрет API, при выполнении запроса необходимо добавить заголовок Authorization.

Пример:

curl -H 'Authorization: secret' http://ip:port/path

GET /traffic

Этот эндпоинт возвращает JSON-карту идентификаторов клиентов и их статистики трафика.

Ответ:

{
  "wang": {
    "tx": 514,
    "rx": 4017
  },
  "joe": {
    "tx": 7790,
    "rx": 446623
  }
}

Вы также можете использовать параметр запроса clear для обнуления статистики после её возврата:

/traffic?clear=1

POST /kick

Этот эндпоинт позволяет отключать список клиентов по их идентификаторам.

Запрос:

["wang", "joe"]

ПРИМЕЧАНИЕ: Из-за встроенной в клиент логики переподключения он попытается переподключиться после отключения. Чтобы не приходилось повторно отключать одного и того же клиента, следует также заблокировать пользователя в вашем бэкенде аутентификации.

GET /online

Этот эндпоинт возвращает JSON-карту онлайн-клиентов и количества их соединений. Количество соединений здесь относится к количеству экземпляров клиента Hysteria («устройств»), а НЕ к количеству активных прокси-соединений.

Ответ:

{
  "wang": 2,
  "joe": 1
}

GET /dump/streams

Этот эндпоинт возвращает JSON-объект с информацией о каждом QUIC-потоке TCP-прокси-соединения Hysteria.

Ответ:

{
  "streams": [
    {
      "state": "estab", // (1)!
      "auth": "user", // (2)!
      "connection": 3191736581, // (3)!
      "stream": 4, // (4)!
      "req_addr": "192.0.2.1:80", // (5)!
      "hooked_req_addr": "example.com:80", // (6)!
      "tx": 3937, // (7)!
      "rx": 4441, // (8)!
      "initial_at": "2024-11-08T16:07:45.956956773+09:00", // (9)!
      "last_active_at": "2024-11-08T16:07:47.121503203+09:00" // (10)!
    }
  ]
}
  1. Состояние потока. Подробнее см. комментарий здесь.
  2. Пользователь этого потока.
  3. ID QUIC-соединения, несущего этот поток.
  4. ID этого потока в его QUIC-соединении.
  5. Адрес, к которому поток запросил подключение.
  6. Адрес, определённый анализом протокола. Если анализ не включён или не смог получить адрес, значение будет пустой строкой.
  7. Байты tx этого потока (загрузка с точки зрения клиента).
  8. Байты rx этого потока (скачивание с точки зрения клиента).
  9. Время создания этого потока.
  10. Время последней передачи данных этим потоком.

При выполнении запроса к этому API можно добавить Accept: text/plain в заголовок для получения удобочитаемого вывода, аналогичного ss -atn.

Ответ:

State    Auth           Connection   Stream     TX-Bytes     RX-Bytes     Lifetime  Last-Active Req-Addr         Hooked-Req-Addr
ESTAB    user             BE3E0905        4         3937         4441       3.005s        1.84s 192.0.2.1:80     example.com:80