API внешнего управления (по умолчанию 127.0.0.1:9090) делает скриптуемым каждое действие интерфейса. Ниже готовые примеры - чистый PowerShell, ничего ставить не нужно.
Пример 1: запрос и переключение узла
# состояние группы "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"
Пример 2: автовыбор узла с минимальной задержкой
$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 и повесьте на планировщик задач раз в час - получите автоселектор управляемее url-test (например, активный только в нужные часы).
Пример 3: закрыть все соединения
Invoke-RestMethod -Method Delete "http://127.0.0.1:9090/connections"
Принудительное пересоздание всего после переключения - то же, что кнопка-метла в UI.
Пример 4: сменить режим маршрутизации
Invoke-RestMethod -Method Patch -Uri "http://127.0.0.1:9090/configs" -Body '{"mode":"Global"}' -ContentType "application/json"
Заметки
- С заданным
secretк каждому вызову добавляйте-Headers @{Authorization = "Bearer ваш-секрет"}. - Каталог эндпоинтов - во введении в API.
- API меняет состояние на лету; перезагрузка профиля возвращает значения из конфига.
GET /traffic и GET /connections вместо опроса.