Комментарии 23
если я правильно понял вопрос, можно использовать js в браузере чтобы решать использовать прокси или нет, ключевое слово для гугла — proxy.pac
тут вот есть экстремальный вариант (заблокированные сайты будут открываться через прокси, остальные напрямую):
https://antizapret.prostovpn.org/
В случае корпоративного "железного" прокси это не работает, т.к. весь трафик проксируется через файрвол, и простая функция типа
function FindProxyForURL (url, host) {
return 'PROXY proxy.example.com:8080; DIRECT';
}
не работает. Также на HTTP-сервере должен находиться PAC-файл для автонастройки прокси, а у пользователя нет админки для конфигурации сервера.
И последнее: многие клиенты все равно смотрят переменные среды, поэтому от них никуда не деться.
я правильно понимаю, что подразумевается перезапуск всех «заинтересованных» приложений после изменения настроек?
КМК правильнее было использовать динамически-конфигурируемый tcp-proxy (по вкусу написать свой или взять готовый вроде nginx или haproxy), который бы принимал соединения по постоянному адресу (или адресам), и перенаправлял их на актуальный в данный момент прокси-сервер.
В рамках предложения — можно было сделать свой локальный прокси, который прописывается в системных настройках. Галочка бы меняла не записи в реестре и переменные окружения, а настройки локального прокси. Таким образом код будет универсальным для любой системы и вы сможете изменять поведение всех приложений одной кнопкой (насколько я понимаю, при изменении переменных окружения все же нужен перезапуск).
Вы не пробовали собирать в бинарники? QT сама ставится через requirements или только обвязка?
Всё ставится через requirements, ничего дополнительно устанавливать не надо. В requirements можно изменить PySide6 на сборку по своему вкусу: PySide6 / PySide2 / PyQt6 / PyQt5.
Что касается бинарников, это можно сделать при помощи, например, pyInstaller. Но зачем, если есть Python? :)
который, к тому же, работал бы на Windows и Linux
А разве ваш проект-переключатель работает на Windows 7? Думаю, что нет. Можно было бы это в readme, например, указать.
Если честно, не проверял, но теоретически ограничений быть не должно. В "семерке" используются те же записи в реестре. Можете попробовать и отписаться (через тот же гитхаб).
У вас в статье написано, что проект писался на python10. А в ридми:
proxen runs on Python 3.9+, so please make sure you have one.
Последняя, поддерживаема версия python под windows 7 это - python 3.8. Отсюда был сделан и вывод.
Мне больше нравятся плагины в браузере такие как Proxy SwitchyOmega. Они позволяют задать каждому домену свой прокси (в том числе и локальный, например, для Fiddler'а).
Гораздо проще использовать какой-нибудь локальный proxy (например, HandyCache) и включать/выключать использование внешнего proxy уже в нём (из меню, из настроек, горячей клавишей и т.п.). Заодно и возможность использования различных proxy для различных сайтов будет.
Не вижу причин, по которым может не работать. Только если натянута локальная политика и запрещено изменение переменных окружения, реестра и исполнение неподписанных файлов.
Локальные прокси типа HandyCache не меняют переменные среды, а создают дополнительный уровень проксирования. Конечно, такие программы удобны: позволяют задавать условия для тех же внешних прокси, горячие клавиши и т.д., но это не всегда оптимальный выбор по двум причинам:
Уже указанные переменные среды. Те же git, wget, curl смотрят на определение HTTP_PROXY, HTTPS_PROXY.
Локальный прокси работает только когда он запущен (т.е. соответствующий процесс создает сервер, работающий в фоне). Для меня лучше было бы включить / настроить и выйти, не нагружая систему.
Устанавливаете во всех программах, конфигах (далеко не все cli утилиты работают с переменными окружения) и переменных окружения (кстати, часть linux-утилит работает с http_proxy, https_proxy именно в нижнем регистре) на локальную proxy (например, 127.0.0.1:3128) и никогда более не меняете. У меня обычно именно так и настроено.
Да, это обратная сторона. Но я регулярно за запросами/ответами смотрю, так что real-time UI весьма полезен. Нагрузку выше 1% CPU не видел.
Кроссплатформенный переключатель прокси-сервера на Python + Qt