Опубликована 83-я версия кэширующего и антиспамного прокси-сервера для персонального использования c гибкими настройками.
Основные функции (всё настраивается):
фильтрация нежелательного контента (белые/чёрные списки на урлы, запрет кук);
принудительное и бессрочное кеширование полученных данных (в основном удобно для картинок и скриптов);
исправление содержимого веб-страниц на лету (правкой исходника на Си, есть пример для замены содержания страниц-клонов stackoverflow ссылкой на оригинал);
чёрные/белые списки сертификатов и certificate pinning по списку;
подмена айпи-адреса/домена/пути/протокола http-запроса по конфигу (такой расширенный вариант /etc/hosts);
http/https-сниффер.
Прекрасно подходит для просмотра сайтов через медленный интернет или с медленного устройства (благодаря п.1 и 2, ради которых изначально всё и затевалось), но вообще полезно в любом случае.
Прокси-сервер в целях безопасности и упрощения логики работы разделён на три части: TLS-сервер (терминирующий браузерные подключения), центральный модуль прокси и клиент, терминирующий исходящие подключения.
Программа рассчитана на персонализированное использование, то есть все конфиги и директория с текущими данными прокси-сервера привязана к конкретному пользователю, или даже к конкретному профилю браузера. Запустить прокси в качестве общесистемного демона технически возможно, но в таком виде затруднительно использовать одну из его главных функций – агрессивное кеширование всего подряд, поскольку закешированные данные у каждого профиля браузера могут быть свои, и должны быть изолированы друг от друга в целях безопасности.
Пример списка блокировки:
deny nosub all a.ria.ru # ?
deny nosub spec vk.com
query /share.php
deny nosub spec yastatic.net
query /pcode/adfox/loader.js
query /share2/share.js
deny nosub spec www.youtube.com
query /subscribe_widget
deny nosub spec pano.img.ria.ru
query /adriver/flashplagin/movie.swf
deny nosub spec a.ria.ru
query /ping
deny nosub spec n-ssl.ria.ru
query /polling
deny nosub spec apis.google.com
query /js/plusone.js
deny nosub spec yandex.ru
pref /clck/safeclick/
pref /clck/click/
pref /clck/jclck/
deny all spec
query /tnc # index.ru proxied counter
exact /tnc.js # index.ru proxied counter
query /pixel.gif # some spammers use this
Пример списка роутинга:
set proxy none
set target http://127.0.0.1:1234/localsite
set http_host new.host:1234
.intel.com
resolve off
set proxy socks5://127.0.0.1:3333
В случае обновления с версии более старой чем 78 следует сконвертировать кеш: зайти в рабочую директорию прокси-сервера от юзера (uid/gid) прокси-сервера и выполнить fproxy-cacheconv-78 (по умолчанию эта программа не компилируется).
Изменения с прошлой опублированной версии (80):
fproxy-dashboard теперь имеет опцию для показа размеров контента в байтах а не кбайтах;
поддержка багнутых серверов, игнорирующих заголовок «Connection: close»;
поддержка багнутых серверов, отдающих некорректный заголовок «Content-Encoding: identity»;
отправка TLS-опции ALPN;
улучшение работы TLS-терминатора внешней стороны (клиента): он теперь поддерживает не только TLS, но и обычные соединения,
поддерживает работу в виде независимого демона с приёмом запросов от основного прокси по сети, а также может пробрасывать свои
исходящие соединения через другое прокси, таким образом позволяя гибко разделять задачи между узлами в условиях плохого
интернет-соединения и/или необходимости организовать «выход» трафика где-то на удалённом сервере разной степени доверенности;
так же новая версия более удобна для использования вручную из командной строки в качестве консольного TLS-клиента с поддержкой
проксирования;
упрощена сборка, теперь есть Makefile вместо шелл-скриптов
организованы предсобранные .deb-пакеты в репозитории (для версий Debian 8-12)
изменения файла конфигурации, обратно-несовместимые
новый конфиг для управления роутингом запросов, объединивший ранее бывшие отдельными конфиги resolv и включения проброса
исходящих соединений на удалённый сервер, а так же получивший ряд новых опций: теперь можно для каждого url-а (протокол,
домен, порт, путь) выбирать через какой клиент, какое прокси он будет отправлен, через чей днс-сервер будет проводиться
определение его айпи-адреса (включая опциональное делегирование этой задачи внешнему прокси-серверу http или socks5), либо
прописать адрес вручную, а так же заменить протокол, порт или префикс пути url-а
добавлена поддержка SAN-сертификатов для ip-адресов и в клиенте и в сервере (браузеры с некоторых пор перестали принимать
ip-адреса в CommonName)
В планах на будущее:
поддержка CGI/FastCGI/.so хуков для mitm-обработки полученного от сайтов контента
менеджер профилей и конфигураций прокси
интерактивное управление проверкой сертификатов удалёных сайтов и списками блокировок