Две альтернативы Privoxy (MiddleMan и DansGuardian)

Аватар пользователя DRVTiny

Оригинал этой статьи находится по адресу: http://privoxy.asplinux.net/links/alternatives.html Я решил продублировать свои заметки на фасаде ASPLinux.Net по той простой причине, что таким образом у меня появится хотя бы надежда на определённую реакцию со стороны моих читателей Улыбка (см. форум "Поговорим о Privoxy по-русски"

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

Фильтрующие прокси-серверы MuiddleMan и DansGuardian:
в поисках альтернативы Privoxy

MiddleMan
Сайт: http://middle-man.sourceforge.net
Платформа: Linux/Unix
Дистрибуция: бинарные пакеты RPM и DEB, исходные коды
Способ запуска резидента: в соотв. со спецификацией Unix System V (демон)
Оценка по 10-бальной шкале: 9

На мой взгляд, это наиболее функциональная и перспективная программа из всего множества альтернатив Privoxy. В отличие от своего конкурента, MiddleMan не только умеет осуществлять компрессию/декомпрессию фильтруемого веб-контента «на лету», но и производит эффективное кэширование. Так же, как и Privoxy, привлекающий внимание в первую очередь своим дружественным интерфейсом, MiddleMan снабжён собственной «Панелью управления», доступной из настроеного на использование MMan веб-браузера по ссылке [http://]mman.

«Панель управления» помимо редактора настроек (не столь удобного и... элегантного что ли, как у Privoxy, но тем не менее позволяющего исключительно гибко настраивать политику обработки запросов, фильтрования контента и кэширования данных), включает такие инструменты, как: просмотр статистической информации о Системе (занимаемая модулями MMan память, число обращений за сброшенными на диск (в своп-раздел) страницами ОЗУ и т.д.), Сети, о кэшах DNS и данных (позволяет оценить эффективность кэширования, как соотношение количества считанных из кэша и пропущенных запросов, т.е соотношение т.н. «кэш-промахов» и «кэш-попаданий»), наблюдение в режиме реального времени за процессом добавления новых записей в протокольный журнал, получение исчерпывающей информации о текущем состоянии кэшей, а также обо всех активных подсоединениях к прокси-серверу и множество других уникальных функций составляют инструментарий «Панели».

Хотя процедуры настройки MiddleMan при помощи встроенного редактора производятся несколько сложнее, являются менее интуитивными, менее «прозрачными» и т.д., нежели это имеет место в случае с Privoxy, но этот очевидно-негативный момент во многом сглаживается тем, что редактор конфигурации MMan позволяет оперировать значительно большим числом параметров (что объективно соответствует существенно расширенной, по сравнению с теми возможностями, которые демонстрирует Privoxy, функциональности MiddleMan), таким образом позволяя профессионалу создавать оптимальные, «идеально заточенные» под его систему, конфигурации работы прокси (кстати, конфигураций может быть действительно несколько, поскольку MiddleMan позволяет динамически подгружать новые/сохранять исправленные старые конфигурации, благо, что всю базу данных настроек этот кэширующий прокси-фильтр хранит всего в 2-х раздельных файлах формата XML: config.xml и section.xml – соответственно, для гибкого управления поведением MMan в том или ином окружении, достаточно просто сохранить эти файлы в нескольких раздельных каталогах, например, в подкаталогах /etc/mman).

В качестве явного недостатка MiddleMan я могу назвать лишь его маниакальное (во всяком случае, явно не слишком рациональное) стремление протоколировать каждую мелочь в своём журнале (в принципе, степень подробности ведения протокола можно варьировать с помощью ключа -d, передаваемого MMan при запуске, но в документации (в т.ч. и в man-странице, получаемой по команде man mman) сей вопрос, к сожалению никак не освещён, а посему адекватно управлять значением этого параметра по-видимому не представляется возможным) из-за чего при интенсивной работе в Интернет журнал успевает разбухнуть до неимоверных размеров прежде, чем logrotate наконец произведёт его усечение (поэтому при наличии скромных размеров раздела /var приходится специально подстраивать планировщик cron для того, чтобы стало возможным пользоваться Mman\'ом, при этом не опасаясь постоянно чрезвычайно коварного своей непредсказуемостью Disk Full (переполнения «диска»)).

В заключение хотелось бы отметить, что, сравнивая MiddleMan и Privoxy, приходится делать выводы далеко не в пользу последнего, поскольку MM отличается существенно более полной функциональностью и позволяет осуществлять фильтрацию контента без вынужденного снижения скорости соединения, но тем не менее, учитывая то, что документация по MiddleMan и его довольно специфический веб-интерфейс (мечта какого-нибудь хакера или «продвинутого» системного администратора) рассчитаны в первую очередь на пользователя с уровнем подготовки в области технологий Интернет существенно выше «начального», я всё-таки посоветовал бы в качестве первого фильтрующего прокси использовать Privoxy, а потом уже в случае наличия достаточно большого желания или необходимости переходить на более мощный, но и существенно более сложный в освоении (хотя, возможно, это просто дело привычки...) MiddleMan.

DansGuardian
Сайт: http://www.DansGuardian.org
Платформа: Linux/Unix , MacOSX (Darwin)
Дистрибуция: бинарные пакеты RPM
Лицензия: GPL
Способ запуска резидента: в соотв. со спецификацией Unix System V (демон)
Оценка по 10-бальной шкале: 7

DansGuardian (т.е. «Опекун Дэна» – программа, созданная Дэниэлем Бэрроном названа так по аналогии с коммерческим Active Guardian, который был взят за «идеологическую» основу для DansGuardian) – это фильтрующий прокси для параноиков. Другого определения не подберёшь. При всей необыкновенной для такого класса программ простоте установки (rpm-пакет устанавливается без каких-либо проблем , что объясняется, по-видимому, статической линковкой с используемыми dansguardian библиотеками, одноимённый стартовый сервис корректно прописывается в /etc/init.d с параллельным созданием в каталоге текущего runlevel соответствующих символических ссылок), настройка этого прокси-фильтра представляет собой довольно занимательную головоломку.

Судя по названию и по стилю работы программы, складывается впечатление, что основной областью применения Dansguardian является фильтрование веб-контента в школах, колледжах, зачастую имеющих неограниченный доступ к сети Интернет, а также в иных имеющих выход в Глобальное Информационное Пространство учебных заведениях для несознательной части человечества в возрасте до 16-18 лет. Установив на своём компьютере этого «опекуна» вы гарантированно никогда больше не увидите страшных английских ругательств или специфических слов-неологизмов современной интернет-порноиндустрии: DansGuardian просто выведет на экран своё знаменитое сообщение «Access has been denied» и занесёт сведения о совершённой вами попытке грязного надругательства над собственной совестью в журнал наблюдений за подопытными пользователями. Кстати, так же, как и Privoxy, DG включает в состав дистрибутивного комплекта скрипт для усечения log-файла (файла протокольного журнала) logrotation, на практике оказывающийся неплохим «подспорьем» и вообще довольно полезным инструментом для системного администратора.

Для того, чтобы скрипт logrotation смог исполнять возложенные на него обязанности, он должен с определённой периодичностью вызываться демоном cron, о чём разработчики DG, как ни странно, даже не забыли упомянуть в довольно скудной документации, поставляемой с этой программой (рекомендую для начала установить переменную EDITOR так, чтобы она указывала на присутствующий в системе удобный (т.е. в большинстве случаев - не vi и не emacs) редактор, например: EDITOR=mcedit; export EDITOR.
Затем необходимо создать файл задания cron: crontab -e, в котором после поля периодичности вызова указать действие: /etc/dansguardian/logrotation.
У меня это выглядит так: 0,30 * * * * /etc/dansguardian/logrotation (проверка на переполнение и, при необходимости, усечение протокольного журнала производится каждые полчаса)).

Интересно, что фантазия разработчиков DG оказалась поистине безграничной: такого неимоверного количества разнообразнейших, самых изощрённых механизмов фильтрования контента, я ещё не встречал ни в одном из подобных DG программных продуктов. Единственное, что омрачает первое впечатление о DG – это «умолчательные» настройки фильтрования MIME-типов: по каким-то неведомым мне причинам в файле /etc/dansguardian/bannedmimetypelist в чёрный список попали архивы ZIP практически всех распространённых в *nix-среде форматов (относительно того, чем ZIP столь сильно не угодил разработчикам DG, остаётся только строить предположения и гипотезы), а именно к числу главных врагов представителей подрастающего поколения были причислены файлы с расширениями *.bz2, *.gz, *.zip.

И самое-то обидное заключается в том, что нигде в официальной документации к DG не сказано о том, что этот прокси будет блокировать запросы на закачку архивов с перечисленными выше расширениями, так что, например, при первой же попытке скачать исходники какой-нибудь программы, традиционно запаковываемые в tar.bz2 или в tar.gz, неприятным сюрпризом становится немедленное явление пред пользовательские очи садистки настроенного «опекуна» с плёткой вместо ожидаемого «юзером» традиционного для большинства веб-браузеров pop-up окошка запроса разрешения загрузки файла. Вообще веб-сёрфинг при посредничестве DansGuardian превращает унылое однообразие вечно жаждущего крови младенцев Интернет в увлекательное подобие классической игры «Сапёр»: встроенная защита DG может сработать в самый неожиданный (да и неподходящий) момент, так что порой бывает исключительно сложно понять, почему злобный цербер ограничивает доступ даже ко вполне «чистым и непорочным» сайтам (см. например http://kadets.ru/part39/), а уж предугадать реакцию DG на тот или иной запрос в абсолютном большинстве случаев просто не представляется возможным (прямо хоть ставки на тотализаторе делай...).

Представляющим опасность для нравственного облика «детей» (которые, как выясняется из комментариев в файле dansguardianf1.conf, делятся на 3 категории: «молодые дети», «старые дети» (ну это, знаете, такие наиболее распространённые в США дети «стандартного образца»: обрюзгшие, с двойным подбородком и огромными синяками под изрядно окосевшими глазами) и «дети-любители клубнички» (ну или просто «любители») - сам собой напрашивается резонный вопрос: уж не извращенец ли тот, кто писал эти комментарии? Во всяком случае у товарища довольно своеобразное чувство юмора, которое я лично просто категорически не способен оценить по достоинству) DG считает любой сайт, набирающий определённый «вес», т.е сумму «баллов» (положительных, отрицательных или равных нулю) , начисляемых за каждое слово, фразу или словосочетание, содержащиеся на соотв. веб-странице как в явном, так и в неявном (внутри метатегов) виде. К примеру, за слово «hacking» начисляется 10 баллов, а за слово «analyse» - минус 50 баллов.

При превышении весового лимита, заданного в dansguardianf1.conf для целевой категории «детей», усиленно ограждаемых от неприглядного вида «виртуальной грязи», DG блокирует доступ к странице, о чём рапортует крайне малоинформативным сообщением, формируемым с помощью нехитрого cgi-скрипта (ни малейшей возможности обхода блокировки, как в Privoxy, здесь разумеется, не предоставляется – разве что на сервере можно временно отключить использование фильтрующего прокси браузером) .

В отличие от того же MiddleMan, способного в некоторых случаях заметно увеличить эффективность интернет-соединения (в особенности модемного) или Privoxy, после соответствующей подстройки (в ущерб функциональности) ощутимо повышающего скорость загрузки страниц за счёт блокирования на них баннерных (и любых других не представляющих ценности для пользователя) изображений, DansGuardian довольно сильно «подтормаживает» обработку запросов, перекрывая словно плотиной интернет-канал на стороне пользователя. Это объясняется длительными задержками на этапе фильтрования контента при поиске соответствий в совершенно необъятных по размерам многочисленных «чёрных» и «белых» списках, что становится особенно заметным при сильной фоновой загрузке системы, когда начинает сказываться недостаток памяти для постоянной работы с громоздкими (некомпактными) «свитками», т.е. здесь основную негативную роль играет то обстоятельство, что при большом количестве данных, поступающих на фильтрование DG, постепенно образуется и постоянно увеличивается очередь из пакетов IP, поступающих на обработку, для обслуживания которой при недостаточном объёме ОЗУ и низкой скорости фильтрации (при маломощном процессоре класса ниже Pentium III) рано или поздно приходится либо сбрасывать неумещающиеся в памяти постоянно поступающие из сети пакеты данных на диск (в своп), либо запрашивать их повторно. У меня во всяком случае сложилось впечатление, что во время пиковых нагрузок системы DG именно повторно запрашивает пакеты из сети, в какой-то степени справедливо рассчитывая на каналы доступа с высокой пропускной способностью, которыми обеспечены все без исключения школы и колледжи – т.е. контингент «потенциальных потребителей» DG – на Западе. В России же, как известно, дело обстоит несколько хуже: у нас учебные заведения если и имеют подключение к Интернет, то либо по модему (безумно медленное, но исключительно дешёвое, если населённый пункт обеспечен телефонной связью), либо беспроводное (предельно быстрое, но очень дорогое, хотя и безальтернативное для насел. пунктов, где телефонной связи (проводной) нет). Обычными же кабельными соединениями, насколько я понимаю, обеспечена меньшая часть компьютеризированных школ и колледжей.

DG может использоваться в качестве эффективного дополнения для фильтрующего «движка» Privoxy, поскольку базирующиеся на механизме подстановок PCRE и Perl-подобном синтаксисе операторов работы со строками, фильтры последнего для непосвящённого пользователя (никогда не сталкивавшегося ранее с регулярными выражениями Perl в частности и с потоковой обработкой текстовых данных в целом) представляют собой лишь конечный продукт, а не основу для создания собственных усовершенствованных систем «скверныулавлвания кустарным методом» (в соответствии с личными потребностями, которые вряд ли можно удовлетворить с помощью стандартного набора из файла default.filter). Впрочем, даже полностью отказавшись от использования механизма фильтрации Privoxy в пользу более совершенного во всех отношениях DansGuardian и, таким образом, получив возможность принимать и обрабатывать сжатый контент («отключив» действие prevent-compression в общих правилах, определённых default.action), с помощью DG вам однозначно не удастся добиться сколько-нибудь значительного прироста производительности за счёт объединения этих далеко не самых быстрых и эффективных (речь идёт именно о производительности, а не о качестве работы) прокси-фильтров в единую цепочку обработки запросов.

Во всяком случае, так будет до тех пор, пока вы не займётесь рационализацией громоздкой иерархии «списков» и «рейтингов» DansGuardian.

А сделать это вам так или иначе придётся, поскольку для того, чтобы фильтрация контента имела хоть какой-то смысл, стандартные английские blacklist\'ы для DG как минимум необходимо дополнить их русскоязычным эквивалентом, взяв за основу, к примеру, готовые списки от UserGate и с помощью стандартных для *nix-систем средств осуществить «поточное» (sed+awk+grep+tr, как вариант) преобразование их в формат DG (преобразование довольно простое, но в виду огромного объёма обрабатываемых данных неосуществимое ни в полуавтоматическом (глобальной заменой в текстовом редакторе), ни уж тем более – в ручном режиме)

Your rating: Нет Average: 6 (2 votes)
RSS-материал