پرش به محتویات

API آمار ترافیک

اگر در پیکربندی شما رمز API تنظیم شده باشد، هنگام ارسال درخواست باید هدر Authorization را اضافه کنید.

مثال:

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

GET /traffic

این endpoint یک map به‌صورت JSON از شناسهٔ کلاینت‌ها به آمار ترافیک آن‌ها برمی‌گرداند.

پاسخ:

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

همچنین می‌توانید از پارامتر پرس‌وجوی clear استفاده کنید تا پس از برگرداندن آمار، مقادیر صفر شوند:

/traffic?clear=1

POST /kick

این endpoint به شما اجازه می‌دهد فهرستی از کلاینت‌ها را با شناسهٔ آن‌ها قطع (kick) کنید.

درخواست:

["wang", "joe"]

توجه: به‌دلیل منطق اتصال مجدد داخلی کلاینت، پس از kick تلاش می‌کند دوباره وصل شود. برای اینکه مجبور نباشید مدام همان کلاینت را kick کنید، باید کاربر را در بک‌اند احراز هویت خود نیز مسدود کنید.

GET /online

این endpoint یک map به‌صورت JSON از کلاینت‌های آنلاین به تعداد اتصال‌های آن‌ها برمی‌گرداند. تعداد اتصال در اینجا به تعداد نمونهٔ کلاینت Hysteria («دستگاه‌ها») اشاره دارد، نه تعداد اتصال‌های فعال پروکسی.

پاسخ:

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

GET /dump/streams

این endpoint یک شیء 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. شناسهٔ اتصال QUIC که این جریان را حمل می‌کند.
  4. شناسهٔ این جریان در همان اتصال QUIC.
  5. آدرسی که این جریان برای اتصال به آن درخواست داده است.
  6. آدرسی که از پروتکل sniff شده است. اگر sniffing فعال نباشد یا دریافت آدرس ناموفق باشد، این مقدار رشتهٔ خالی خواهد بود.
  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