9. Файл фильтра
Все подстановки текста, которые могут быть осуществлены через
действие фильтра filter
, должны быть сначала определены в файле фильтра, обычно называемом
default.filter, который может выбираться опцией конфигурации
filterfile.
Стандартная ситуация - избавление от таких HTML и JavaScript
"комаров", как всплывающие окна, консоли выхода, уродливые
окна без средств навигации, пакостные мерцающие ссылки и т.д., или
удерживание картинок в рамках приличий (в стандартных размерах банера
или сообщения об ошибке), или чтобы просто повеселиться. Возможности
безграничны.
Фильтрация работает на любых типах документов, основанных
на тексте, включая HTML, JavaScript, CSS и т.д. (т.е. все типы text/*
MIME, исключая text/plain - обычный текст). Замены
осуществляются на уровне источника, так что, если вы хотите
"созидать свои собственные" фильтры, вы должны быть на "ты"
с синтаксисом HTML.
Наподобие actions files, файл
фильтра разбит на секции, названные здесь фильтрами (filters).
Каждый фильтр состоит из линии заголовка, начинающейся с ключевого
слова FILTER:, за которым следует имя фильтра,
и краткого (в одну строку) описания - а что он, фильтр,
собственно, делает. Ниже этой линии начинается работа, т.е.
строки, определяющие конкретные текстовые замещения. По соглашению
само имя фильтра должно описывать, что именно фильтр исключает.
Комментарий используется в web-based
user interface (пользовательский интерфейс, основанный на web).
Как только фильтр, названный по имени, был определен в
файле фильтра, он может вызываться через механизм действия в форме
+filter{name}(имя)
в любом actions file (файл действий).
Строка заголовка фильтра, названного "foo", может быть
похожа на следующую (ФИЛЬТР: foo Замещает все "foo" на
"bar"):
FILTER: foo Replace all "foo" with "bar"
|
Ниже этой строки, но выше следующей линии заголовка, начинается
работа, определяющая, какие текстовые замещения выполняются фильтром.
Работа фильтра описывается синтаксисом, имитирующим оператор
s/// языка Perl.
Если вы накоротке с Perl'ом, вы найдете это совершенно естественным,
но, может быть, захотите заглянуть в PCRS
man page , для выяснения тонких различий с Perl'ом. В глаза
бросается поддержка не стандартного символа U, возвращающего
значение по умолчанию для умеренного соответствия.
Если вам не знакомы регулярные выражения, вы можете заглянуть
в
Appendix on regular expressions
(Приложение по регулярным выражениям), и посмотреть Perl
manual (Руководство по Perl) в части синтаксиса оператора
s/// operator's syntax и Perl-style
regular expressions (Регулярные выражения в стиле Perl). Примеры
ниже тоже могут помочь вам на первом этапе.
9.1. Работа с файлом фильтра
Давайте укомплектуем наш фильтр "foo". Мы уже определили
заголовок, но работа фильтра еще не оформлена. Поскольку все, что он
должен сделать, это заменить "foo" на "bar",
потребуется единственное (тривиальное) деяние:
Но постойте! Разве в комментарии не сказано, что все
появления "foo" должны быть замещены? А мы записали так,
что замещаться будет только первое появление "foo" на
каждой странице. Для глобальной замены нам нужно добавить опцию g:
Окончательно же фильтр будет похож на следующий:
FILTER: foo Replace all "foo" with "bar" s/foo/bar/g
|
Взглянем на примеры наиболее интересных реальных фильтров. Ниже вы
видите фильтр, защищающий от некоторых распространенных
злоупотреблений JavaScript. Рассмотрим его работу по порядку:
FILTER: js-annoyances Get rid of particularly annoying JavaScript abuse # Get rid of JavaScript referrer tracking. Test page: http://www.randomoddness.com/untitled.htm # s|(<script.*)document\.referrer(.*</script>)|$1"Not Your Business!"$2|Usg
|
Следом за строкой заголовка и комментарием, вы видите его работу.
Заметьте, что в качестве разделителя используется |
вместо /, поскольку шаблон содержит косую черту,
которая иначе должна была бы предваряться (escaped) обратной косой
чертой (\).
Теперь давайте проверим шаблон: он начинается с текста <script.*,
заключенного в скобки. Поскольку точка приравнивается к любому
символу, а * (звездочка) означает: "принять любое количество
элементов левее меня", в итоге обрабатывается "<script",
сопровождаемый любым текстом, т.е. вся страница от появления
первого тэга <script>.
Это больше, чем мы хотели бы, но шаблон продолжается:
document\.referrer соотносится только с точной строкой
"document.referrer". Точку следует предварить обратной
косой чертой, чтобы исключить ее особое употребление в качестве
"джокера", и обозначить, как обычную точку. И тогда все это
приобретает следующее значение: "принять от первого появления
тэга <script> до текста "document.referrer"
включительно, если и то, и другое присутствует на странице (и
появляется именно в такой последовательности)".
Но шаблон еще не закончен. Следующий элемент, вновь в скобках,
это .*</script>. Вы уже знаете значение .*,
так что все выражение переводится следующим образом: "принять от
первого появления тэга <script> на странице до конца, к
последнему тэгу <script>, проверив, что
текст "document.referrer" появляется где-то между
ними".
Но и это еще не вся история. Пока мы еще игнорируем опции и
скобки: часть страницы, отнесенная к подшаблону, заключенному в
скобки, будет запомнена и доступна через переменные $1, $2, ..
при замещении. Опция U переключает работу на
умеренное соответствие, что означает - первое появление .* в шаблоне
будет только "съедать" весь текст между "<script"
и первым появлением "document.referrer", а второе
появление .* будет только расширять текст до первого тэга
"</script>". Кроме того опция s говорит, что
соответствие может расширяться на множество строк на странице,
а опция g вновь означает, что замещение глобальное.
Таким образом, суммируя все, шаблон будет означать: "Соотнести
все скрипты, содержащие текст "document.referrer".
Запомнить части скрипта от (и включая) начального тэга до (и
исключая) строки "document.referrer", как переменную $1,
а часть, следующую за этой строкой до (и включая) закрывающего тэга,
как переменную $2.
Теперь шаблон расшифрован, но все ли это о замещении? Давайте
взглянем на замещение: $1"Not Your Business!"$2 ("Не
ваше дело!"), в нем не сложно прочитать: "текст,
запомненный как $1, с последующим "Not Your Business!"
(включая ковычки), и сопровождаемый текстом, запомненным как
$2". Что осуществляет строгое копирование оригинальной
строки со средней частью ("document.referrer"), замещенной
на "Not Your Business!" ("Не ваше
дело!").
Полная работа фильтра описывается следующим образом: "Заменить
"document.referrer" на "Not Your Business!",
когда оно появляется внутри тэгов <script>".
Отметьте, что эта работа фильтра не нарушает синтаксис
JavaScript, поскольку оба - и оригинал, и замещение - синтаксически
правильные строковые объекты. Скрипт только не будет больше иметь
доступа к ссылочной информации.
Мы покажем вам два других примера работы фильтра в области
подвластной JavaScript, пока, правда, только обозначив конструкцию,
представляющую интерес:
# The status bar is for displaying link targets, not pointless blahblah # s/window\.status\s*=\s*(['"]).*?\1/dUmMy=1/ig
|
\s задано для пробелов (пробелы, табуляция, возврат
каретки, подача формы), так что \s*
означает: "нуль или больше пробелов". Символ ? в .*?
делает это соотнесение условно умеренным к тексту. (Заметьте, что
опция U не установлена). Конструкция ['"]
означает: "одиночные или двойные кавычки". И, в
завершении, \I - обратная ссылка на первые круглые скобки,
напоминающая $1 выше, с той разницей, что в шаблоне
обратная косая черта указывает на обратную ссылку, в отличии от
замещения, где это делает знак доллара.
Итак, что же этот фрагмент делает? Он
замещает все, заданное в одиночных или двойных кавычках, на объект
"window.status" (окно.состояния) с фиктивным значением
(используя имя переменной, которая достаточно "обнадеживающе
редко" применяется, чтобы не конфликтовать с реальными
переменными в скриптах). Таким образом, конструкция охватывает много
случаев, когда в окне состояния отображаются, так называемые,
бессмысленные описания вместо адреса ссылки при перемещении мыши по
ссылке.
# Kill OnUnload popups. Yummy. Test: http://www.zdnet.com/zdsubs/yahoo/tree/yfs.html # s/(<body [^>]*)onunload(.*>)/$1never$2/iU
|
Включение OnUnload
event binding в HTML DOM было ПРЕСТУПНО. Когда я закрываю
окно браузера, я хочу, чтобы оно закрылось и исчезло. Все. Наша
конструкция замещает атрибуты "onunload" в "<body>"
(тело) тэгов на "слово-заглушку" никогда. Заметьте,
что опция i делает замещение шаблона
контекстно-чувствительным. И отметьте также, что умеренное замещение,
само по себе, не всегда гарантирует минимальное соответствие: в
первых круглых скобках мы должны были использовать [^>]*
вместо .* для преодотвращения чрезмерного внимания к <body>
(телу) тэга, если в нем не содержится "OnUnload", тогда как
страница имеет содержание.
Последний пример относится к разряду развлечений:
FILTER: fun Fun text replacements # Spice the daily news: # s/microsoft(?!\.com)/MicroSuck/ig
|
Обратите внимание на часть (?!\.com) (так называемый
отрицательный взгляд на заголовок) в работе шаблона, который
означает: пропускать, если строка ".com" появляется на
странице непосредственно вслед за "microsoft". Это
предотвращает нас от сбоев при ссылках на microsoft.com, и, вместе с
тем, производит замещение во всех остальных случаях.
# Buzzword Bingo (example for extended regex syntax) # s* industry[ -]leading \ | cutting[ -]edge \ | customer[ -]focused \ | market[ -]driven \ | award[ -]winning # Comments are OK, too! \ | high[ -]performance \ | solutions[ -]based \ | unmatched \ | unparalleled \ | unrivalled \ *<font color="red"><b>BINGO!</b></font> \ *igx
|
Опция x в этой конструкции относится к расширенному
синтаксису, и позволяет, так называемое, "произвольное"
использование (не интерпретируемое!) пробелов для улучшения внешнего
вида.
Идея понятна?
9.2. Предопределённые фильтры
С целью повышения удобства «эксплуатации» Privoxy, в
его дистрибутивный комплект был включён разработанный Privoxy Team
файл default.filter, уже содержащий солидную подборку
готовых фильтров на все случаи жизни:
- js-annoyances
- Назначение этого фильтра состоит в
том, чтобы избавить Вас от раздражающе-неуместных, нервирующих и вообще
всячески отравляющих Вам жизнь элементов JavaScript, традиционно
проявляющих признаки редкостной бестактности и навязчивости. С целью
изгнания этого опасного отребья за пределы Вашей досигаемости, фильтр
осуществляет следующие преобразования поступающего на его вход контента:
- Заменяет JavaScript ссылки к
запрашивающему информацию о браузере коду, на лаконичную, но ёмкую
фразу «Не Ваше Дело!» ("Not Your Business!"). Эта вводная операция
представляет собой своеобразное комплементарное дополнение для
преобразований протокольных запросов, реализуемых положительной
декларацией действия hide-referrer
,(т.е. правилом +hide-referrer)
но уже на уровне обработки собственно веб-контента.
- Удаляет все привязки
JavaScript-кода к событию выгрузки окна объектной модели DOM,
которые, по нашему глубокому убеждению, не имеют права на
существование, поскольку несут ответственность за подавляющее
большинство актов рецидива со стороны так называемых «консолей выхода»,
т.е. тех совершенно беспардонных окон, от которых очень непросто
избавится, поскольку после того как Вы в бессильной ярости закроете
одно такое окно, на его месте тут же «нарисуется» его точная копия-клон
(чаще всего, хотя это может быть и окно несколько другого
вида/конфигурации, но в любом случае цикличность будет иметь место,
поскольку количество «разных» окон всё-таки ограничено, да и не ставят
перед собой разработчики сайтов, содержащих подобные «сюрпризы», задачи
развлечь Вас разнообразием мишеней для импровизированного
«виртуального» тира «Попади в OK» :-D – п.п.)
- «Подчищает» код, интерпретация
(исполнение) которого веб-браузером неизбежно приведёт к появлению
новых окон с непредсказуемыми свойствами, например, полноэкранных,
имеющих фиксированные размеры, лишённых панели статуса, строки адреса
или полоски меню и т.д.
- js-events
- Радикальная мера для проведения
тотальной профилактики любых проблем со скриптами JS посредством полной
ликвидации этих потенциальных источников угрозы Вашему «спокойствию и
благополучию». По существу (фактически) этот фильтр удаляет все
событийные привязки для сопоставленных событиям обработчиков на языке
JavaScript, что приводит к тому, что скрипты утрачивают способность
реагировать на действия пользователя, подобные перемещениям мыши
(специально поясняю: мышь - это координатное устройство ввода такое – п.п.)
или нажатиям на её клавиши, производимое вручную масштабирование окон и
т.д.,и т.п.
- Вообще мы сильно не советуем использовать
этот фильтр в конфигурации «по умолчанию», поскольку он блокирует
работу многих скриптов, необходимых для корректной, логически связанной
работы сайтов. Фильтр js-events предназначен только для
максимально безопасного сёрфинга по особо безобразным сайтам,
объединёнными многочисленными уродливо-абсурдными связями в
своеобразный доменный «район», эдакий «злачный» Гарлем современной
Глобальной Паутины (только вот что Вам в этой «дурно пахнущей» клоаке
может понадобится?)
- html-annoyances
- Этот фильтр обезвредит многие
распространённые формы проявлений необузданного стремления некоторых
веб-дизайнеров к самовыражению, основанные на явно избыточных
возможностях создания различных визуальных эффектов, заложенных в языке
разметки HTML
- Нейтрализуются тэги BLINK
(мерцание) и MARQUEE (занавесь, пелена) (да, детка!
(перевод дословный, я тут ни при чём – п.п.)), а окна браузера
создаются только как свободно масштабируемые (конечно, если браузер
использует именно оконный интерфейс и его внутреннее устройство в
принципе позволяет менять размеры окон), так чтобы они имели панель
адреса, линейку меню и полосу прокрутки – даже если совершенно иное
указано в оригинальном HTML-коде.
- content-cookies
- Абсолютное большинство закладок
cookie устанавливается в фазе (на стадии) переговоров по протоколу
HTTP, когда эти закладки без труда могут быть обнаружены и перехвачены
действиями crunch-incoming-cookies
и crunch-outgoing-cookies
. Но в последнее время наметилась негативная тенденция ко всё более
активному переходу веб-сайтов на использование специальных внедрённых
мета-тэгов HTML и кода JavaScript с целью подсовывания cookie на уровне
веб-контента (т.е. практически cookie встраиваются прямо внутрь
HTML-страницы).
- Этот фильтр «репрессирует»
вредительский код, читающий или устанавливающий cookie. Используйте content-cookies
везде, где уже применяется позитивная форма деклараций действий,
грызущих и размалывающих в крошку отравленное печенье [cookie], которое
разные провокаторы обязательно будут пытаться подсунуть Вашему браузеру
на переговорах по протоколу HTTP (попадаются, конечно, отдельные вполне
съедобные экземпляры «мучного кондитерского изделия», но, как
говорится, бережёного Бог бережёт – п.п.).
- refresh tags
- Удаляет все тэги периодического
обновления содержимого страницы, если указанный в качестве параметра
временной интервал - период обновления превышает девять секунд (так что
«автоматические» перенаправления, осуществляемые с помощью этих тэгов,
всё равно будут работать, поскольку для реализации этого механизма
задаётся минимально допустимый интервал обновления). Disable any
refresh tags if the interval is greater than nine seconds (so that
redirections done via refresh tags are not destroyed). Применение этого
фильтра с целью сделать поведение веб-контента более адекватным Вашим
потребностям может быть полезно для сетевых конфигураций, настроенных
на соединение-по-запросу (когда периодическое обновление загруженных
веб-страниц чаще всего просто неактуально, а в случае, если у Вас
коммутируемое модемное соединение, то и вовсе вредно – п.п.), а
также в том случае, если Вы считаете соответствующие возможности языка
разметки HTML не только излишними, но и вовсе – раздражающими,
мешающими нормально работать и т.д.
- unsolicited-popups
- Этот фильтр пытается пресекать
открытие только «незванных» всплывающих окон, ограничивая возможности
их генерации исключительно теми окнами, на открытие которых
пользователем была явным образом дана санкция. [фильтр] Unsolicited-popups
был добавлен в Privoxy версии 3.0.1 в качестве улучшенного варианта
ранних (менее удачных) реализаций фильтров, действовавших по
аналогичному механизму.
- Техническое замечание: работа
фильтра основана на переопределении функции «открыть окно» языка
JavaScript с подменой её специальной функцией-заглушкой на всё время,
занимаемое фазой загрузки и отображения каждой запрашиваемой
HTML-страницы, и восстановлении исходного состояния - «статус-кво» по
завершении этой фазы.
- all-popups
- Превентивными мерами пытается
блокировать (запретить) открытие любых всплывающих окон.
Заметьте, что этот фильтр следует использовать с особой осторожностью и
благоразумием, в отличие от его [этого фильтра] несколько более
«либерального» и менее категоричного, [неполного] функционального
аналога unsolicited-popups, поскольку, приняв недостаточно
взвешенное, непродуманное решение о необходимости применения фипьтрации
all-popups, Вы вполне может создать серьёзные
(труднодиагностируемые к тому же – п.п.) проблемы при работе со
многими сайтами, для своей нормальной работы требующими от браузера
«способности» создавать всплывающие окна. В общем, этот фильтр надо
использовать с умом.
- img-reorder
- Это вспомогательный фильтр,
который сам по себе ни на что не влияет, если используется в одиночку.
Он повысит эффективность использования фильтров banners-by-size
и banners-by-link (см. ниже), если они будут
«активированы» («разрешены», в общем определены позитивной формой
декларации) в качестве «аспекта» любой из политик, включающих правило
+filter(img-reorder).
- banners-by-size
- Этот фильтр удаляет тэги
изображений HTML-кода (тэги <img>, если Вы знакомы с этим языком
разметки – п.п.), основываясь исключительно на
«подозрительности» размеров соответствующих графических объектов. К
счастью для нас (рядовых пользователей и разработчиков средств их
защиты от недобросовестного маркетинга в Глобальной Сети – п.п.),
большая часть рекламы и баннерных изображений обнаруживает очень
чётко прослеживающуюся тенденцию к систематизации и унификации,
проявляющуюся в их очевидном стремлении соответствовать определённому
набору стандартных размеров, что способствует повышению эффективности
этого фильтра для решения задач сокращения удельного веса рекламного
контента в общем трафике соединения.
- Изредка (время от времени) фильтр banners-by-size
может вызывать ложные «срабатывания» на изображениях, к рекламе
отношения не имеющих, но случайно оказавшихся соответствующими по
размерам одному из стандартных баннерных форматов.
- banners-by-link
- Это экспериментальный фильтр,
который пытается убивать любые баннеры, если их целевой URL указывает
на ранее выявленные (известные) или подозреваемые (в маркетинговом
шпионаже) сервера систем слежения за пользователями и сбора без ведома
«реципиентов» статистических сведений о них, в т.ч. информации, имеющей
сугубо конфиденциальный характер. На данном этапе развития Privoxy
использование этого фильтра ещё не может дать Вам сколько-нибудь
существенных результатов (с чем автор этого перевода категорически не
согласен... - п.п.), так что, ввиду экспериментального
характера этой разработки, использовать banners-by-link «по
умолчанию» не рекомендуется.
- webbugs
- Веб-жучки
(как известно, на профессиональном жаргоне сотрудников различных
(расплодившихся немеряно в последнее время) спецслужб «жучок» - это
миниатюрное шпионское устройство, помещаемое в непосредственной
близости от объекта(ов) слежки с целью осуществления незаметного сбора
и передачи «заинтересованным лицам» информации о нём) – это маленькие
до неразличимости графические объекты (обычно технически реализуемые
как 1Х1 GIF-изображения), которые используются для отслеживания
траектории (или иначе - трассировки) перемещения пользователей от
одного веб-сайта к другому, и сбора статистической (в лучшем случае :(
- п.п.) информации о них. Поскольку обязанности по загрузке
страницы HTML возложены на хрупкие плечи Вашего браузера, то он,
встретив тэг встроенной картинки при анализе кода страницы, будет
вынужден обратиться к содержащему эту картинку постороннему сайту,
невольно выступая таким образом в качестве посредника при передаче
шпионскому домену конфиденциальной информации о перемещениях
пользователя непосредственно в тексте URL-запроса и/или с помощью
закладок cookie, так что подосланному на веб-страницу филёру удаётся
выполнять всю «грязную работу» тихо и незаметно, позволяя за счёт столь
несущественного усложнения шпионской схемы сохранять инкогнито своего
«нанимателя», который иначе неизбежно выдал бы себя, используя
традиционные транзакции обмена HTTP, без труда выявляемые ПО на стороне
объекта слежки. Спам, основанный на HTML, использует во многом
аналогичную технику для получения подтверждений приёма сообщений
(уведомлений) с «атакуемых» адресов электронной почты (если кто-то
может предложить более адекватный вариант перевода, пожалуйста,
поделитесь своими соображениями со
мной - п.п.).
- Этот фильтр удаляет HTML-код,
занимающийся установкой подобных «жучков» при загрузке веб-страницы.
- tiny-textforms
- Фильтр довольно специфического
применения, который может быть использован для увеличения областей
редактирования (многострочные поля ввода на веб-формах, если, конечно,
это Вам о чём-нибудь говорит) и отключает в них жёсткий перенос (т.е.
пословный перенос). Этот фильтр был написан специально для системы
безопасности sourceforge.net, где подобные поля ввода являются
«излюбленным» предметом для обильных излияний желчи, совершаемых
некоторыми пользователями сервисов, предоставляемых этим доменом, хотя
в общем-то подобные проблемы с эргономикой пользовательского интерфейса
вполне могут встретиться Вам и на каком-нибудь другом сайте...
- Не рекомендуется использовать этот
фильтр для определения правил «общей» политики обработки запросов.
- jumping-windows
- Многие окна, и без того
отличающиеся маниакальным стремлением привлечь к себе Ваше пристальное
внимание, ещё и самовольно (периодически, либо через определяемые
генератором случайных чисел временные интервалы – п.п.)
перемещаются или изменяют свои размеры для того, чтобы достигнуть
оптимального (с точки зрения людей, эксплуатирующих подобные
маркетинговые технологии) эффекта, характеризующегося максимальной
стпенью «беспардонной» навязчивости. Этот фильтр удаляет (в оригинале –
нейтрализует – п.п.) соответствующий код JavaScript. Заметьте,
что у Вас могут возникнуть проблемы с некоторыми сайтами,
которые что при использовании фильтра jumping-windows будут
отображаться или вести себя совсем не так, как это было задумано их
авторами.
- frameset-borders
- Некоторые веб-дизайнеры, создавая
свои бессмертные шедевры, раз за разом совершают одну и ту же
принципиальную ошибку, «на полном серьёзе» руководствуясь при вёрстке
сайтов априорными предположениями о том, что абсолютное большинство
пользователей Интернет в мире используют для просмотра их [дизайнеров]
веб-сайтов один и тот же «брендовый» браузер одной и той же версии, при
одном и том же (видимо, уже успевшим ставшим «негласным промышленным
стандартом» :) - п.п.) разрешении экрана и т.д. потому что
только таким образом можно объяснить то, почему эти веб-мастера (от
слова «худо») считают возможным применение таких примитивных элементов,
как фреймы (элементы-контейнеры с рамкой) со статически задаваемыми
размерами, не предоставляющими пользователю даже элементарной
возможности менять их размеры вручную в тех случаях, когда исходные
размеры контейнера оказываются слишком малы для того, чтобы полностью
отображать его содержимое (а такое может иметь место, если разрешение
экрана на Вашем компьютере окажется довольно сильно отличающимся от
разрешения, при котором горе-веб-мастер верстал свои страницы. В
принципе для того, чтобы «почувствовать разницу», достаточно
просматривать подобный веб-контент при «родном» разрешении LCD монитора
с любой диагональю, отличающейся от диагонали монитора разработчика
сайта - п.п.).
- Этот фильтр замещает
соответствующие блоки HTML-кода либо аналогичным по функциональности
«разумным» с точки зрения пространственных решений вариантом, либо
простыми «заглушками». Он должен применяться для изменения
исключительно только того веб-контента, который поступает с остро
нуждающихся в подобного рода «корректировках» сайтов.
- demoronizer
- Многие программные продукты от
компании Microsoft, которые поддерживают HTML в качестве выходного
формата создаваемых с их помощью документов, используют нестандартные
расширения (читайте: нарушения) международного стандарта кодировки
ISO-8859-1, она же Latin-1. Это приводит к тому, что такие
HTML-документы отображаются с ошибками на платформах, ориентирующихся
на этот (общепринятый) стандарт.
- Фильтр demoronizer осуществляет
преобразование HTML-контента из специфических кодировок,
предназначенных для «внутреннего пользования» корпорации Microsoft, в
его эквивалентное представление, использующее набор символов Latin-1.
Учтите, что преобразование, осуществляемое этим фильтром, не может дать
какого-либо положительного эффекта, если Вы пользуетесь ПО от
Microsoft, но при этом перекодировка в любом случае неминуемо
вызовет повреждения всех документов, которые используют 8-битные наборы
символов, отличные от Latin-1 (т.е. для проживающих на территории стран
СНГ действие фильтра demoronizer будет иметь выраженный
деструктивный характер - п.п.). Этот фильтр был создан с
расчётом на то, что он может оказаться полезным, а то и незаменимым,
для европейцев, использующих не-MS платформы (скажем проще: не
использующих ОС Windows) и сталкивающихся иногда с появлением на
некоторых страницах «мусора» - посторонних символов загадочного
происхождения.
- shockwave-flash
- Фильтр для всех, кто люто
ненавидит shockwave :) В полном соответствии со своим названием, этот
фильтр «выметает» из принимаемого веб-контента код, используемый для
встраивания в HTML-страницы объектов shockwave flash.
- quicktime-kioskmode
- Изменяет код HTML, встраивающий
объекты QuickTime, таким образом, чтобы kioskmode, не дающий
возможности (т.е. не позволяющий, препятствующий ) сохранять эти
объекты на Вашем компьютере, был отключен (дезактивирован).
- fun
- Текстовые замены для получения
глубокого морального удовлетворения от просмотра полностью
перекроенного по Вашему вкусу веб-контента. Поглумитесь над Вашим
любимым Монополистом или поиграйте в лото buzzword (переводчик не в
курсе того, что это за настольная игра такая – п.п.)
- crude-parental
- Фильтр, созданный исключительно с
целью демонстрации возможностей использования Privoxy для удаления
веб-контента, содержащего те или иные ключевые слова из статически
заданного набора (нецензурные слова (но не целые выражения!), к примеру
– п.п.).
- ie-exploits
- Набор текстовых замен,
предназначенных для того, чтобы предупредить интерпретацию (исполнение)
движком браузера Internet Explorer злонамеренного HTML и JavaScript -
кода, эксплуатирующего наиболее известные уязвимости этой программы,
представляющие собой зиющие «дыры» (бреши) в системе безопасности ОС
Windows (в меньшей степени это относитcя и к MacOS)
- В настоящее время, этот фильтр
способен защитить Вас только от червя Nimda и ошибок, связанных с межсайтовым
скриптингом, так что ie-exploits нуждается в дальнейшей
доработке с целью расширению его возможностей, что в перспективе
позволит этому фильтру предоставлять более существенную защиту от
внешних атак..
- site-specifics
- Некоторые веб-сайты имеют очень
специфические проблемы, «рецепт» решения которых уникален для каждого
конкретного случая, так что соответствующие «лекарства» (меры,
направленные на устранение проблемы) категорически не могут быть
«прописаны» где-либо ещё, или даже способны вызвать повреждения на
других сайтах.
- site-specifics - это
своеобразный комплекс вариантов «курсов интенсивной терапии»,
назначаемых исключительно в индивидуальном порядке, т.е.
применяемых по отношению только к тем сайтам, для которых эту «курсы»
были разработаны, что, собственно, на уровне концептуального подхода и
демонстрирует на деле предоставляемый Вам файл default.action.
Пользователи не должны менять что-либо, связанное с этим фильтром (?! а
кто должен? - п.п.)