LINUX.ORG.RU

fproxy v80 — локальный прокси-сервер для фильтрации http(s)-трафика

 , , ,


6

2

Опубликована 80-я версия кэширующего и антиспамного прокси-сервера для персонального использования c гибкими настройками.

Основные функции (всё настраивается):

  1. фильтрация нежелательного контента (реклама/трекеры/куки/прочий мусор);
  2. принудительное и бессрочное кеширование полученных данных (в основном удобно для картинок и скриптов);
  3. исправление содержимого веб-страниц на лету (правкой исходника на Си, есть пример для замены содержания страниц-клонов stackoverflow ссылкой на оригинал);
  4. чёрные/белые списки сертификатов и certificate pinning по списку;
  5. подмена айпи-адреса/домена/пути/протокола http-запроса по конфигу (такой расширенный вариант /etc/hosts);
  6. http/https-сниффер.

Программа прекрасно подходит для просмотра сайтов через медленный интернет или с медленного устройства (благодаря п.1 и 2, ради которых изначально всё и затевалось) и не только.

В случае обновления с версии до 78 следует сконвертировать кеш: зайти в рабочую директорию прокси-сервера от юзера (uid/gid) прокси-сервера и выполнить fproxy-cacheconv-78

Пример списка блокировки:

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    habrahabr.ru
                pref    /hauusbx/toplink/
deny    nosub   spec    yandex.ru
                pref    /clck/safeclick/
                pref    /clck/click/
                pref    /clck/jclck/
deny    nosub   spec    s36.ucoz.net
                pref    /adv/
                pref    /bnr/
deny    w/sub   spec    ucoz.com
                pref    /abnl/
deny    nosub   spec    mediametrics.ru
                pref    /partner/
deny    nosub   spec    platform.twitter.com
                pref    /widgets/
deny    all     spec
                query   /tnc    # index.ru proxied counter
                exact   /tnc.js # index.ru proxied counter
                query   /pixel.gif # some spammers use this

Программа написана на Си и распространяется под BSD-подобной лицензией.

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: sudopacman (всего исправлений: 6)

Разве каш браузера не делает это ? А всякие резалки это плагины к бразеру ….

mx__ ★★★★★
()
Ответ на: комментарий от mx__

Разве каш браузера не делает это

Кое-как делает, но он склонен жить своей жизнью (т.е. им крайне сложно вручную детально управлять) и целиком зависит от браузера (попробуй сделать чтобы он выжил спустя 5 лет и кучу обновлений/крашей/глюков браузера без потерь данных).

А всякие резалки это плагины к бразеру ….

Аналогично - там постоянно что-то меняется и отваливается (и зависит от рандомных нововведений браузероделов, которым нет доверия) а тут обратная совместимость спустя годы и полное отсутствие привязки к гуи-части.

Не говоря уж об остальных фичах.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от Original

Конкретно тут - не знаю, просто так. Вряд ли будет разница в итоге. Под GPL я оконный менеджер публиковал только вроде.

firkax ★★★★★
() автор топика
Ответ на: комментарий от AVL2

Да, двух- и трёхпунктную лицензии BSD FSF считает свободными. (Четырёхпунктная я даже не знаю, используется ли где-нибудь ещё.)

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от firkax

Есть и другие хостинги для исходников, от сорсфоржа до гитлабовского. Ну или вершина децентрализованности — gitea на подкроватном серваке или хотя бы VDS. Мне вот пришлось тарболл качать, чтобы выяснить, на чём оно написано, в 2022 году это уже слегка неудобно, человек сволочь такая, к хорошему быстро привыкает. :)

Хотя если ты считаешь абсолютно невероятным, что кто-то будет присылать патчи и др. — то в принципе, сойдёт и так. :)

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Ну насчёт того чтобы интерактивно показывать исходники это я тоже думаю но попозже. К массовым сервисам не хочу привязываться, к чему-то что я не смогу встроить в свою разработку (типа тех же gitea) - тоже, так что пока не готово.

