API کنترل خارجی (پیش‌فرض 127.0.0.1:9090) هر کار رابط کاربری را اسکریپت‌پذیر می‌کند. نمونه‌های آماده اجرا - PowerShell خالص، بدون نصب چیزی.

نمونه ۱: خواندن و تعویض نود

# وضعیت گروه "Select"
Invoke-RestMethod "http://127.0.0.1:9090/proxies/Select"

# تعویض به نود مشخص
Invoke-RestMethod -Method Put -Uri "http://127.0.0.1:9090/proxies/Select" -Body '{"name":"HK 01"}' -ContentType "application/json"

نمونه ۲: انتخاب خودکار کمترین تأخیر

$group = "Select"
$info = Invoke-RestMethod "http://127.0.0.1:9090/proxies/$group"
$best = $null; $bestDelay = [int]::MaxValue
foreach ($name in $info.all) {
  try {
    $r = Invoke-RestMethod ("http://127.0.0.1:9090/proxies/$name/delay?timeout=3000&url=" +
      [uri]::EscapeDataString("http://www.gstatic.com/generate_204"))
    if ($r.delay -lt $bestDelay) { $bestDelay = $r.delay; $best = $name }
  } catch {}
}
if ($best) {
  Invoke-RestMethod -Method Put -Uri "http://127.0.0.1:9090/proxies/$group" -Body (@{name=$best} | ConvertTo-Json) -ContentType "application/json"
  "switched to $best ($bestDelay ms)"
}

به‌صورت .ps1 ذخیره و در Task Scheduler ساعتی اجرا کنید - انتخاب‌گر خودکاری کنترل‌پذیرتر از url-test (مثلاً فقط در ساعات مشخص).

نمونه ۳: بستن همه اتصال‌ها

Invoke-RestMethod -Method Delete "http://127.0.0.1:9090/connections"

بازسازی اجباری همه چیز پس از تعویض - همان دکمه جاروی UI.

نمونه ۴: تغییر حالت خروجی

Invoke-RestMethod -Method Patch -Uri "http://127.0.0.1:9090/configs" -Body '{"mode":"Global"}' -ContentType "application/json"

نکته‌ها

  • اگر secret دارید، به هر فراخوان -Headers @{Authorization = "Bearer رمز-شما"} بیفزایید.
  • فهرست endpointها در معرفی API.
  • API وضعیت لحظه‌ای را عوض می‌کند؛ بارگذاری مجدد پروفایل مقادیر فایل را برمی‌گرداند.
نکته: برای داشبورد و هشدار ترافیک، جریان‌های GET /traffic و GET /connections را مصرف کنید نه polling.