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.