Хотя если ты считаешь абсолютно невероятным, что кто-то будет присылать патчи и др. — то в принципе, сойдёт и так. :)

Ну, сомневаюсь что кто-то будет, но вот обратную связь хоть в каком-то виде на этот случай сделал.

firkax ★★★★★
() автор топика
Ответ на: комментарий от AVL2

Да, при установке генерирует CA и надо его добавить в доверенные.

firkax ★★★★★
() автор топика
Ответ на: комментарий от firkax

Вы меня извините что брюзжу но я, если бы мне нужно было, поставил бы сквид локально со всякими режиками … Куда это кучу рама и кучу цпу девать. Но обычно это юзаеться в другую сторону, не юзер мог а для ограничения юзера …

mx__ ★★★★★
()

А я вот чем-то похожую штуку написал недавно: http://www.tofuproxy.stargrave.org/. Является HTTP/HTTPS прокси:

  • TLS-терминатор; TLS 1.3; TLS session resumption; опционально ГОСТ TLS 1.3 – не все HTTP/HTTPS клиенты это всё поддерживают и умеют
  • Управление X.509 сертификатами; certificate pinning; TOFU
  • HTTP/2, HTTP keep-alives. Например можно wget/curl-ом дёргать сайты и переиспользовать имеющиеся соединения, например когда делаешь зеркало (wget –mirror)
  • Проверка сертификатов напротив DANE-EE
  • Поддержка клиентских TLS сертификатов (опять же, если броузер такого не умеет, то с этой штукой возможно)
  • HTTP-авторизация с поддержкой .netrc
  • Фильтрация трафика: blacklist-ы для доменов, замена HTTP redirect-ов HTML страницами с явным подтверждением; переписание URL-ов (например ссылки на reddit.com заменяются на old.reddit.com)
  • Поддержка gzip и zstd сжатия (опять же, прозрачно для клиентов)
  • Транскодирование на лету JPEG XL, AVIF и WebP (например Links2 не поддерживает его) в PNG, не требуя поддержки онных от броузера
  • Just-for-fun может выступать в качестве gemini-прокси
  • Возможность просмотра WARC файлов и их индексирования (gzip и zstd сжатые поддерживаются, причём оба могут быть сегментированы, есть утилита для сегментированного пересжатия в zstd)
stargrave
()
Ответ на: комментарий от mx__

Squid несколько другой направленности, он в основном для публичного использования и штатного кеширования. А тут упор именно на тонко настраиваемый активный mitm браузеру, включая тонкий тюнинг правкой исходника (в начале я вообще не думал что когда-то его можно будет скомпилировать в так сказать generic варианте, без предварительной настройки исходного кода).

Но обычно это юзаеться в другую сторону, не юзер мог а для ограничения юзера …

Ну, теоретически и для такого можно, но мне это способ не пригождался ни разу.

firkax ★★★★★
() автор топика
Ответ на: комментарий от stargrave

Ух ты, и правда почти то же направление, да и сделано, судя по описанию, аккуратно. И даже кое что есть что я собирался делать но не сделал.

firkax ★★★★★
() автор топика

Пример списка блокировки:

делаю почти все то же самое при помощи DNS блокировки. еще легче по ресурсам и нет проблемы с доверием сертификатов у браузера.

crypt ★★★★★
()
Ответ на: комментарий от crypt

У меня тоже когда-то был /etc/hosts с редиректом на 0.0.0.0 плохих доменов. Но урлы так не заблокировать.

firkax ★★★★★
() автор топика
Ответ на: комментарий от crypt

Ну а как ещё? Правда, с некоторых пор я догадался что тут можно сделать оптимизацию и теперь она генерит не на каждый домен, а на каждый wildcard-домен, их поменьше. Разумеется, не на каждый запрос это делается - единожды сгенерированный сертификат кладётся в кеш и используется оттуда пока его срок не истечёт.

firkax ★★★★★
() автор топика
Ответ на: комментарий от firkax

