Как стать автором
Обновить

Комментарии 23

А есть ли какой-то способ в прокси сделать обратный белый список? То есть, чтобы только определенные домены пускать через прокси?

Это настройки самого прокси сервера. Если вы его администруете, то, конечно, настраивайте любые правила -- тем же iptables.

если я правильно понял вопрос, можно использовать js в браузере чтобы решать использовать прокси или нет, ключевое слово для гугла — proxy.pac
тут вот есть экстремальный вариант (заблокированные сайты будут открываться через прокси, остальные напрямую):
https://antizapret.prostovpn.org/

Да, что-то типа такого, чтобы только определенные сайты ходили через прокси, а остальные через провайдера. А еще бы решить проблему не просто проксирование, но и шифрование.
не просто проксирование, но и шифрование.

ЕМНИП скрипт по ссылке использует https для соединения с прокси, так что будет и шифрование

В случае корпоративного "железного" прокси это не работает, т.к. весь трафик проксируется через файрвол, и простая функция типа

function FindProxyForURL (url, host) {
  return 'PROXY proxy.example.com:8080; DIRECT';
}

не работает. Также на HTTP-сервере должен находиться PAC-файл для автонастройки прокси, а у пользователя нет админки для конфигурации сервера.

И последнее: многие клиенты все равно смотрят переменные среды, поэтому от них никуда не деться.

В случае корпоративного "железного" прокси это не работает

поясните, пожалуйста, что вы имели в виду.


И последнее: многие клиенты все равно смотрят переменные среды, поэтому от них никуда не деться.

я предположил, что человек спрашивал про решение для браузера, выше он уже подтвердил, что я угадал

я правильно понимаю, что подразумевается перезапуск всех «заинтересованных» приложений после изменения настроек?
КМК правильнее было использовать динамически-конфигурируемый tcp-proxy (по вкусу написать свой или взять готовый вроде nginx или haproxy), который бы принимал соединения по постоянному адресу (или адресам), и перенаправлял их на актуальный в данный момент прокси-сервер.

3proxy может на лету подхватывать новую конфигурацию и перенаправлять на все типы прокси (включая авторизацию) - кроссплатформенный

Ответил выше. Собственный дополнительный прокси-сервер в юзерспейсе не спасает, особенно для приложений, смотрящих на переменные среды.

В рамках предложения — можно было сделать свой локальный прокси, который прописывается в системных настройках. Галочка бы меняла не записи в реестре и переменные окружения, а настройки локального прокси. Таким образом код будет универсальным для любой системы и вы сможете изменять поведение всех приложений одной кнопкой (насколько я понимаю, при изменении переменных окружения все же нужен перезапуск).

Вы не пробовали собирать в бинарники? 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. Отсюда был сделан и вывод.

Что же, возможно. Надо просто проверить, не исключено, что запустится и на 3.8 питоне и даже 3.5. Также не уверен, что 3.9+ нельзя поставить на семёрку: есть ведь портативные сборки, например WinPython.

Мне больше нравятся плагины в браузере такие как Proxy SwitchyOmega. Они позволяют задать каждому домену свой прокси (в том числе и локальный, например, для Fiddler'а).

Гораздо проще использовать какой-нибудь локальный proxy (например, HandyCache) и включать/выключать использование внешнего proxy уже в нём (из меню, из настроек, горячей клавишей и т.п.). Заодно и возможность использования различных proxy для различных сайтов будет.

См. коммент выше.

Не вижу причин, по которым может не работать. Только если натянута локальная политика и запрещено изменение переменных окружения, реестра и исполнение неподписанных файлов.

Локальные прокси типа HandyCache не меняют переменные среды, а создают дополнительный уровень проксирования. Конечно, такие программы удобны: позволяют задавать условия для тех же внешних прокси, горячие клавиши и т.д., но это не всегда оптимальный выбор по двум причинам:

  1. Уже указанные переменные среды. Те же git, wget, curl смотрят на определение HTTP_PROXY, HTTPS_PROXY.

  2. Локальный прокси работает только когда он запущен (т.е. соответствующий процесс создает сервер, работающий в фоне). Для меня лучше было бы включить / настроить и выйти, не нагружая систему.

  1. Устанавливаете во всех программах, конфигах (далеко не все cli утилиты работают с переменными окружения) и переменных окружения (кстати, часть linux-утилит работает с http_proxy, https_proxy именно в нижнем регистре) на локальную proxy (например, 127.0.0.1:3128) и никогда более не меняете. У меня обычно именно так и настроено.

  2. Да, это обратная сторона. Но я регулярно за запросами/ответами смотрю, так что real-time UI весьма полезен. Нагрузку выше 1% CPU не видел.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории