Squid+Bfilter+Ziproxy+листы AdBlock=быстрый интернет без рекламы

Всем привет!
Наткнулся на замечательные статьи посвящённые оптимизации интернет канала для пользователей.
У меня дома есть сервер, который раздаёт интернет на несколько ПК и на нём крутиться Squid.
Раньше рекламу резал SquidGuard, но как-то не качественно получалось.
Решил заменить и оптимизировать.

Схема оптимизации проста:
В интернет:
Squid (кэшируем) => Ziproxy (сжимаем) => Bfilter (обрезаем рекламу) => Интернет

Из Интернета:
Интернет => Bfilter (обрезаем рекламу) => Ziproxy (сжимаем) => Squid (кэшируем) => Клиент

1) Ставим Bfilter по ЭТОЙ инструкции.
Для пользователей Gentoo по первой части ЭТОЙ инструкции:



Цитата:
Итак. Приступим. Допустим что Gentoo Linux уже установлен на уровне базовой системы и в ядре включена поддержка iptables. Теперь установим bfilter, squid и iptables:

emerge bfilter squid iptables

Далее приступаем к настройке. Сначала настраиваем bfilter. По умолчанию он запускается в chroot-окружении, но не работает:) Для решения этой проблемы "достаём" его из chroot. Для этого в файле /etc/conf.d/bfilter заменяем строчку:

BFILTER_OPTS="-u bfilter -g bfilter -r /etc/bfilter"

На строку:

BFILTER_OPTS="-u bfilter -g bfilter"

Затем открываем в редакторе файл /etc/bfilter/config и правим следующим образом: меняем значение параметра "ad_border" на "none", т.е. отключаем отображение границ вырезаной рекламы (уж больно не эстетично они выглядят:)). Так же меняем значение параметра "page_cleanup" на "safe", чтобы не просто блокировать рекламу, но и по возможности вырезать её код, из кода загружаемых страниц. Здесь так же ещё возможно значение "maximum", но в этом случае возможны поломки кода, что нежелательно.

На этом настройка bfilter заканчивается и можно его запускать:

rc-update add bfilter default
/etc/init.d/bfilter start

2) Ставим Ziproxy по ЭТОЙ инструкции.

3) Прикручиваем к Squid
Правим squid.conf
http_port 3128 transparent


never_direct allow all
cache_peer 127.0.0.1 parent 8787 0 no-query no-digest

8787 - Это порт Ziproxy из примера.

4) Пробуем всё запустить и добавляем сервисы в автозапуск.

5) Прикручиваем фильтры от программы AdBlock

Базовая инструкция для FreeBSD доступна здесь

Но, она предназначена для получения апдейтов из одного источника.
Что-ж модифицируем скрипт для скачивания списков из множества источников
Источники списков для AdBlock для русских сайтов можно взять на ЭТОЙ ветке форуме в подписях участников.

Поскольку у меня Gentoo, то я выкладываю свои правленые скрипты:

В adblock2bfilter.pl меняем путь до Perl
#!/usr/bin/perl

В bfilterUpdateLists.sh требуются большие изменения.
Вот мой файл, который качает списки со множества источников:


  1. #!/bin/bash

  2. #Update Bfilter

  3. EASYLIST_URL=link.txt

  4. TEMP_FILE="/tmp/bfilterList.tmp"

  5. LOCAL_LIST_FILE="/etc/bfilter/urls.local.save"

  6. OUTPUT_FILE="/etc/bfilter/urls.local"

  7. WGET="/usr/bin/wget"

  8. CAT="/bin/cat"

  9. CONVERTER="/usr/local/bin/adblock2bfilter.pl"

  10. BFILTER="/etc/init.d/bfilter"

  11. ${WGET} -q -O - -i ${EASYLIST_URL} | ${CONVERTER} >${TEMP_FILE}

  12. if [ -s ${TEMP_FILE} ]; then

  13. echo "Updating BFilter URLs:"

  14. if [ -f ${LOCAL_LIST_FILE} ]; then

  15. ${CAT} ${TEMP_FILE} ${LOCAL_LIST_FILE} >${OUTPUT_FILE}

  16. rm ${TEMP_FILE}

  17. else

  18. mv ${TEMP_FILE} ${OUTPUT_FILE}

  19. fi

  20. chmod 640 ${OUTPUT_FILE}

  21. ${BFILTER} restart

  22. echo ""

  23. fi



Т.е Ссылки на списки с фильтрами Мы пишем в файл link.txt, который у меня лежит в директории со скриптом.

Вот мой link.txt с некоторыми фильтрами:
http://ruadlist.googlecode.com/svn/trunk/adblock.txt
http://easylist.adblockplus.org/adblock_rick752.txt
http://nsis.narod.ru/clean_internet/aag.txt
http://nsis.narod.ru/clean_internet/aas.txt
http://nsis.narod.ru/clean_internet/ac.txt
http://nsis.narod.ru/clean_internet/ae.txt
http://nsis.narod.ru/clean_internet/ao.txt

6) Записываем скрипт cron для автообновления.

Всё, радуемся результату.
blog comments powered by Disqus