Автор Тема: Использование privoxy для удаления рекламы с помощью фильтров adblock plus  (Прочитано 9705 раз)

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 667
  • Кто ищет, тот найдёт.
    • Email
Рассмотрим вопрос централизованного удаления рекламы с помощью прокси сервера, в качестве которого выступит 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МГц всё же есть небольшие задержки в обработке запросов).

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 5 539
а зачем прокси от 3аразы если использовать приквокси?

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 667
  • Кто ищет, тот найдёт.
    • Email
а зачем прокси от 3аразы
Учёт, ограничение трафика, статистика, кстати, спасибо, что напомнили (обновил первый пост): можно любой другой прокси-сервер использовать (squid, например) для подсчёта трафика, ограничения скорости/трафика. Privoxy является прокси лишь по способу обработки трафика и предоставления сервиса многим пользователям (в этом плане его можно сравнивать с proxomitron под винду, который тоже использовался одно время именно как прокси-рекламорезка), но его основное предназначение находится совсем в другой плоскости, нежели у 3proxy. Здесь суть именно в том, что каждый из них используется на своём месте (хотя я и не исключаю [просто не разбирался], что средствами 3proxy можно тоже каким-то образом рекламу резать, способ же использовать привокси для этих целей был найден довольно быстро).

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 667
  • Кто ищет, тот найдёт.
    • Email
Для работы скрипту требуется рабочий выход в Сеть, установленные privoxy и wget.
По первой не заметил, что наличие установленного в системе privoxy для получения нужных .action и .filter файлов не требуется, но требуется наличие созданных директорий:/opt/etc/config/opt/tmpЭти директории должны быть доступны на запись пользователю, от которого запускается скрипт. Обновлённая версия скрипта прилагается.