Открыл для себя важный функционал #singbox — Clash API, а конкретно апишка переключения прокси.
Особый тип outbound-а "selector" позволяет создать группу аутбаундов и менять выбранный прокси на лету без перезапуска sing-box и без разрыва активных соединений! Не придётся переподключать SSH-клиент, например.
Внизу поста сниппет конфига.
Управлять селектором можно через панельки для Clash API, см. zashboard и yacd-meta — либо захостить у себя локально, либо открыть вебаппу по ссылке в репозитории. Во втором случае раскомментируйте allow_private_network в сниппете (да, из-за CORS).
А можно и вручную слать запросы, апи довольно простой:
- смена прокси на my-vless
curl -X PUT -H 'Authorization: Bearer my-password' -d '{"name":"my-vless"}' 127.0.0.1:9090/proxies/selector1 - вывод списка проксей (outbound-ов)
curl -H 'Authorization: Bearer my-password' 127.0.0.1:9090/proxies
Предпочитаю ставить пароль на апишку даже на локалхосте, но можно и без него (убрать поле secret), тогда не нужен заголовок Authorization.
{
"experimental": {
"clash_api": {
"external_controller": "127.0.0.1:9090",
"secret": "my-password",
// если панель не на локалхосте:
//"access_control_allow_private_network": true
}
},
// ...
"outbounds": [
{
"type": "selector",
"tag": "selector1",
"outbounds": [
"my-vless",
"friends-vless",
// ...
],
"default": "my-vless",
"interrupt_exist_connections": false
},
{
"type": "vless",
"tag": "my-vless",
// ...
},
// ...
]
}