fproxy v83 — локальный прокси-сервер для фильтрации http(s)-трафика
Опубликована 83-я версия кэширующего и антиспамного прокси-сервера для персонального использования c гибкими настройками.
Основные функции (всё настраивается):
- фильтрация нежелательного контента (белые/чёрные списки на урлы, запрет кук);
- принудительное и бессрочное кеширование полученных данных (в основном удобно для картинок и скриптов);
- исправление содержимого веб-страниц на лету (правкой исходника на Си, есть пример для замены содержания страниц-клонов stackoverflow ссылкой на оригинал);
- чёрные/белые списки сертификатов и certificate pinning по списку;
- подмена айпи-адреса/домена/пути/протокола http-запроса по конфигу (такой расширенный вариант /etc/hosts);
- http/https-сниффер.
Прекрасно подходит для просмотра сайтов через медленный интернет или с медленного устройства (благодаря п.1 и 2, ради которых изначально всё и затевалось), но вообще полезно в любом случае.
Прокси-сервер в целях безопасности и упрощения логики работы разделён на три части: TLS-сервер (терминирующий браузерные подключения), центральный модуль прокси и клиент, терминирующий исходящие подключения.
Программа рассчитана на персонализированное использование, то есть все конфиги и директория с текущими данными прокси-сервера привязана к конкретному пользователю, или даже к конкретному профилю браузера. Запустить прокси в качестве общесистемного демона технически возможно, но в таком виде затруднительно использовать одну из его главных функций — агрессивное кеширование всего подряд, поскольку закешированные данные у каждого профиля браузера могут быть свои, и должны быть изолированы друг от друга в целях безопасности.
Пример списка блокировки:
deny nosub all share.yandex.ru browser-updater.yandex.net
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
Пример списка роутинга:
https://my.local.site
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-обработки полученного от сайтов контента
- менеджер профилей и конфигураций прокси
- интерактивное управление проверкой сертификатов удалёных сайтов и списками блокировок
>>> Подробности