Privoxy — это некэширующий прокси-сервер с открытым исходным кодом, предназначенный для фильтрации веб-контента, модификации HTTP-заголовков и управления данными для повышения конфиденциальности пользователей и блокировки нежелательного содержимого, такого как реклама и трекеры.
Что такое Privoxy?
Privoxy функционирует как промежуточный прокси, обрабатывающий HTTP и HTTPS трафик между клиентом (браузером или другим приложением) и целевым веб-сервером. Его основное назначение — не ускорение доступа через кэширование, а активная модификация и фильтрация данных для защиты конфиденциальности. Он может блокировать рекламу, веб-трекеры, управлять файлами cookie, изменять или скрывать HTTP-заголовки (например, Referer, User-Agent, Accept-Language), а также выполнять другие манипуляции с веб-трафиком согласно настроенным правилам.
Privoxy не является анонимизирующим прокси сам по себе, но он значительно улучшает приватность, предоставляя тонкий контроль над информацией, передаваемой веб-сайтам. Часто его используют в связке с другими прокси-серверами (например, SOCKS5 или HTTP-прокси с изменением IP-адреса) для достижения более высокого уровня анонимности и безопасности.
Ключевые возможности Privoxy
- Фильтрация контента: Блокировка рекламы, баннеров, всплывающих окон, веб-трекеров, скриптов аналитики и другого нежелательного содержимого.
- Модификация HTTP-заголовков:
- Скрытие или подмена заголовка
Referer, предотвращая отслеживание переходов. - Изменение заголовка
User-Agentдля маскировки типа браузера или операционной системы. - Управление заголовком
Accept-Language. - Добавление или удаление произвольных заголовков.
- Скрытие или подмена заголовка
- Управление файлами cookie: Блокировка, перенаправление или изменение файлов cookie для предотвращения отслеживания.
- Гибкие правила фильтрации: Поддержка регулярных выражений и условных правил, позволяющих применять фильтры на основе URL, доменов, заголовков и других параметров.
- Цепочка прокси: Возможность перенаправлять трафик на вышестоящие прокси-серверы (SOCKS5, HTTP), что позволяет комбинировать функциональность Privoxy с другими решениями для обхода геоблокировок или изменения IP-адреса.
- Легковесность и низкое потребление ресурсов: Privoxy разработан быть эффективным и может работать на устройствах с ограниченными ресурсами.
- Поддержка HTTPS: Фильтрация HTTPS-трафика через SNI (Server Name Indication) и, при определенных условиях, с использованием MITM-подхода (требует установки корневого сертификата на клиенте).
Принцип работы Privoxy
Клиентское приложение (например, веб-браузер) настраивается на использование Privoxy как HTTP-прокси. Когда клиент отправляет запрос, Privoxy перехватывает его, применяет к нему набор предопределенных и пользовательских правил фильтрации и модификации. После обработки запрос либо отправляется напрямую к целевому веб-серверу, либо перенаправляется на вышестоящий прокси (если настроена цепочка). Ответ от веб-сервера также проходит через Privoxy, где могут быть применены обратные фильтры (например, для удаления скриптов отслеживания из HTML-кода).
Privoxy не кэширует данные, что означает, что каждый запрос обрабатывается в реальном времени, обеспечивая актуальность информации и минимизируя задержки, связанные с кэшированием.
Установка и базовая конфигурация
Установка Privoxy обычно выполняется через менеджер пакетов операционной системы.
Пример установки:
- Debian/Ubuntu:
bash sudo apt update sudo apt install privoxy - CentOS/RHEL:
bash sudo yum install privoxy - macOS (с Homebrew):
bash brew install privoxy
Основной файл конфигурации Privoxy — config. Его расположение может варьироваться:
* Linux: /etc/privoxy/config
* macOS (Homebrew): /usr/local/etc/privoxy/config
Базовая настройка config файла:
-
Адрес прослушивания: Определяет IP-адрес и порт, на котором Privoxy будет принимать соединения от клиентов.
listen-address 127.0.0.1:8118 # listen-address [::1]:8118 # Для IPv6 # listen-address 192.168.1.100:8118 # Для прослушивания на конкретном сетевом интерфейсе
Рекомендуется использовать127.0.0.1:8118для локального использования или конкретный IP-адрес интерфейса, если Privoxy должен быть доступен из локальной сети. -
Перенаправление на вышестоящий прокси (опционально): Если вы используете Privoxy в цепочке с другим прокси, например, SOCKS5-прокси вашего провайдера.
# forward-socks5 / 127.0.0.1:9050 . # Пример для Tor SOCKS5 прокси # forward / 192.168.1.1:8080 # Пример для HTTP-прокси
Синтаксис:forward-socks5 [протокол] [адрес_прокси]:[порт_прокси] .
[протокол]может быть/(для всего трафика), или конкретный протокол (.http,.https). Точка в конце (.) обязательна. -
Файлы действий (actions files): Privoxy использует файлы действий для определения правил фильтрации. По умолчанию включены несколько файлов.
actionsfile default.action actionsfile user.action # Пользовательские правила
После изменения файла конфигурации необходимо перезапустить Privoxy.
sudo systemctl restart privoxy # Для systemd-систем
Настройка фильтрации и пользовательских правил
Privoxy использует систему правил, определенных в файлах действий. Эти правила могут быть глобальными или применяться к конкретным доменам/URL.
Структура файла действий
Каждое правило состоит из трех частей:
1. Действие: Что Privoxy должен сделать (например, +block, -hide-referer, +set-cookie-fwd-spoof).
2. Тип объекта: К чему применяется действие (например, { +block }, { -filter }).
3. Цель: К каким URL или шаблонам URL применяется действие.
Пример user.action:
# Блокировка конкретного домена
{ +block }
.example.com
.tracking-site.net
# Скрытие заголовка Referer для всех сайтов
{ -hide-referer }
/
# Подмена User-Agent для конкретного сайта
{ +user-agent{Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36} }
.specific-site.com
# Включение фильтрации изображений для всех сайтов, кроме исключений
{ +set-image-blocker }
/
{ -set-image-blocker }
.trusted-site.com
Типы действий (фрагменты)
Примеры часто используемых действий:
+block: Блокировать запрос.+hide-referer: Скрыть или подменить заголовокReferer.+deanimate-gifs: Превратить анимированные GIF в статичные изображения.+filter{TEXT_FILTER}: Применить текстовый фильтр к содержимому (например, для удаления скриптов).+set-cookie-fwd-spoof: Подменить или удалить некоторые куки при отправке на сервер.+set-image-blocker: Блокировать изображения, которые соответствуют предопределенным шаблонам.+add-header{Header-Name: Value}: Добавить произвольный заголовок.+del-header{Header-Name}: Удалить заголовок.
Подробный список всех доступных действий и фильтров находится в документации Privoxy, а также в файлах default.action и match-all.action.
Цепочка Privoxy с другими прокси
Одной из мощных возможностей Privoxy является его способность работать в цепочке с другими прокси-серверами. Это позволяет объединять функции фильтрации Privoxy с возможностями анонимизации или обхода блокировок, предоставляемыми другими прокси.
Пример: Privoxy + SOCKS5 прокси
Для использования Privoxy с SOCKS5 прокси (например, от вашего провайдера прокси-сервисов):
В файле config добавьте или измените директиву forward-socks5:
listen-address 127.0.0.1:8118
# Forward all traffic through a SOCKS5 proxy
forward-socks5 / 192.0.2.100:1080 .
# Если SOCKS5 прокси требует аутентификации:
# forward-socks5-user / 192.0.2.100:1080 user:password .
В данном примере:
* 127.0.0.1:8118 — адрес, на котором Privoxy будет прослушивать запросы от вашего клиента.
* 192.0.2.100:1080 — IP-адрес и порт вашего SOCKS5-прокси.
* / — означает, что весь трафик будет перенаправляться.
* . — обязательный символ, завершающий директиву.
Схема работы:
1. Клиент (браузер) отправляет запрос на 127.0.0.1:8118 (Privoxy).
2. Privoxy обрабатывает запрос (фильтрация, модификация заголовков).
3. Privoxy перенаправляет обработанный запрос на 192.0.2.100:1080 (SOCKS5 прокси).
4. SOCKS5 прокси отправляет запрос в интернет, используя свой IP-адрес.
5. Ответ возвращается через SOCKS5 прокси, затем через Privoxy (где может быть применена обратная фильтрация) и, наконец, клиенту.
Эта конфигурация обеспечивает, что весь исходящий трафик сначала очищается Privoxy от нежелательных элементов, а затем анонимизируется или меняет IP-адрес через вышестоящий SOCKS5 прокси.
Сравнение Privoxy с другими решениями
| Характеристика | Privoxy | Браузерный Ad Blocker (uBlock Origin, Adblock Plus) | VPN | Squid (HTTP/HTTPS кэширующий прокси) |
|---|---|---|---|---|
| Основная цель | Фильтрация контента, приватность, модификация заголовков | Блокировка рекламы/трекеров в браузере | Шифрование трафика, изменение IP, обход цензуры | Кэширование, ускорение, контроль доступа |
| Уровень работы | Сетевой (прокси-сервер) | Браузерное расширение | Сетевой (туннелирование) | Сетевой (прокси-сервер) |
| Защита конфиденциальности | Высокая (контроль заголовков, куки, трекеров) | Средняя (только в браузере) | Высокая (скрытие IP, шифрование) | Низкая (основная цель не приватность) |
| Блокировка рекламы | Эффективная, на уровне сети | Эффективная, на уровне браузера | Нет (только если VPN провайдер предлагает) | Нет (только если настроены правила) |
| Изменение IP-адреса | Нет (только через цепочку с другим прокси) | Нет | Да | Нет (только если сам Squid является выходной точкой) |
| Шифрование трафика | Нет (только если вышестоящий прокси шифрует) | Нет | Да | Нет |
| Применимость | Любое приложение, поддерживающее прокси | Только веб-браузеры | Все приложения через туннель | Любое приложение, поддерживающее прокси |
| Сложность настройки | Средняя (файл config, actionsfile) |
Низкая (установка расширения) | Низкая (установка клиента) | Высокая (множество опций) |
Ограничения Privoxy
- Только HTTP/HTTPS: Privoxy обрабатывает только HTTP и HTTPS трафик. Он не может фильтровать другие протоколы, такие как FTP, SMTP или произвольный TCP/UDP трафик. Для таких целей требуется более универсальный прокси или VPN.
- Производительность: Хотя Privoxy легковесен, интенсивная фильтрация и обработка регулярных выражений могут вносить небольшую задержку, особенно на высоконагруженных системах или при очень сложных правилах.
- Настройка клиента: Каждое клиентское приложение должно быть явно настроено на использование Privoxy как прокси. Это может быть неудобно для большого количества приложений или устройств.
- HTTPS MITM: Для глубокой фильтрации HTTPS-трафика (например, модификации содержимого) Privoxy потребуется выполнять MITM (Man-in-the-Middle) атаку, что требует установки корневого сертификата Privoxy на клиентских устройствах. Без этого Privoxy может фильтровать HTTPS только на основе SNI (Server Name Indication) и заголовков CONNECT.
Privoxy является мощным инструментом для повышения конфиденциальности и контроля над веб-трафиком, особенно когда используется в связке с другими прокси-решениями. Его гибкость в настройке правил и возможность модификации заголовков делают его ценным дополнением к арсеналу средств для управления сетевым доступом.