Во-первых, нужно чётко описать цепочку трафика. Вот первый вариант:
[клиент] --> [решающий прокси] --> [реальный прокси] --> [целевой сайт]
\--> [другие сайты]
Т.е. клиент всегда ходит через решающий прокси (тот, который принимает решение, как обращаться к сайту), а далее трафик идёт по одной из двух веток.
Плюсы: у клиента фиксированная конфигурация, требуется только поддержка прокси, не требуется доп. ПО на кленте
Минусы: решающий прокси тащит на себе весь трафик клиента.
Если это недопустимо, т.е. тебе позарез нужно что-то такое:
[клиент] --> [решающий прокси] --> [реальный прокси] --> [целевой сайт]
\--> [другие сайты]
То решение нужно принимать на стороне клиента. Тут есть два варианта.
Вариант А: решающий прокси разворачивается на клиенте. Так работает nekoray, например.
[клиент --> решающий прокси] --> [реальный прокси] --> [целевой сайт]
\--> [другие сайты]
Плюсы: ПО на клиенте всё ещё требует только поддержку прокси, и всё.
Минусы: на клиенте ставится доп. ПО, управление производится на машине клиента (неудобно если их несколько)
Вариант Б, которым я сам пользуюсь: использовать PAC-файл. Он выполняется в контексте браузера и содержит логику на JS, которая определяет, как посылать каждый запрос. Разумеется, генератор и прокси могут быть на одном узле.
[Генератор и хостинг для PAC-файла]
^
|
[клиентский браузер] --> [реальный прокси] --> [целевой сайт]
\--> [другие сайты]
Плюсы: на клиенте фиксированная конфигурация и нет доп. ПО. Все решения принимаются сервером, который периодиченки обновляет PAC-файл.
Минусы: работает ТОЛЬКО с браузером, если прокси недоступен, браузер может начать пытаться слать запросы напрямую. Трудно повлиять на то, как часто клиент будет перезагружать PAC-файл.
Вариант В: использовать маршрутизацию совместно VPN, чтобы завернуть все пакеты на целевые хосты в VPN, и только их.
Плюсы: работает с любым ПО, даже если оно не умеет прокси.
Минусы: Требует полноценный VPN с виртуальным сетевым адаптером, а не прокси. Определить подсети по имени сайта нетривиально, ибо CDN могут менять адреса без предупреждения. Раздавать 100500 маршрутов на клиенты тоже нетривиально.