Как заблокировать определенные домены и URL с помощью privoxy

2

Я настроил privoxy на моем маршрутизаторе с OpenWRT. Прокси, кажется, работает хорошо, так как я могу путешествовать с моим трафиком, проходящим через него.

Я попытался установить минимальный пример блокировки только с одним доменом в правиле блокировки:

{+block {Too bad my friend...No facebook for you}}
    www.facebook.com

Это правило можно найти в файле tinyblock.action, который я включил в мою конфигурацию в /etc/config/privoxy. enable-blocksОпция установлена 1. Однако, когда я пытаюсь получить доступ к Facebook, прокси ничего не блокирует ...

Есть идеи по этому поводу?

Как ответил @MariusMatutiae, существует проблема с фильтрацией https. Я провел небольшое исследование, и документация privoxy прямо говорит:

4,15. Как Privoxy может фильтровать защищенные (HTTPS) URL-адреса?

Поскольку безопасные HTTP-соединения являются зашифрованными сеансами SSL между вашим браузером и защищенным сайтом и предназначены для обеспечения надежной защиты, Privoxy мало что может сделать, кроме как передать необработанные бессмысленные данные с одного конца на другой без обработки.

Единственным исключением является блокировка по шаблонам хоста, так как клиент должен сообщить Privoxy имя удаленного сервера, чтобы Privoxy мог установить соединение. Если это имя соответствует шаблону только для хоста, соединение будет заблокировано.

Что касается блокировки рекламы, то это меньшее ограничение, чем может показаться, поскольку источники рекламы часто идентифицируются по имени хоста, и часто баннеры, размещаемые на зашифрованной странице, тем не менее незашифрованы по соображениям эффективности, что обуславливает они в полную силу блокировки рекламы Privoxy.

«Cookie-файлы содержимого» (те, которые встроены в фактический контент страницы HTML или JS, см. Фильтр {content-cookies}), в транзакции SSL невозможно заблокировать при этих условиях. К счастью, это, кажется, не очень распространенный сценарий, так как большинство куки приходят традиционными способами.

Но, во всяком случае, я никогда не показываю Facebook, появляющийся в моих журналах ...

Rerito
источник
«часто баннеры, которые должны быть размещены на зашифрованной странице, все же остаются незашифрованными по соображениям эффективности»… каждый современный браузер, который я видел, предупреждает об этом из-за утечки в боковом канале (URL-адрес HTTPS виден в Referer, куки. ... и это даже не входит в проблемы внедрения скриптов через небезопасные элементы)
Бен Фойгт
@BenVoigt Это не проблема под рукой. Здесь, если я правильно понимаю документ, действие блока должно работать, даже если трафик находится в HTTPS, потому что я использую шаблон хоста.
Рерито
Нет, это просто комментарий к технической неточности документации, которую вы цитируете. Ваша настоящая проблема, вероятно, заключается в том, что ваша система не настроена на отправку трафика HTTPS на прокси-сервер в первую очередь. Используете ли вы явную настройку прокси (в браузере) или прозрачное перенаправление через правила iptables?
Бен Фойгт
@BenVoigt Шанс, который вы спросили ... Пока я только на настройке тестирования, поэтому я применяю настройки прокси на моей машине. Как только я проверил желаемое поведение, я установлю правила iptables на маршрутизаторе, чтобы перенаправлять трафик через прокси. После проверки я заметил, что не настроил https-прокси ... Когда я это делаю, я получаю ERR_TUNNEL_CONNECTION_FAILEDот chrome
Rerito
@BenVoigt После этого последнего замечания я попытался получить доступ к другим страницам через https, и все прошло нормально. Из этого я делаю вывод, что privoxy делает это. Он просто не показывает обычную заблокированную страницу (возможно, потому что не может редактировать содержимое запроса, так как он зашифрован). Я был бы рад принять ответ от вашего комментария, поскольку вы заставили меня заметить мою ошибку :)
Рерито

Ответы:

3

Конфигурацию прокси нужно изменить, чтобы включить HTTPS .... в браузере, обычно для HTTPS прокси есть отдельная настройка, и если вы используете прозрачный прокси, вам понадобится дополнительное правило перенаправления iptables для TCP-порта 443.

Если вы не выполните этот шаг настройки, ваш браузер будет подключаться напрямую к HTTPS-серверу, а не к Privoxy.

Например, вот настройка в Firefox:

введите описание изображения здесь

Интересно, означает ли «SSL-прокси», что TLS не включен? Конечно, нет, так как я не думаю, что браузер может знать, является ли конкретный сайт SSL или TLS, пока он не подключится.

Бен Фойгт
источник