Проксировать только определенные sni через цепочку локальных прокси?

Есть прокси локальный PROXY 1, который работает как просто socks5 и проксирует все через удаленный ip. Моя идея в следующем: поставить еще один локальный прокси PROXY 2, который будет стоять в начале цепочки, фильтровать трафик по sni и проксировать на PROXY 1 только определенные sni (посути hostlist), а все остальное пускать напрямую без изменений.

Т.е схема: PROXY 2 → PROXY 1 → internet если sni в hostlist
PROXY 2 → internet если sni не в хостлисте.

Смотрел в сторону 3proxy, но не понял как там провернуть такое, если вообще возможно.

sing-box/xray/mihomo и их правила маршрутизации

Routing | Project X

можно в XRay сделать и inbound и outbound SOCKS, и настроить правила по SNI, по GeoIP, или по большим спискам

В GOST есть Bypass, Traffic Sniffing и Reverse Proxy. Пример решения не приведу, т. к. мне хватает байпаса по доменам и CIDR.

Возможно обратиться к олдскулу в виде proxy.pac ?

Чел, ты лучший :nerd_face: Поистине, все гениальное просто. Именно то, что я искал.

Прилагаю код скрипта proxy.pac , если кому-то понадобится подобное:

function FindProxyForURL(url, host) {

var localProxy = “SOCKS5 127.0.0.1:1080”;
var remoteProxy = “SOCKS5 8.8.8.8:1234”;

var hostlist = [
  "*.googlevideo.com", "yt.be"

];

for (var k = 0; k < hostlist.length; k++) {
if (shExpMatch(host, hostlist[k])) {
return remoteProxy;
}
}

return localProxy;

}

Это проксирование на основе домена, а не sni. Вводите читателей темы в заблуждение.
Плюс у вас нет в скрипте цепочки (chain) подключений, как это требовалось в вопросе.

Тут и метод решения другой. PAC вместо еще одного прокси в начале цепочки. Не совсем то, о чем я писал в шапке темы, но то, что подразумевал :hugs:

 

Я в более низкоуровневом стеке нуб. Мне простительно, если что. Я максимум по фронтенду. Так что не судите строго. Главное - проблема решена.
В общем, уходим уже в офтоп