да ну, возня какая-то.:(

с некоторых пор я догадался что тут можно сделать оптимизацию и теперь она генерит не на каждый домен, а на каждый wildcard-домен

поздравляю, шарик.

crypt ★★★★★
()
Ответ на: комментарий от firkax

Но урлы так не заблокировать.

я выложу по настроению скриншот, покажу как я это решаю. урлы блокировать - тоже отсталая идея, как и весь этот проксятник.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 3)
Ответ на: комментарий от crypt

да ну, возня какая-то.:(

Так оно всё автоматически делается, надо только директорию ему указать куда кеш складывать.

firkax ★★★★★
() автор топика
Ответ на: комментарий от crypt

Сейчас там 277 строк, я туда добавлял спам и прочее вредительство (например попытки мозилловской телеметрии и обновлений) по факту его надоедливого обнаружения. Часть из них есть в дефолтном (example считай) конфиге, устанавливающемся из архива по ссылке.

А ещё есть например другой экземпляр прокси, для отдельного профиля браузера - там вообще белый список (т.е. в начале наоборот разрешительные правила а в конце deny all) для нужных там сайтов, в том числе чтобы случайно перейдя по не той ссылке не попасть в какую-нить помойку из чистого браузера.

firkax ★★★★★
() автор топика
Последнее исправление: firkax (всего исправлений: 1)

2. принудительное и бессрочное кеширование полученных данных (в основном удобно для картинок и скриптов);

Я всегда считал, что это основная функция прокси-сервера. Т.с. его квинтэссенция. Но, видимо, я слишком устарел... пора на свалку... и имя сменить на Вертер... робот Вертер, который так и не встретил Колю Герасимова из Конотопа.

Attila ★★
()
Ответ на: комментарий от AVL2

Дык ЛОКАЛЬНЫЙ! Что значит, свистопляски и секас с шифрованиями его не касаютцца :)

Attila ★★
()
Ответ на: комментарий от AVL2

Был неправ! Забыл про политику. ДИНОЗАВР-с, простите.

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

Attila ★★
()
Последнее исправление: Attila (всего исправлений: 1)
Ответ на: комментарий от mx__

А всякие резалки это плагины к бразеру

У плагинов нет доступа к такому.

Плагины воспроизводят контент, встроенный на web-страницы через теги <object> или <embed>.

bodqhrohro_is_back
()
Ответ на: комментарий от IIIypuk

Codium валяется, но не пользуюсь, несмотря на несколько попыток завести — он тормозной, падучий, и эмуляция Vim там по-прежнему кривая :P

bodqhrohro_is_back
()
Ответ на: комментарий от bodqhrohro_is_back

религиозных фанатиков

Очень неуклюжий заход на 4.3. Эта информация полезна любому, кто прикидывает, стоит ли это собирать в своей системе (особенно с учётом того, что проект не слишком известный, на готовые бинарные пакеты особо рассчитывать не стоит). А то вдруг там под капотом электрон какой.

Ну и вообще — opensource.ru.

hobbit ★★★★★
()
Ответ на: комментарий от stargrave

А я вот чем-то похожую штуку написал

…на Go. :) Пили новость :)

Кстати, я по ссылке не нашёл ссылки на исходники, хотя упоминание про free software вижу.

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

Кстати, я по ссылке не нашёл ссылки на исходники
★★★★★

Пять звёзд. Пять звёзд никогда не меняются.

Download and build tofuproxy:
$ git clone git://git.stargrave.org/tofuproxy.git

LamerOk ★★★★★
()
Последнее исправление: LamerOk (всего исправлений: 1)

Любопытный проект, возникло желание поковыряться на досуге.

GFORGX ★★★
()
Ответ на: комментарий от hobbit

стоит ли это собирать в своей системе

Это и есть религиозный фанатизм. Или нищуцтво. Профессиональные разработчики собирают что угодно чем угодно, что требуется для сборки, любой степени жирности.

opensource.ru

А ещё pony.org.ru, ага. Что-то понитредов давно не видать только.

bodqhrohro_is_back
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.