Рассмотрим вопрос централизованного удаления рекламы с помощью прокси сервера, в качестве которого выступит
privoxy.
Предположим, что у вас уже есть настроенный прокси сервер 3proxy или squid, но различная реклама отвлекает от выполнения текущих задач и, в любом случае, засоряет мозг. Поэтому хотелось бы как-то её со страниц пользователей вырезать. Есть, конечно, всякие "режики" и прочие дансгуардины для этих целей, но разговор пойдёт не о них, а о прокси сервере с продвинутыми возможностями фильтрации контента без возможности кэширования трафика -
privoxy.
Как известно, adblock plus использует списки общедоступных правил для своей работы (ruadlist + easylist), вот их мы и примем на вооружение в качестве списков блокировки для privoxy. На просторах Сети можно найти скрипт (во вложении), который выполняет конвертацию списков в filter и action файлы privoxy практически на автомате, но, тем не менее, пришлось его немного адаптировать для применения под alt linux (пути к бинарникам и жёсткое закрепление путей для основной и рабочей папок). Для работы скрипту требуется рабочий выход в Сеть, установленные privoxy и wget. В результате выполнения скрипта (через вызов sh имя_скрипта.sh) по пути /opt/etc/privoxy расположатся требуемые (.action и .filter) файлы для привокси. Останется только поместить данные файлы в папку с настройками privoxy (/etc/privoxy), поменять права по аналогии с имеющимися в этой папке файлами и внести эти файлы в основной конфигурационный файл privoxy (/etc/privoxy/config), который станет выглядеть примерно следующим образом:
confdir /etc/privoxy
logdir /var/log
filterfile default.filter
actionsfile match-all.action # Actions that are applied to all sites and maybe overruled later on.
actionsfile default.action # Main actions file
actionsfile ruadlist+easylist.script.action
actionsfile user.action # User customizations
filterfile ruadlist+easylist.script.filter
filterfile user.filter # User customizations
logfile privoxy
listen-address 127.0.0.1:8118
toggle 1
enable-remote-toggle 0
enable-remote-http-toggle 0
enable-edit-actions 0
enforce-blocks 0
buffer-limit 4096
enable-proxy-authentication-forwarding 0
forwarded-connect-retries 1
accept-intercepted-requests 0
allow-cgi-request-crunching 0
split-large-forms 0
keep-alive-timeout 5
tolerate-pipelining 1
socket-timeout 250
Теперь можно настроить имеющийся прокси-сервер на отправку трафика через privoxy (в файле конфигурации для 3proxy это реализуется через директиву parent) и проверять работу резалки. Необходимо добавить, что для привокси можно сделать свои страницы (путём редактирования уже имеющихся html шаблонов либо вообще составить свой шаблон), которые будут выдаваться пользователю в случае невозможности соединения с сервером или, к примеру, для блокируемых элементов (во вложении пример того, как может выглядеть объект, заблокированный по регулярному выражению его адреса [URL], на одном из сайтов). Блокирование же по списку адресов (не регулярных выражений) подразумевает отсутствие на странице подобного объекта без вывода подобного элемента страницы с возможностью его загрузить в случае некорректного срабатывания регулярного выражения на конкретном сайте/странице.
При первом применении полученных файлов было замечено, что при запуске privoxy в лог сыпятся сообщения о некорректных записях в полученных файлах. На работоспособность данные сообщения никак не влияли, но, тем не менее, я почистил данные строчки из получившихся файлов.
Данная конфигурация вполне работоспособна на машине Celeron 950/160Мб ОЗУ при обслуживании десятка пользователей по логинам/паролям через 3proxy (при этом ещё десяток ходят напрямую через 3proxy по ip адресам). Памяти много не ест, в основном скорость обработки запросов упирается в процессор (а, точнее, в моём конкретном случае в производительность шины обмена с памятью; при наличии же подобного класса процессора, но с частотой шины 133МГц, скорость обработки запросов была бы достаточной и приемлемой в случае обслуживания десятка клиентов, на 100МГц всё же есть небольшие задержки в обработке запросов).