Наткнулся на замечательные статьи посвящённые оптимизации интернет канала для пользователей.
У меня дома есть сервер, который раздаёт интернет на несколько ПК и на нём крутиться 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 требуются большие изменения.
Вот мой файл, который качает списки со множества источников:
- #!/bin/bash
- #Update Bfilter
- EASYLIST_URL=link.txt
- TEMP_FILE="/tmp/bfilterList.tmp"
- LOCAL_LIST_FILE="/etc/bfilter/urls.local.save"
- OUTPUT_FILE="/etc/bfilter/urls.local"
- WGET="/usr/bin/wget"
- CAT="/bin/cat"
- CONVERTER="/usr/local/bin/adblock2bfilter.pl"
- BFILTER="/etc/init.d/bfilter"
- ${WGET} -q -O - -i ${EASYLIST_URL} | ${CONVERTER} >${TEMP_FILE}
- if [ -s ${TEMP_FILE} ]; then
- echo "Updating BFilter URLs:"
- if [ -f ${LOCAL_LIST_FILE} ]; then
- ${CAT} ${TEMP_FILE} ${LOCAL_LIST_FILE} >${OUTPUT_FILE}
- rm ${TEMP_FILE}
- else
- mv ${TEMP_FILE} ${OUTPUT_FILE}
- fi
- chmod 640 ${OUTPUT_FILE}
- ${BFILTER} restart
- echo ""
- 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 для автообновления.
Всё, радуемся результату.