Я тут до недавнего времени использовал расширение FoxyProxy для того, чтобы оно определяло, ходить на какой-то сайт напрямую, или через прокси.
И всю дорогу меня раздражало неудобство синхронизации списка исключений. Оно там только через FireFox Sync синхронизируется. Поднять свой sync сервер теоретически можно, но практичеки это уйма геморроя и толпа уязвимостей. Администрировать замучаешься. Почему-то Mozilla Foundation ни слова в простоте не может.
(GeoClue2 API у нее тоже чрезмерно навороченны. Чтобы тупо узнать текущие координаты нужно сделать пять DBus-вызовов).
Приходится экспортировать настройки в json-файл и над другом компьютере импортировать. А исключения-то добавляются довольно часть.
Еще конечно раздражает регулярное изменение интерфейса. Причем зачастую с урезанием функционалности. Потому что "ради безопасности" какую-то полезную функциональность расширениям запретили. Ну понятно когда такой фигней страдает Гугль. Гугль не заинтересован чтобы пользвоатели что-либо делали на своих компьюетрах. ему надо чтобы все данные проходили через его сервера, и там анализировалисю. Но Мозилла-то зачем это обезьянничает?
Но тут мне
phd_ru и
filin подсказали что у браузера есть встроенная функциональнсоть автоконфигурирования прокси. Которая не является расширением, а яявляется частью ядра браузера и существует как бы не со времен 3-го Netscape. И вообще предназначена для корпоративных сетей. в которых браузеры доверяют админу сети больше, чем не только пользователю, но и своему вендору.
Поэтому можно указать в настройках сети Automatic proxy configuration URL: file:///home/vitus/Sync/wpad.dat
и оно будет честно груизть оттуда javascript-функцию, вычисляющую по URL и выдранному оттуда hostname (это для удобства писателей функции) нужную прокси. Еще и кнопочка Reload в настройках рядом с полем ввода URL есть.
Там есть еще разнообразные механизмы позволяющие браузеру автоматически найти в локальной сети wpad.dat, но нас они сейчас не интересуют. Нам важно, что работает схема file:, и файл на локальной файловой системе воспринимается как доверенный источник информации о прокси.
Уж текстовый-то файлы между компьютерами синхронизировать можно миллионом разных способов. Я в данном случае решил использовать SyncThing, благо у меня все равно есть каталог со всякой мелочевкой который синхронизируются SyncThing-ом между всеми моими компьютерами.
Одна сложноть - формат этого файла представляет собой код на javascript. Поэтому, редактируя этот файл легко все сломать. Так что я написал маленький html-файлик, содержащий <script src="wpad.dat" type="text/javascript"> и простенькую формочку куда можно ввести URL, а оно ее передаст в функцию FindProxyForURL и результат на страничке покажет.
Правда, есть одна небольшая тонкость - в том контексте в котором эта функция выполняется в случае proxy auto-config доступна куча полезных хелпер-функций, которых в контексте обычной веб-страницы нет. Но мне проще было напевать на эти функции и пользвоаться только методами джаваскриптовской строки, чем отказаться от удобного инструмента отладки.
Cама функция у меня получилась вида примерно
function FindProxyForURL(url,host)
{
for (domain of [...список доменов...])
if (host==domain||host.endsWith("."+domain))
return "DIRECT"
if (host.startsWith("192.168.") || host == localhost)
return "DIRECT"
return "SOCKS localhost:1080"
}
В списке доменов там ru, рф, livejournal.com и те домены яндекса которые почему-то не в ru, а в net или st.
Ну еще там gutenberg.org, потому что он очень нервно относится к хождению с адресов хостинговых датацентров.