Ziproxy + BFilter на FreeBSD

Ziproxy


Данная статья является первой в цикле о том, как настроить Ziproxy в связке с BFilter для создания прокси-цепочки, благодаря которой все веб-страницы будут очищаться от рекламы и сжиматься. Соответственно получается экономия трафика. Также рекомендую не вешать все прокси в открытый доступ, а оставить за шифрованным туннелем. Как это сделать, написано в статье о STunnel.
Установка и настройка

В конфигурации Ziproxy не нуждается (сжатие изображений с помощью Ziproxy в данной статье не рассматривается, т.к. по субъективному мнению автора это является лишним). Соответственно только сборка и установка:
# cd /usr/ports/www/ziproxy
# make install clean

Далее предлагается пример файла конфигурации для связки Ziproxy<=>BFilter:
## порт Ziproxy
Port = 8787

## не играет значения, если у вас 1 внешний ip-адрес
Address = "127.0.0.1"

## раскомментировать, если требуется принимать запросы только от конкретного ip-адреса
#OnlyFrom = "85.111.55.212"

## Установка парольного доступа. Формат файла user:password.
#PasswdFile="/usr/local/etc/ziproxy/http.passwd"

NextProxy="127.0.0.1" # перенаправлять запрос [[BFilter]]
NextPort=8785 # порт BFilter

## заменять заголовки, требуя от сервера отдать данные в сжатом виде (экономит траффик сервера).
OverrideAcceptEncoding = true

## таймаут запроса (секунды)
ZiproxyTimeout = 25

## файлы, больше этого размера (байты), не будут обработаны. лучше не менять это значение, т.к. оно является оптимальным.
MaxSize = 4194304

## файлы, размер которых меньше этого значения, вначале будут обработаны, а потом уже отправлены клиенту. рекомендую все файлы обрабатывать "на лету", т.е. во время отправки
MinTextStream = 0

UseContentLength = false

## сжимать выходные данные с помощью алгоритма gzip
Gzip = true

## типы данных, которые разрешено обрабатывать
Compressible = {
"shockwave", "msword", "msexcel", "mspowerpoint", "rtf", "postscript",
"java", "javascript", "staroffice", "vnd.", "futuresplash",
"asp", "class", "font", "truetype-font", "php", "cgi", "executable",
"shellscript", "perl", "python", "awk", "dvi", "css",
"xhtml+xml", "rss+xml", "xml", "pdf", "tar"
}

## сжатие изображений лучше отключить
ProcessJPG = false
ProcessPNG = false
ProcessGIF = false

# оптимизирование текстовых данных
ProcessHTML = true
ProcessCSS = true

## оптимизирование html-кода
ProcessHTML_CSS = true
ProcessHTML_JS = false # в некоторых случаях портит код. отключаем.
ProcessHTML_tags = true
ProcessHTML_text = true
ProcessHTML_PRE = true
ProcessHTML_NoComments = true
ProcessHTML_TEXTAREA = true

# на текущий момент работает нестабильно, поэтому отключим
ModifySuffixes = false

Это всё, что требуется для настройки Ziproxy. Далее предлагаю ознакомиться со статьёй по настройке BFilter.

BFilter

Данная статья является второй в цикле о том, как настроить Ziproxy в связке с BFilter для создания прокси-цепочки, благодаря которой все веб-страницы будут очищаться от рекламы и сжиматься. Соответственно получается экономия трафика. Также рекомендую не вешать все прокси в открытый доступ, а оставить за шифрованным туннелем. Как это сделать, написано в статье о STunnel.
Введение

BFilter является некэширующим прокси-сервером, предназначенным для удаления баннеров, pop-up и прочих рекламных модулей. Схема взаимодействия после создания цепочки получится следующей:
_______________
|| || || || || || // \
|| браузер || ==> || Ziproxy || ==> || BFilter || ==> || World Wide Web ||
|| пользователя || || || || || || ||
|| || || || || || \_______________//
Установка и настройка

Конфигурации у BFilter нет. Поэтому только сборка и установка:
# cd /usr/ports/net/bfilter
# make install clean

Далее предлагается пример файла конфигурации для связки Ziproxy<=>BFilter:
; слушать на этом ip и порту
listen_address = 127.0.0.1:8785

; сжимать данные, отдаваемые [[Ziproxy]]
client_compression = yes

; обводить баннеры, которые не удалось удалить этим цветом (hex-представление)
ad_border = 676767

; page_cleanup = off | safe | maximum
; режим удаления рекламы. рекомендую именно safe, т.к. в maximum, BFilter урезает даже информеры.
page_cleanup = safe

; отключить
tray_icon_animation = no

; максимальный размер внешних скриптов, которые обрабатывает [[BFilter]]. рекомендую отключить, т.к. при обработке внешних скриптов наблюдается торможение в работе и порча некоторого javascript-кода.
max_script_fetch_size = 0

; максимальный размер сжатых скриптов.
max_script_eval_size = 0

; максимальный уровень вложенности скриптов.
max_script_nest_level = 0

; сколько экономить трафика сервера благодаря эвристическому алгоритму. рекомендую 0, т.к. большой разницы нет.
save_traffic_threshold = 0

; добавлять заголовок X-Forwarded-For с ip-адресом клиента.
report_client_ip = no

; размер кеша для обработанных скриптов. т.к. обработка такого вида отключена, то и кеш не нужен.
cache_size = 0

На этом настройка BFilter завершена. Прокси-цепочка Ziproxy<=>BFilter готова.

Обновлено: 12.03.2015