Privoxy это фильтрующий web-контент прокси. Его очень удобно использовать для удаления различной рекламы и блокирования доступа к запрещенным сайтам. (с порнографией и другой тематикой). Оно умеет работать в прозрачном режиме, когда все браузеры автоматически перенаправляются через него. Как оно работает? Бразуер формирует http-запрос и он попадает к privoxy. Уже тут privoxy может его модифицировать, что скажется на взаимоотношениях сервера с браузером в дальнейшем. Сервер формирует ответ на запрос и передаёт его браузеру. Ответ попадает к privoxy, где происходит фильтрация контента. Таким способом вы добиваетесь (возможно) полной перекройки ответа - чего ВЫ видите в браузере.
Privoxy умеет делать перенаправление на другие proxy. Вы можете построить цепочку proxy-серверов. У меня работает цепочка из ziproxy - privoxy - tor. Ziproxy это ещё один маленький прокси который делает СВОЮ работу хорошо. Он сжимаете содержимое передаваемое от сервера (если сервер сам этого не делает). И передаёт в сжатом виде браузеру. Браузер разжимает. Этим достигается экономия трафика. (на медленных и дорогих соединениях). Цепочка работает просто. Браузер обращается к ziproxy... ziproxy передает эстафету privoxy... а privoxy (если ему предписано) передаёт эстафету tor (через сокс). Но privoxy может передать эстафету и squid'у. Или другому любому proxy.
1. Прозрачность.
Нужно включить опцию accept-intercepted-requests 1 в конфиге и поступить одним из способов http://tldp.org/HOWTO/TransparentProxy-6.html. Первый способ актуален если proxy у вас не на шлюзе подсети. Если он на шлюзе, то достаточно правила redirect на шлюзе. Под шлюзом подсети понимается не ваш роутер (хотя им может быть и он), а шлюз подсети - маршрут default. Правило redirect может применяться только локально - где прокси там и правило redirect. Кстати, маркировка пакетов тоже работает локально. Так как не существует способов передать маркированный пакет по сети. Насколько я сведущ
Есть даже картинка:
Такими способами достигается прозрачность.
2. Фильтры
Фильтрами я зазываю всю фильтрующию работу privoxy. При установке privoxy у вас уже будут доступны базовые фильтры, но вы можете расширить их своими и чужими - http://privoxy.webhost.ru/uploads/preview.htm Надо заметить о adult.filter. Это фильтр порнографии. Если вы настроите у себя прозрачный способ работы через proxy, то дети не смогут обойти этот пэрант контроль. Все запросы через ключевые поисковики с порнографическим содержанием будут заблокированы.
Ещё один вариант (другой подход к фильтрации) это использовать URLBlacklist.com. Это огромный генератор плохих ссылок и доменов. Ссылки и домены разбиты по категориям. Их тоже достаточно просто можно применить с privoxy используя универсальное действие блокировки.
На этом закончим вводную часть в работу технологии и попробуем описать более конкретно настройку privoxy и в том числе для bvf.
Допустим у вас есть выделенный компьютер на базе linux. Это может быть старенький и совсем маломощный пк. И его будет достаточно. Что-то уровня p2-3 и 128mb. Устанавливать лучше минимальный linux без gui. (все равно они не будут востребованы, а отнимать ресурсы будут). Это может быть debian minimal или ubuntu server. Если у вас нет выделенного пк, а очень хочется Вам придётся посмотреть в сторону виртуальной машины. Знаю, что virtualbox можно запускать в безголовом режиме в фоне - читайте мануал к vbox. Графическое окно вам будет не нужно + запуск нужно настроить при старте windows. Сеть на виртуальной машине должна быть не через nat. Виртуальная машина должна иметь свой ip адрес. В остальном настройка ничем не будет отличаться от выделенного пк под управлением linux.
Структура сети у нас получится такой:
пк-клиенты (принадлежат сети 1.0, допустим 1.3 - адрес клиента) <-> privoxy - 1.2 <-> 1.1 - ваш шлюз в интернет.
У многих в роли шлюза выступает home gw (различные).
Вариант когда шлюзом выступает сам же клиент - прямое подключение. Это вариант мы пока рассматривать не будем.
Теперь нам надо настроить клиента. Я произвожу настройку через dhcp, где все ключевые параметры клиент получает через него. В том числе и адрес шлюза, но вариант с dhcp пока не будет затрагивать. Вам нужно указать в windows шлюзом по-умолчаюнию адрес privoxy - 1.2. Обычно шлюзом будет выступать 1.1, но вам нужно пустить всё через 1.2. А 1.2 уже пойдет через 1.1. Все операции производятся через ssh. При установке linux нужно включить ssh-сервер в установку.
Включить прозрачность на privoxy в /etc/privoxy/config (accept-intercepted-requests 1) и сделать /etc/init.d/privoxy restart.
Если вы сделали всё правило, то все ваши запросы с клиента\клиентов должна начать ходить через privoxy.
[Ответ]
Hip-Hop 16:33 12.09.2011
Сразу поясню как работает запрос. Когда в бразуере вы вбиваете доменное имя. Например google.com. Начинает работать резёлвер. Его задачей является разрешить доменное имя в ip-адрес. Ведь доменное меня существует только для удобства пользователя - людей (чтобы не запоминать ip-адреса). Доменное имя преобразуется и встаёт вопрос куда послать запрос? И вот тут самое интересное. У любого компьютера есть таблица маршрутизации. На клиентах она очень простая. Так как адрес не принадлежит сети 1.0, то его нужно послать по УНИВЕРСАЛЬНОМУ маршруту. А таким маршрутом всегда является default маршрут. Клиент думает так - 'Этот адрес назначения не принадлежит 1.0, а других предписаний я не вижу. Пошлю ка я его по default.. а там разберутся чё с ним делать дальше...' И так работает вся маршрутизация.
Таким образом запрос попадает на хост 1.2, где отрабатывает правило - iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 8118 Оно означает, что все запросы на 80-порт нужно перенаправить на 8118-порт - на privoxy. Дальше privoxy произведёт (возможно) манипуляции с запросом и отправит всё на свой default шлюз - 1.1, где всё в конце концов попадёт к серверу - google.cоm. А потом обратно вернётся на privoxy и к конечному клиенту (после обработки privoxy).
[Ответ]