Privoxy 3.0.3 Руководство Пользователя

Пред

Следующ




8. Файлы действий

Файлы действий используются для того, чтобы определить соответствие между URL и комплексом методов обработки, применяемых, к запросам, адресуемым этими URL; иными словами, файлы действий определяют рамки отдельных множеств сайтов (или даже их частей), при обращении к которым рекламные изображения, закладки cookies и различные другие аспекты HTTP-контента и транзакций будут обработаны тем или иным образом. Вместе с Privoxy поставляется 3 таких файла, различающихся способами применения:

Возможность

Предусмотрительный

Средний

Смелый

Распознавание и блокирование рекламы по URL

да

да

да

Распознавание рекламных вставок по размеру

да

да

да

Остановка анимации GIF

нет

да

да

Подмена ссылок

нет

да

да

Способ обработки поступающих закладок cookie

прозрачно

односессионные cookies

уничтожение

Подавление всплывающих окон

непредусм.

непредусм.

все

Быстрые перенаправления

нет

нет

да

Контроль HTML-кода

да

да

да

Контроль за поведением скриптов JavaScript

да

да

да

Уничтожение web-”жучков”

да

да

да

Возможность фильтрации с подменой текста оригинала

нет

нет

да

Преобразование тэга <img=...>

нет

нет

да

Фильтрование рекламы по адресу ссылки

нет

нет

да

Запрет на вольную интерпретацию стандартных кодировок программами от MS

нет

нет

да

Список используемых файлов “действий” размещён в главном конфигурационном файле и обрабатывается Privoxy в порядке следования записей в списке. (например, из default.action настройки обычно считываются до обработки user.action (если, конечно, Вы не изменили вручную список в главном config-файле, для чего Вы должны чётко осознавать последствия своих действий)). Содержимое всех файлов действий можно изменить или/и просмотреть из редактора конфигурации, доступного в режиме offline по адресу: http://config.privoxy.org/show-status.

Обычно файл действий содержит множество секций. Если Вы хотите использовать “псевдонимы” в файле действий, Вам нужно будет разместить (необязательную) секцию псевдонимов в начале этого файла. После этой секции (или в самом начале файла, если её нет – примеч. переводчика) размещено множество универсальных правил, действующих “по умолчанию” для для всех сайтов и страниц (будьте очень осторожны при использовании этого универсального набора правил в user.action или любом другом файле действий, расположенном после default.action, так как в этом случае описание индивидуальной пользовательской конфигурации может только частично или полностью нивелировать (перекрыть) результат, полученный из универсальных файлов типа default.action, переопределяя соответствующие настройки). Затем, ниже этой секции, размещаются описания исключений из общих универсальных политик. Вы можете рассматривать user.action в качестве дополнения к default.action, с той лишь преимущественной разницей, что существование user.action именно как отдельного файла значительно облегчает проведение процедуры обновления, которая, таким образом, не затронет сделанных в нём настроек.

“Действия” могут применяться для блокирования всего, что Вам нужно, включая рекламу, баннеры, или даже просто адреса сайтов, произведших на Вас до такой степени неизгладимое впечатление, что Вам хотелось бы больше никогда с ними не сталкиваться. Для всех закладок cookies может быть принята одна из тактик поведения: cookies могут либо полностью приниматься на хранение, либо полностью отвергаться, либо приниматься исключительно на период одной сессии работы в интернет-браузере (т.е в данном случае просто исключается хранение cookies в постоянной (дисковой) памяти), web-контент может быть модифицирован (своеобразная “подделка реальности” - “Penultimate Truth” по Филиппу Дику – примеч. переводчика), усмирены скрипты на языке JavaScript, отличающиеся традиционно “буйным норовом“, нейтрализованы шпионские “ловушки”, применяемые на некоторых сайтах для отслеживания пользовательской активности и сбора статистических сведений конфиденциального характера о пользователе, а также могут быть применены иные методы (в основном комплексные, включающие перечисленные выше в определённых сочетаниях – примеч. переводчика) защиты от неблагоприятных факторов окружающей Вас глобальной информационной среды. Смотрите ниже полный список “действий”, определяющих функциональные возможности Privoxy.

8.1. Поиск оптимального сочетания

Помните, что некоторые "действия", наподобие подавления cookies или запрещения на выполнение скриптов, могут создавать для Вас определённые трудности, сильно (или полностью) ограничивая функциональность некоторых сайтов, построенную на основе использования этих специальных элементов, (обеспечивающих в том числе “обратную связь” в пространстве web), приводя их (сайты) в совершенно неработоспособное состояние или сводя на нет пользу от специальных возможностей, ими предоставляемых. Поиск оптимального сочетания не всегда является простой задачей и, конечно, во многом определяется проблематикой сугубо индивидуального выбора в соответствии с Вашими личными интересами и предпочтениями. Обобщая, можно сказать, что чем более “агрессивными” будут Ваши настройки, эффект которых рапространяется на все сайты “по умолчанию” (секция в верхней части файла “действий”), тем большее число исключений Вам придётся сделать позже по отношению к “добропорядочным” сайтам (которые можно вносить в “белый список”, упомянутый в главе 7-й и более подробно обсуждаемый ниже – примеч. переводчика). Если, например, Вы “по умолчанию” настроены на то, чтобы размолотить в крошку всё отправляемое Вашему браузеру печенье (именно так в традиционном англ. языке дословно переводится технический неологизм cookies, так что это просто игра слов – п.п.), то Вам придётся сделать исключения из этого заведённого Вами правила для сайтов, посещаемых регулярно и требующих использования cookies для реализации действительно полезного информационного обмена; например, это могут быть: Ваш банк, любимый магазин, или даже просто газета, расположенные в пространстве online.

Для начала мы постарались предоставить Вам в файлах “действий” из состава дистрибутива Privoxy комплекс достаточно сбалансированных правил. Но для подобных универсальных решений нет и не может быть выработано общих подходов для простой оценки “на глазок” их пригодности к применению в реальных условиях. Существует слишком много подвижных факторов, пребывающих в постоянном взаимодействии и предопределяющих перманентный процесс обновления сайтов. Раньше или позже Вам придётся привнести изменения в предложенные нами правила (и перечитать эту главу :).

8.2. Как осуществлять редактирование

Для редактирования файлов действий проще всего использовать удобный инструмент с web-интерфейсом, доступный прямо из Вашего браузера, доступ к которому легко получить, послав из браузера запрос по специальному адресу http://config.privoxy.org/show-status (перехватываемому Privoxy как “внутренний” адрес для служебного пользования – п.п.) Редактор позволяет использовать два противоположных подхода к правке файлов “действий”: Вы можете осуществлять как очень “тонкую“ настройку любой элементарной возможности, основанную на привязке (механизме сопоставления, определения соответствий – п.п.) к одному или группе похожих адресов URL, так и довольствоваться простым выбором одного из стандартных вариантов предопределённых сводов (комплексов) правил (т.н. “политик”), таких как: “Осторожный”, “Средний” или “Смелый”. Предупреждаем: “Смелая” политика не только более агрессивна, но и включает настройки, искажающие оригинальное содержание web-страниц (к примеру, удаляющие выражения, употребление которых не принято даже в разговорной лексике, заменяющие название Всенародно Любимой Корпорации на нечто более подходящее и т.д.), целесообразность применения и качество реализации которых вполне может показаться Вам более чем сомнительными!

Если Вы предпочитаете использованию GUI (Графических Интерфейсов Пользователя) правку “голого текста”, то Вы можете, безусловно, также напрямую редактировать файлы “действий”. В этом случае за более подробной информацией Вам стоит обратиться к исчерпывающим комментариям, данным в файле default.action.

8.3. Как “действия“ ассоциируются с URL

Файлы “действий” состоят (делятся на секции) из секций . Существуют специальные секции, наподобие необязательной секции "псевдонимы", которые будут обсуждаться позже. Теперь давайте акцентируем внимание на строении и назначении обычных секций: они имеют заглавную строку (часто разделяемую на множество отдельных строк в целях улучшения зрительного восприятия), содержащую список “действий”, разделённых пробелами и заключённых в фигурные скобки. Ниже следуетсписок образцов URL, каждый адрес на отдельной строке.

Для того, чтобы определить, какие “действия” должны быть использованы для обработки запроса (в данном случае запрос передаётся по протоколам HTTP либо HTTPS – п.п.), URL-идентификатор запрашиваемой стороны последовательно сравнивается со всеми образцами всех секций каждого из используемых файлов “действий”. Каждый раз, когда обнаруживается соответствие (чёткое, либо нечёткое совпадение (с шаблонами) – п.п.) с одним из образцов, список применяемых для обработки URL действий обновляется, таким образом постоянно расширяясь, при этом в список добавляется заглавная строка той секции, в которой был найден соответствующий образец. Если комбинации действий для нескольких обнаруживающих соответствие данному URL секций оказываются несогласованными по значению(ям) одного или нескольких “действий”, то фактически будут “конфликтные” присваивания значений, за исключением последнего; для остальных (согласованных по значениям) “действий” в итоге будет получен фактически результат сложения эффектов отдельных аддитивных операций (а именно описаниями аддитивных операций являются присвоения значений действиям). Например, если сначала будет установлено соответствие между URL и основной секцией с заглавной строкой, состоящей из одной аддитивной операции: { +handle-as-image }, а затем обнаружится ещё и соответствие секции с заглавной строкой “в одно действие”: { +block }, то в результате будут использованы для обработки URL оба “действия” (как мы видим, имеет место объединение политик разных секций по принципу логического сложения (логического “ИЛИ”) - п.п.)

Вы можете проследить за процессом обработки соответствий для любого выбранного URL, посетив одну из встроенных страниц, реализующих web-интерфейс Privoxy и доступную по нижеследующему адресу: http://config.privoxy.org/show-url-info.

Более детальную информацию по затронутым в этом разделе вопросам Вы можете получить из Приложения Анатомия Действий.

8.4. Образцы и регулярные выражения

Как уже говорилось ранее, в Privoxy широко используются “образцы” для того, чтобы определить, какие действия могут быть применены для деструктивного анализа кода тех или иных сайтов и страниц, запрашиваемых Вашим браузером на предмет получения доступа к их контенту. Эти “паттерны” используют для поиска нечёткого совпадения (соответствия) на основе применения т.н. шаблонов, что позволяет достигать высокой степени гибкости при формировании общих определений. Это делает возможным создание выражений, представляющих собой контейнеры, “включающие” составной частью все заданные сочетанием шаблонов потенциально возможные расширения и, таким образом, полностью заменяющие многократно более избыточные определения множества различных образцов , имеющих (необходимые и) достаточные признаки схожести с данными “универсальными” выражениями (а “достаточность” контролируется опять же применением шаблонов – п.п.).

Обычно, выражения (или “образцы” - в данном случае под этими словами понимается одно и то же – п.п.), используемые Privoxy, имеют форму <домен>/<локальный путь>, где обе части выражения: <домен> и <путь>, вполне могут и отсутствовать (Именно по этой причине специальный образец / соответствует всем (любым) URL). Заметьте, та часть стандартного лексического представления адреса URL, которая идентифицирует используемый при обращении по этому адресу протокол обмена (например, http://), не должна включаться в те выражения, которые Вы формируете для настройки Privoxy. “Незримое присутствие” этой части учитывается автоматически! (....являясь для Privoxy само собой разумеющимся, ни коим образом не подвергающимся сомнению, абсолютно очевидным и т.д. фактом – п.п.)

www.example.com/
это паттерн доменного имени, он соответствует любому запросу к www.example.com, вне зависимости от того, какой именно документ на этом сервере запрошен.
www.example.com
означает в точности то же самое, что и в предыдущем примере. Для паттернов доменного имени завершающий символ / может быть опущен.
www.example.com/index.html
соответствует уникальному документу /index.html на www.example.com (разумеется, выражения такого рода не имеют расширений, т.е. являются “элементарными”, базовыми – п.п.).
/index.html
соответствует документу в файле с названием index.html безотносительно к имени домена, на котором документ расположен, т.е. могущим быть размещённым на любом web-сервере.
index.html
вообще ни с чем не может быть ассоциирован: ведь подобный паттерн (см. первый пример – п.п.) будет интерпретирован как доменное имя, но доменов верхнего уровня, заканчивающихся суффиксом .html не существует.

8.4.1. Шаблон доменного имени

Privoxy предоставляет очень гибкие возможности по созданию ассоциативных связей для доменной части сетевого имени: если первым или последним символом имени является “точка”, то оно становится свободно расширяемым соответственно либо в начале, либо в конце, либо же становится возможным произвольное дополнение имени с обеих сторон. Приведём несколько наглядных примеров:

.example.com
соответствует любому домену, ОКАНЧИВАЮЩЕМУСЯ на .example.com
www.
соответствует любому домену, НАЧИНАЮЩЕМУСЯ на www.
.example.
соответствует любому домену, содержащему (включающему в себя) .example. в качестве части сетевого имени (Правильнее было бы сказать: Паттерн соответствует любому FQDN, содержащему example в качестве доменной части.)

Также имеется возможность использования самостоятельного механизма подстановки на основе замещения части символьной строки доменного имени нечётким описанием на основе применения традиционных специальных шаблонов (“джокеров”, если хотите - п.п.). Они [шаблоны] работают во многом аналогично подстановочным шаблонам оболочки shell: "*" представляет последовательность из нуля и более произвольных символов, “?” обозначает вхождение в данной позиции строки любого одиночного символа, Вы также можете определять классы символов в квадратных скобках, и всё это возможно применять в совершенно произвольных сочетаниях:

ad*.example.com
одинаково соответствует и "adserver.example.com", и "ads.example.com", но не "sfads.example.com"
*ad*.example.com
обозначает всё вышеперечисленное и ещё кое-что дополнительно к этому.
.?pix.com
соответствует и www.ipix.com, и pictures.epix.com, и даже a.b.c.d.e.upix.com (и т.д, и т.п.).
www[1-9a-ez].example.c*
это определение включает в себя такие расширения, как: www1.example.com, www4.example.cc, wwwd.example.cy, wwwz.example.com и т.д, но исключает совпадение, например, с этим адресом: wwww.example.com.

8.4.2. Шаблоны локального адреса (в пределах домена)

Privoxy использует регулярные выражения, совместимые с лексикой языка Perl (прокси работает с этими выражениями посредством специальной библиотеки PCRE), для подбора соответствий текущему обрабатываемому адресу запроса.

В составе документации имеется Приложение , короткое представляет собой короткое введение в регулярные выражения, а полная (сугубо технического плана) документация, описывающая синтаксис регулярных выражений PCRE доступна в режиме on-line по адресу: http://www.pcre.org/man.txt. Также Вам может оказаться полезной (как альтернативный вариант: пробудить в Вас живой исследовательский интерес или просто любопытство - п.п.) та страница руководства man по языку Perl, которая посвящена регулярным выражениям (man perlre) и доступна также в интернет по адресу http://www.perldoc.com/perl5.6/pod/perlre.html.

Обратите внимание на то, что путевой шаблон автоматически фиксируется слева символом “/”, т.е. поиск соответствий с этим шаблоном ведётся так, как если бы в нём лидирующим знаком был “^” (регулярное выражение-префикс, говорящее о том, что следующий за ним текст должен находиться в начале строки) .

Пожалуйста, также помните о том, что поиск нечёткого совпадения среди путевых шаблонов (включая, разумеется, и просто конкретные URL-адреса, как частный случай – п.п.) по умолчанию не чувствителен к регистру символов, но Вы можете временно отменить режим автоматического преобразования строки к одному регистру в любом месте шаблона с использованием специального переключателя "(?-i)": www.example.com/(?-i)PaTtErN.* будет соответствовать только документам, путь к которым начинается словом PaTtErN, представленным в точности тем же кодовым набором, что и заданный Вами образец для сравнения.

8.5. Действия

В исходном состоянии Privoxy, т.е. до разбора и анализа каких-либо файлов настроек (разумеется, это не относится к главному конфигурационному файлу – п.п.), все “действия” по умолчанию отключены и применение определённого подмножества действий для обработки тех или иных URL-запросов станет возможным лишь после “разрешения” использования всех составляющих подмножества. Мобилизовать ту часть функциональности Privoxy, которая реализуется посредством определённого “действия”, можно просто предварив символом “+” его [действия] строковый идентификатор, а деактивизировать - соответственно, через простановку лидирующего символа “-”. Таким образом, запись +действие обозначает “примени это действие”, например, +block означает “пожалуйста, заблокируй адреса URL, обнаруживающие соответствие одному или нескольким образцам из нижеследующего списка (перечня)”, а -block обозначает “ввести запрет на блокирование любых URL, являющихся расширениями нижеследующих “путевых” регулярных выражений, даже если ранее были получены противоречащие этому указания (т.е. для некоторых из них (или для всех) было разрешено действие block)”.

Кроме того, “действия”, которыми Вы оперируете, должны быть размещены в одной строке, заключенной в фигурные скобки, и разделены типографскими пробелами (т.е нельзя же разделять вообще всё символом подчёркивания, как это, не отдавая себе в том отчёта, по привычке пытаются делать профессиональные программисты! - п.п), так что должно получаться нечто подобное этому: {+some-action -some-other-action{some-parameter}}, сопровождаемому списком образцов URL (по одному в строке), попадающих “в область компетенции” того сложного или простого оператора, который записан выше в фигурных скобках. Вместе специальный заголовокв фигурных скобках, описывающий комбинацию действий, и следующие за ним строки с образцами, составляют секцию файла “действий”.

Можно выделить три различных класса действий:

Если в файлах действий ничего нет, то и не будет предпринято никаких специальных мер по контролю и обработке URL-запросов. Т.е. в этом случае Privoxy будет представлять собой традиционный прокси, ничего не блокирующий и совершенно не отличающийся стремлением повышать уровень Вашей анонимности. Вы должны специальным образом разрешить использование нужных Вам возможностей защиты кофиденциальной информации и блокирования нежелательных запросов (хотя предоставляемые в составе дистрибутива Privoxy оригинальные файлы действий с настройками по умолчанию также могут служить неплохой точкой отсчёта).

Определения “действий”, сделанные позже, перезаписывают те, которые были сделаны раньше. Так что превносимые исключения из любых правил, которые Вы превносите, должны располагаться в самом конце файла (или, если Вы используете несколько файлов действий, для собственных настроек удобно ипользовать отдельный файл, который считывается из списка actionsfile последним (см. главу 7 “Руководства пользователя”)). Многозначные действия применяются том порядке, в котором следуют их описания. Последовательная обработкf файлов действий происходит в том порядке, в котором они определены в config (в стандартном дистрибутивном комплекте имеется 3 файла действий). Также вполне возможно для любого заданного шаблона URL-адреса обнаруживать соответствие более, чем одному образцу и, таким образом, отрабатываться по правилам, формируемым сразу несколькими наборами “действий”!

Далее приводиться список всех предопределённых действий Privoxy:

8.5.1. add-header

Типичное применение:
Запутывает анализ log, специальное применение <Confuse log analysis, custom applications>
Эффект:
Отсылает web-серверу определённый пользователем заголовок HTTP .
Тип:
Многозначное.
Значения параметра:
Возможно использование любого строкового значения. Корректность представляемых пользователем HTTP-заголовков не проверяется. Рекомендуется использовать “Х-” префикс для собственных (специальных) заголовков.
Примечания:
Это действие может указываться много раз при необходимости описания нескольких заголовков. Практически только в крайне редких случаях это действие может понадобиться обычному пользователю. Если Вы не знаете, что это такое - “HTTP-заголовок”, то Вам просто по определению нет ни малейшей нужды об этом беспокоиться.
Пример использования:
+add-header{X-User-Tracking: sucks}

8.5.2. block

Типичное применение:
Блокирует рекламу и прочую неприятную “аттрибутику” web-контента
Эффект:
Блокируются запросы к URL-адресам, для которых разрешено это “действие”, т.е. такие запросы будут не транслироваться на удалённый сервер, а приниматься и обрабатываться локально, в качестве реакции на запрос возвращая подменяющую адресуемый им [запросом] ресурс встроенную web-страницу или изображение, в соответствии с определениями действий handle-as-image и set-image-blocker.
Тип:
Двоичный переключатель.
Значения параметра:
N/A
Примечания:
Privoxy в качестве ответа на запросы к серверам, адресуемым заблокированными URL, посылает специальную страницу "URL ЗАБЛОКИРОВАН" (в оригинале – "BLOCKED", но непосредственный англорусский перевод в данном случае затруднён, т.к. в этом контексте написать просто “БЛОКИРОВАНА” - значит, фактически отказаться от исп.-я механизма логических связей по управлению в русском языке, что вообще говоря для любого мало-мальски грамотного человека есть непростительная роскошь – п.п.). Эта страница содержит ссылку, предоставляющую пользователю возможность выяснить “по горячим следам”, почему запрос был блокирован и ссылку - “категорический императив”, позволяющую в исключительных случаях обойти действующие правила, отменив block для единократного перехода по действительному адресу запроса (это возможно только если Privoxy был скомпилирован со включённой опцией force). Страница "URL ЗАБЛОКИРОВАН" подстраивается под реально доступное количество экранного пространства – она отображается максимально полно, если места достаточно, или в сильном уменьшенном виде, позволяющем только размещение достаточно короткого текста, если загружается в маленькую рамку (frame на жаргоне web-дизайнеров – п.п.) или окно. Если Вы используете Privoxy “здесь и сейчас”, то Вам не составит труда взглянуть страницу “URL ЗАБЛОКИРОВАН".
Очень важное исключение имеет место, когда оба действия - block и handle-as-image, применяются для обработки одних и тех же запросов: в этом случае будет произведена подмена контента, адресуемого URL запроса не встроенной web-страницей (или на её уменьшенным представлением), а картинкой. Если настройками было дополнительно активировано действие set-image-blocker (см. ниже), то для замещения изображением тип картинки будет определяться соответствующим параметром, иначе же вместо блокируемого контента будет просто отсылаться шахматный паттерн, который подобно тротуарной плитке “замостит” пространство, резервируемое под размещение “отторженной” Privoxy нежелательной информации.
Важно понимать механизмы этого процесса для того, чтобы свободно ориентироваться в том, как Privoxy взаимодействует с рекламой и другим нежелательным контентом.
Действие filter может выполнять очень похожие задачи, блокируя баннерные изображения и другой подобный контент посредством фактической подмены URL этих объектов прямо в исходном HTML коде документа, так что запросы по этим URL, генерируемые браузером в процессе загрузки страницы, будут удовлетворены практически мгновенно и, таким образом, будет исключена ситуация, когда баннеры и другого рода элементы “коммерческой экспансии” загружаются в первую очередь, порой (в особоенности при низкоскоростном модемном соединении – п.п.) катастрофически увеличивая время загрузки страницы, снижая реактивность её web-интерфейса, внося определённую лепту в общий поток паразитного сетевого траффика. Заметьте, что использование фильтров – это всё-таки совсем другая технология, нежели механизм блокировки, хотя их и легко перепутать.
Пример использования (в определениях секции):
{+block}      # Блокировать и заменить на страницу "blocked"
.nasty-stuff .example.com # .мерзость.пример.com 

{+block +handle-as-image} # Блокировать и заменить на картинку
.ad.doubleclick.net
.ads.r.us

8.5.3. crunch-incoming-cookies

Типичное применение:
Препятствовать web серверу в установке закладок cookies на Вашей системе.
Эффект:
Удаляет все HTTP заголовки "Set-Cookie:" (“Установить-Cookie”) из ответов сервера.
Тип:
Двоичный переключатель.
Значения параметра:
N/A
Примечания:
Это действие применяется только ко входящим закладкам cookie. Для “отсева” исходящих cookie предназначено действие crunch-outgoing-cookies. Разрешите комплементарное использование этих действий для полного игнорирования попыток установки/чтения обеих “разновидностей” cookie удалёнными серверами.
Нет ни малейшего смысла использовать crunch-incoming-cookies в сочетании с позитивной формой декларации действия session-cookies-only , поскольку crunch-incoming-cookies будет предотвращать установку любых cookie, независимо от того, являются они односессионными (не записываемыми на диск, а лишь кешируемыми в памяти) или многосессионными (экспортируемыми в следующие сессии браузера). Смотрите также filter-content-cookies.
Пример использования:
+crunch-incoming-cookies              # позитивная форма декларации (объявления) действия crunch-incoming-cookies

8.5.4. crunch-outgoing-cookies

Типичное применение:
Препятствует запросам web-сервера на чтение любых присутствующих в пределах Вашей системы закладок cookie.
Эффект:
Удаляет любые HTTP заголовки "Cookie:" из клиентских запросов.
Тип:
Двоичный переключатель.
Значения параметра:
N/A
Примечания:
Это действие применяется только ко исходящим закладкам cookie. Для “отсева” исходящих cookie используйте crunch-outgoing-cookies. Разрешите комплементарное использование этих действий для полного игнорирования попыток установки/чтения обеих “разновидностей” cookie удалёнными серверами.
Нет ни малейшего смысла использовать crunch-incoming-cookies в сочетании с позитивной формой декларации действия session-cookies-only , поскольку crunch-incoming-cookies будет предотвращать установку любых cookie, независимо от того, являются они односессионными (не записываемыми на диск, а лишь кешируемыми в памяти) или многосессионными (экспортируемыми в следующие сессии браузера). Смотрите также filter-content-cookies.
Пример использования:
+crunch-outgoing-cookies             # позитивная форма декларации (объявления) действия crunch-outgoing-cookies

8.5.5. deanimate-gifs

Типичное применение:
Останавливает эти надоедливые, сбивающие с толку анимированные GIF-изображения.
Эффект:
Де-анимация GIF, т.е. ограничение анимации показом только первого или последнего кадра.
Тип:
Параметризованное.
Значения параметра:
"последний" или "первый" (кадр)
Примечания:
Это также значительно сокращает размер загружаемой картинки (в байтах, не в пикселах). Если параметру присвоено значение “первый”, то анимация будет сокращена до первого кадра. Если же параметру присвоено значение “последний”, то будет произведено замещение сложного GIF-изображения последним кадром анимации, что, вероятно, делает более чувствительной большую часть баннерной анимации, но также создаёт риск “потери” части последнего кадра (последний кадр отражает лишь изменение изображения относительно предыдущего кадра).
Вы также можете без опасений использовать это действие с образцами URL, ссылающимися на не GIF-объекты, потому что deanimate-gifs будет попросту игнорировать запросы, адресующие объекты, не похожие на GIF.
Пример использования:
+deanimate-gifs{last}           #  ограничить анимацию GIF показом последнего кадра

8.5.6. downgrade-http-version

Типичное применение:
Помогает избежать (обойти) проблемы (крайне редкие) с использованием HTTP/1.1
Эффект:
Принудительно “упрощает” структуру клиентских запросов и ответов сервера по протоколу HTTP/1.1 до уровня соответствия протокола HTTP/1.0.
Тип:
Двоичный переключатель.
Значения параметра:
N/A
Примечания:
Это пережиток тех времён, когда Privoxy ещё не очень хорошо поддерживал важные возможности протокола HTTP/1.1 Действие-анахронизм было оставлено в этой версии для того, чтобы не ставить Вас в затруднительное положение при возникновении крайне маловероятной ситуации, когда Вы обнаружите какие-либо проблемы, связанные с использованием протокола HTTP/1.1, проблемы, возникающие при обмене информацией с удалёнными серверами. На данный момент ещё не все (необязательные) возможности протокола HTTP/1.1 поддерживаются, так что и сейчас сохраняется риск того, что это действие Вам пригодится.
Пример использования (секция):
{+downgrade-http-version}
problem-host.example.com

8.5.7. fast-redirects

Типичное применение:
Обманывает некоторые встраиваемые в URL незаметно выполняющиеся скрипты и ускоряет переход по косвенным (непрямым) ссылкам.
Эффект:
Вырезает из запросов все URL, кроме последнего корректно заданного.
Тип:
Двоичный переключатель.
Значения параметра:
N/A
Примечания:
Многие сайты, например популярный “поисковик” yahoo.com, не предоставляют как таковых ссылок на другие web-ресурсы. Вместо этого, они дают ссылку на скрипт, расположенный на собственных серверах, передавая им интересующий Вас адрес назначения в качестве параметра, и уже задачей этого скрипта, решаемой им в последнюю очередь при завершении работы, является реализация перенаправления Вас по адресу конечной целевой ссылки. Адреса URL, получаемые по этой схеме, обычно выглядят приблизительно так, как в приводимом ниже примере: http://some.place/click-tracker.cgi?target=http://some.where.else.
Иногда в URL бывает закодировано даже несколько последовательных перенаправлений (redirects). Такие перенаправления посредством скриптов значительно упрощают отслеживание траекторий Ваших виртуальных перемещений, поскольку сервер, с которого Вы осуществили переход по косвенной ссылке, без труда может посмотреть и запомнить адрес пункта назначения Вашего перехода, а, соответственно, будет располагать сведениями о том, где Вы бываете (т.е может без ведома потенциального реципиента собирать о нём статистические сведения). Кроме того, значительная часть пропускной способности и времени соединения растрачивается впустую, когда Ваш браузер постоянно “спотыкается” на запросах перенаправления к серверу, зачастую фактически только и занимаясь бестолковым обходом паразитических промежуточных инстанций. К тому же, такими довольно бесцеремонными методами Вас вынуждают в ущерб собственным интересам обеспечивать рекламодателям их “традиционный” хлеб с маслом (а то и с икрой - п.п.)
Пока что реализация этой предоставляемой Privoxy возможности ещё не очень хорошо продумана и во многом нуждается в дальнейшей доработке. Использование fast-redirects вполне может поспособствовать полной или частичной утрате “дееспособности” некоторыми из просматриваемых вами сайтов. Вы должны быть готовы к, возможно, довольно большому количеству исключений, которые Вам придётся сделать для этого “действия”, если его использование разрешено по умолчанию в default.action. Некоторые сайты без такого рода дополнительных телодвижений с Вашей стороны даже и не будут работать!
Пример использования:
{+fast-redirects}            # включить быстрые перенаправления

8.5.8. filter

Типичное применение:
Позволяет избавиться от особо досаждающих пользователю элементов HTML и JavaScript-кода, а также от баннерной рекламы (отсекая её по размеру), сделать прикольные подмены оригинального текста замены и т.п.
Эффект:
Все файлы, основанные на обычной текстовой разметке, в основном, конечно, HTML и JavaScript, для которых применяется действия группы фильтрации, фильтруются на лету посредством осуществления специальных специальные подстановок на основе регулярных выражений. (Заметьте: Privoxy версии 3.0.3 исключает документы типа “сплошной текст” из потока на фильтрацию, поскольку многие веб-сервера часто используют этот тип MIME (text/plain) для идентификации всех файлов, для которых сведения о характере содержащихся в них данных отсутствуют)
Тип:
Параметризованное.
Значения параметра:
Имя фильтра так, как оно определено в файле фильтров (обычно – default.filter, устанавливается опцией filterfile главного файла конфигурации). При использовании определения действия filter в негативной (запретительной) форме и без параметров, фильтрация полностью блокируется.
Примечания:
Для Вашего удобства разработчиками Privoxy было создано множество специализированных фильтров на все случаи жизни, доступных в дистрибутивном файле фильтров, который Вы можете использовать как самостоятельный продукт, ориентированный на применение конечным пользователем. Смотрите ниже состав файла default.filter.
Фильтрация требует буферизации содержимого страницы, что может проявиться в замедлении отображения страницы, поскольку в окне браузера не будет отображаться вообще ничего до тех пор, пока весь контент не будет последовательно обработан набором фильтров (на самом деле время загрузки не увеличивается (а может даже и уменьшиться), а подобное ощущение замедления работы браузера возникает из-за того, что при использовании множества фильтров отображение страниц перестаёт быть постепенным, принимает имеет ярко выраженный дискретный характер. Этот эффект наиболее очевидным образом проявляется на медленных соединениях.
Это очень мощная возможность, но создание “самодельных” фильтров требуют знания регулярных выражений и HTML.
Ширина потока данных, который может быть пропущен за один раз через фильтры, ограничена значением параметра buffer-limit , задаваемого в главном конфигурационном файле. По умолчанию размер буфера составляет 4096Kб (4 Мегабайта). При превышении лимита “пропускной способности” буфера, данные, размещающиеся в нём или пребывающие на промежуточной стадии обработки, а также все вновь поступающие данные, будут переданы “прозрачно”, т.е. в неизменном виде, минуя фильтры (все, либо только те, которые ещё не были пройдены – п.п.)
Не подлежащие специальной обработке типы MIME (которые, к тому же, иногда и защищать приходиться от любых помех при передаче, связанных с исторически сложившейся “склонностью” интернет-протоколов к передаче текста, – п.п.), соответствующие, например, данным в сжатых файлах, не будут фильтроваться вообще. (Иными словами, фильтруется обычный текст с тем или иным форматированием (разметкой), за исключением т.н. “голого” текста (plain text), не могущему быть классифицированному по принадлежности к какому-либо из стандартных типов.) Закодированные SSL данные (с HTTPS-серверов) также не могут быть отфильтрованы, потому как создаваемые фильтрацией искусственные не контролируемые передатчиком помехи неизбежно нарушат целостность транзакции передачи секретных данных. помехи. В некоторых случаях может быть необходимо защитить определённый текст, наподобие исходного кода, от фильтрации посредством введения секции, ассоциируемой с негативной формой декларации действия -filter.
В настоящий момент Privoxy не умеет (пока!) распаковывать сжатые документы. Если Вы хотите, чтобы фильтрование работало по отношению ко всем документам, даже по отношению к тем, которые обычно отсылаются в сжатом виде, используйте действие prevent-compression совместно с filter.
Фильтрация может достигать некоторых результатов, аналогичных эффекту от применения действия block, т.е. она может быть применена для удаления рекламы и баннеров. Но вот реализация (внутренне устройство) механизмов работы фильтрации и блокирования сильно различаются. Одним из эффективных применений фильтрации как самостоятельного метода является распознавание и “отсев” баннеров, основанный на том, что размеры многих из них, судя по всему, определены требованиями своеобразного “негласного стандарта” (выработанного в недрах баннерообменных сетей и поддерживаемого большинством из них- п.п.)
Отклики с предложениями по созданию новых или улучшенных фильтров приветствуются особо (самым что ни на есть чрезвычайным образом)!
Приводимый ниже список включает только названия и однострочные описания каждого предопределённого фильтра. Более подробное описание того, что и как эти фильтры делают, Вы найдёте в главе Руководства Пользователя, посвящённой файлу фильтров.
Примеры использования (для фильтров из поставляемого в составе дистрибутива Privoxy файла default.filter ). Для того, чтобы получить более детальное представление о каждом из них, загляните в раздел “Предопределённые фильтры”:
+filter{js-annoyances}       # Избавиться от особенно раздражающих злоупотреблений в применении языка JavaScript
+filter{js-events}           # Поубивать все событийные привязки JS (Радикально деструктивная мера. Только для совершенно отвратительных сайтов!)
+filter{html-annoyances}     # Избавиться от особенно раздражающих образчиков использования  HTML не по назначению.
+filter{content-cookies}     # Отсеивать закладки cookie, встроенные в HTML или JS контент
+filter{refresh-tags}        # Вырезать тэги автоматического обновления страницы (для систем, настроенных на соединение-по-запросу)
+filter{unsolicited-popups}  # Запретить только непрошенные (невостребованные) всплывающие окна
+filter{all-popups}          # Подавлять все всплывающие (выпрыгивающие, распахивающиеся во весь экран и т.д.) элементы в JavaScript и HTML
+filter{img-reorder}         # Переупорядочить атрибуты в тэгах <img> для того, чтобы сделать фильтры banners-by-* более эффективными
+filter{banners-by-size}     # Осуществлять отсев баннеров, распознавая их по размерах
+filter{banners-by-link}     # Осуществлять отсев баннеров, распознавая их по ссылкам на широкоизвестные узлы и сервера баннерообменных сетей
+filter{webbugs}              #  Давить всех веб-жучков (WebBugs) (это такие невидимые GIF-изображения 1x1, используемые для отслеживания перемещений пользователя)
+filter{tiny-textforms}      # Расширять эти крохотные текстовые поля ввода размером до 40х80 и запретить использование в них автоматического жёсткого переноса
+filter{jumping-windows}     # Предотвращать попытки окон самопроизвольно изменять собственные размеры и перемещаться без внешних воздействий
+filter{frameset-borders}    # Добавлять контейнерным элементам (фрэймам) специальные рамки и делать их размер свободно изменяемым вручную
+filter{demoronizer}         # Исправлять последствия свойственной Microsoft аномальной склонности к нестандартной интерпретации стандартных кодировок символов
+filter{shockwave-flash}     # Отсеивать встроенные объекты Shockwave Flash
+filter{quicktime-kioskmode} # Вырезать код, не позволяющий сохранять Quicktime-видео, тем самым снимая это досадное ограничение
+filter{fun}                 # Текстовые замены для получения глубокого морального удовлетворения от просмотра полностью перекроенного по Вашему вкусу веб-контента!
+filter{crude-parental}      # Crude parental filtering (demo only) (???! - п.п.)
+filter{ie-exploits}         # Запретить использование некоторых возможностей IE, реализуемых кодом, содержащим создающие реальную угрозу безопасности системы ошибки,

8.5.9. handle-as-image

Типичное применение:
Полагать все адреса URL в секции, где это действие разрешено, ссылающимися на объекты-изображения (т.е. если для этих же URL применяется действие +block, то они будут заменены на изображения, а не на страницу “BLOCKED” (“URL ЗАБЛОКИРОВАН”))
Эффект:
Эффект от применения одного этого действия (самого по себе) просто неразличим. handle-as-image в положительной форме декларации всего лишь информирует Privoxy о том, что адреса URL в данной секции ссылаются на графические файлы, т.е на изображения. А вот если действие block также активизировано в пределах секции, то в зависимости от присутствия или отсутствия этой пометки блокированный контент при отправке страницы приложению-клиенту будет заменён либо HTML-страницей "blocked", либо замещающим изображением (заданным как параметр действия set-image-blocker или, если это действие не объявлено, по умолчанию используется мощение “шахматной плиткой”).
Тип:
Двоичный переключатель.
Значения параметра:
N/A
Примечания:
Приводимый ниже пример секции, дающей самые общие определения, в действительности является частью файла default.action. Эта секция группирует все URL файлов изображений с наиболее распространёнными расширениями и должна быть оставлена без изменений.
Для пользователей, вероятно, есть необходимость только в применении действия handle-as-image в сочетании с block для блокирования источников баннеров, адресуемых URL-ссылками, не содержащими информацию о типе целевых файлов, как во втором примере секции.
Заметьте, что в большинстве случаев Вы не можете обращаться со страницами HTML как с изображениями (даже если эти страницы ничего, собственно, кроме вставок графических файлов не содержат – п.п.) Например, (вставочные) рекламные фрэйм-контейнеры требует того, чтобы страница HTML была отправлена, иначе они будут отображаться некорректно. Безграмотные по сути попытки применения handle-as-image в ситуациях подобного рода, разумеется, увенчаться успехом не могут: замещение рекламы изображением произведено не будет, но зато будут сгенерированы соответствующие сообщения об ошибках.
Пример применения (секции):
# Основные расширения графических файлов:
#
{+handle-as-image}
/.*\.(gif|jpg|jpeg|png|bmp|ico)$

# Эти URL не выглядят похожими на адреса графических файлов, но эти ссылки ведут на сервера баннерообменных и посему они должны быть блокированы именно как
# изображения, а не как страницы HTML
#
{+block +handle-as-image}
some.nasty-banner-server.com/junk.cgi?output=trash

# Неисчерпаемый, а главное неистребимый Источник Баннеров! Кого может волновать то, что на этом сервере теоретически может быть и какой-то контент, к баннерам и
# даже вообще к рекламе отношения не имеющий? (А если у Вас возникнут сомнения на сей счёт, смело можете попробовать закомментировать строку с нижеследующим URL
# на некоторое время и посмотреть на результат подобного лояльного отношения к беспределу, творимому на просторах сети столь крупными генераторами мусора)
ad.doubleclick.net 

8.5.10. hide-forwarded-for-headers

Типичное применение:
Повышает степень конфиденциальности, скрывая истинный источник запроса
Эффект:
Удаляет любые существующие заголовки HTTP вида "X-Forwarded-for:" из клиентских запросов и не позволяет добавлять новые заголовки.
Тип:
Двоичный переключатель.
Значения параметра:
N/A
Примечания:
Вы ни чем не рискуете, если оставите это действие активным по умолчанию.
hide-forwarded-for-headers является предметом дальнейшей доработки: действие должно генерировать поддельные заголовки "X-Forwarded-for:", используя случайным образом сгенерированные IP-адреса из указанной сети для ,чтобы последовательные запросы от одного и того же клиента выглядели как запросы различных пользователей, разделяющих один и тот же прокси-сервер.
Пример использования:
+hide-forwarded-for-headers

8.5.11. hide-from-header

Типичное применение:
Не позволяет Вашему (старому и больному) браузеру великодушно раздавать (всем “встречным-поперечным” - п.п.) web-серверам адрес Вашего почтового ящика email
Эффект:
Удаляет любые присоединённые HTTP-заголовки "From:" (“От:”) или заменяет их задаваемой в качестве параметра действия строкой.
Тип:
Параметризованное.
Значения параметра:
Ключевое слово: "block", или любое определяемое пользователем значение (строка символов).
Примечания:
При использовании ключевого слова "block" в качестве значения параметра заголовок будет полностью удалён (только не надо пытаться найти ассоциативную связь с действием block).
Также, Вы можете указать любое подходящее значение для отсылки веб-серверу в заголовке “From:” Если Вы так и поступите, то Вам следует учитывать, что указание действительно используемого кем-либо адреса email в данном случае по крайней мере неразумно и может быть расценено даже как проявление непорядочности, а то и просто подлости с Вашей стороны (скажем так, Вас могут не понять, последствия чего широко варьируются, и даже могут отразиться довольно-таки тяжело на Вашем здоровье – п.п.).
Необходимость в применении этого действия возникает у пользователей очень редко, поскольку современные веб-браузеры ни при каких обстоятельствах не отсылают заголовки "From:" (ну разве что браузер скомпонован с клиентом электронной почты, но это уже совсем другая история... -п.п.).
Пример использования:
+hide-from-header{block}
или
+hide-from-header{spam-me-senseless@sittingduck.example.com}

8.5.12. hide-referrer

Типичное применение:
Скрывает информацию о том, по какой ссылке Вы перешли на данный сайт
Эффект:
Вырезает HTTP-заголовки "Referer:" из клиентских запросов или заменяет их на поддельные заголовки.
Тип:
Параметризованное.
Значения параметра:
Примечания:
"forge" является предпочтительным значением параметра здесь, поскольку в противном случае некоторые серверы не будут посылать в ответ на запрос изображения, пытаясь тем самым пресечь попытки встраивания где бы то ни было их полезного контента (так как при “встраиваниях” контент будет размещён в окружении совсем не тех баннеров, в размещении которых именно на страницах своего ресурса материально заинтересованы создатели сайта - ”донора“).
hide-referer на самом деле есть иная форма написания hide-referrer и оба имени являются свободно взаимозаменяемыми. ("referrer" – это правильное написание в английском языке, однако в спецификации HTTP была допущена ошибка – в ней используется некорректная “альтернативная” орфографическая форма: "referer".)
Пример использования:
+hide-referrer{forge}
или
+hide-referrer{http://www.yahoo.com/}

8.5.13. hide-user-agent

Типичное применение:
Не давать информацию о типе Вашего браузера и об установленной на клиентской стороне операционной системе
Эффект:
Заменяет значение заголовка "User-Agent:" на заданное параметром действия значение.
Тип:
Параметризованное.
Значения параметра:
Любая определяемая пользователем строка.
Примечания:

Предупреждение

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

Не рекомендуется использовать это действие в многопользовательских средах и вообще везде, где различные типы браузеров подключены к одному и тому же экземпляру Privoxy; для однопользовательских же, однобраузерных конфигураций, Вы можете использовать hide-user-agent для удаления информации о типе и версии Операционной Системы из заголовков, поскольку эти сведения могут представлять немалый интерес для злоумышленника, который, располагая ими, существенно облегчит себе работу по организации удалённой атаки за счёт эксплуатации известных дыр в безопасности Вашей ОС. Также иногда бывает полезно подделывать этот заголовок с целью получения доступа к сайтам, которые без таких специальных ухищрений Вам его предоставлять отказываются. (хотя для этого в некоторых случаях могут быть вполне и даже более чем веские основания). Яркими примерами сайтов, реализующих подобный подход к обслуживанию клиентов, являются некоторые ресурсы, размещённые на серверах сети MSN, которые не позволяют осуществлять вход пользователям браузера Mozilla, однако же эта проблема прекрасно устраняется простой подменой значения user-agent в заголовках на “Netscape 6.1”! (Must be just a silly MS goof, I'm sure :-) (непереводимая игра слов. Вероятно, автор использует оборот речи, ставший знаменитым благодаря импульсивности и резкости, свойственным характеру Билла Гейтса, и часто употребляемый теперь многими представителями IT-индустрии “по случаю”. Обращаясь к особо несообразительным сотрудникам, не понимающим простой истины, заключающейся в том, что Гейтс может давать объяснения только один раз, на второй раз можно уже писать рапорт об увольнении, бессменный глава компании Microsoft с невозмутимым хладнокровием однозначно характеризовал только что выслушанный доклад легко и непринуждённо слетавшей с его губ нижеследующей бессмертной фразой: “Это глупейшая хрень, какую я когда-либо слышал!!” Т.е. если переводить здесь дословно: “Должно быть, это всего лишь (очередная) глупейшая хрень от компании Microsoft, я уверен в этом!” - п.п.).
Это действие является предметом дальнейшего совершенствования.
Пример использования:
+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}

8.5.14. kill-popups

Типичное применение:
Изничтожать эти надоедливые всплывающие окна (устарело)
Эффект:
При загрузке документа “на лету” заменять создающий всплывающие окна код JavaScript синтаксически нейтральными “заглушками”
Тип:
Двоичный переключатель.
Значения параметра:
N/A
Примечания:
Хотя блокирование всплывающих окон – это по сути неотъемлемая (“единая и неделимая”), на уровне “генетики” заложенная в Privoxy возможность, но между её практическими реализациями на уровне “действий” есть существенные различия: при использовании kill-popups отпадает необходимость в промежуточном буферном хранении документа, и, таким образом, он [документ] может постепенно, последовательно отображаться в ходе загрузки. Но kill-popups, к сожалению, не может похвастаться столь же высокой эффективностью “отлова” всплывающих окон, как это имеет место быть в случае filter{all-popups} , при этом подход kill-popups к обработке запросов можно назвать просто топорным, если сравнить его с умной и элегантной методикой, применяемой filter{unsolicited-popups}.
Вы можете считать это действие [kill-popups] быстрой и эффективной заменой специальным фильтрам, если Вам вообще не нужна (или Вы можете себе позволить от неё отказаться) какая-либо фильтрация. Заметьте, что из всего вышесказанного вытекает вывод о бессмысленности комбинирования kill-popups с каким-либо из действий-фильтров, так как даже если одно из них активно, то весь документ будет обрабатываться с промежуточной буферизацией, а это полностью нивелирует, сводит на нет все преимущества этого “действия” перед его фильтрующими аналогами.
Безусловная ликвидация всех всплывающих окон может являться источником серьёзных проблем. Многие магазины и банки используют эти окна для отображения форм, бланков заказа, и т.п, при чём по только действие filter{unsolicited-popups} и никакое другое способно вполне эффективно справляться со “стратегической” задачей отсева исключительно той их [окон] части, которая фактически представляет собой проявление экспансивной агрессии со стороны вездесущего интернет-мусора.
Если единственный тип всплывающих окон, от которого Вам хотелось бы избавиться раз и навсегда – это так называемые окна с консольным выходом (те действительно опасные окна, которые перед тем, как закрыться, открывают порой одно или несколько окон-клонов), то в качестве радикальной альтернативы всем предложенным выше средствам Вы можете использовать действие filter{js-annoyances}.
Пример использования:
+kill-popups

8.5.15. limit-connect

Типичное применение:
Пресекать попытки неправильного использования Privoxy в качестве прокси-транслятора для обслуживания протокола TCP.
Эффект:
Указывает порты, на которые дозволено посылать запросы HTTP CONNECT.
Тип:
Параметризованное.
Значения параметра:
Разделённый запятыми список портов или диапазонов их номеров (при формировании последних используются символ “тире”, границы диапазонов могут устанавливаться в пределах: мин. 0 и макс 65K).
Примечания:
По умолчанию, т.е. если не применяется действие limit-connect, Privoxy принимает только те запросы HTTP CONNECT, которые поступают на порт 443 (стандартный защищённый порт HTTPS). Активируйте действие limit-connect , если для организации взаимодействия с некоторыми или со всеми конечными точками требуется более тонкая настройка.
Метод CONNECT используется в HTTP для предоставления возможности доступа к защищённым веб-сайтам (адреса URL вида “https://”) через прокси-сервера. Метод работает очень просто: прокси подсоединяется к серверу на указанном порту, после чего просто объединяет замыканием в единый канал свои соединения с клиентом и с сервером. Такой подход может быть большой брешью в безопасности, так как прокси, активированные методом CONNECT, совершенно элементарно могут быть использованы “нецелевым образом” и в качестве трансляторов TCP.
Если Вы совершенно не понимаете, о чём, собственно, идёт речь, то Вам, вероятно, в данном случае нет смысла что-либо менять, поскольку вводимые в конфигурации “по умолчанию” ограничения, призванные обеспечить оптимальный уровень безопасности соединений посредством Privoxy, уже достаточно жёсткие.
Примеры использования:
+limit-connect{443}                   # Это значение по умолчанию и его не нужно задавать специально.
+limit-connect{80,443}                # Принимать запросы на порты 80 и 443.
+limit-connect{-3, 7, 20-100, 500-}   # Используются порты с номерами до 3-х, 7-й, номера в диапазоне с 20-го по 100-й, а также все после 500-го.
+limit-connect{-}                     # Принимаются запросы, поступающие на любой порт (этим создаётся критическая по характеру брешь в системе безопасности!)

8.5.16. prevent-compression

Типичное применение:
Обеспечивает информирование серверов о необходимости предоставления контента в несжатом виде, для того, чтобы он мог быть пропущен через фильтры
Эффект:
Добавляет к запросу заголовок, требующий от сервера осуществления передачи данных “как есть”, т.е. без предварительного их сжатия.
Тип:
Двоичный переключатель.
Значения параметра:
N/A
Примечания:
Всё больше и больше веб-сайтов отсылают свой контент по умолчанию в сжатом виде, что при обычных обстоятельствах просто замечательно, поскольку это позволяет существенно повышать пропускную способность соединения. Однако, для того, чтобы в обработке запросов могли “принимать участие” действия filter, deanimate-gifs и kill-popups , Privoxy нужен доступ к несжатым данным. К сожалению (вообще говоря, к огромному сожалению, ведь из-за этой “недоработки” прекрасный по сути программный продукт теряет львиную долю своей потенциальной привлекательности для конечного пользователя – п.п.), Privoxy пока что (!) не может самостоятельно разворачивать поток упакованного контента, фильтровать его и сжимать всё обратно в поток “на лету”. Таким образом, если Вы хотите быть уверены в том, что содержимое всех сайтов, включая те, которые в нормальном режиме (без дополнительной “подсказки” - п.п.) передают упакованные данные, будет профильтровано полностью, то Вам необходимо применить позитивную форму декларации этого действия.
Это замедлит передачи данных с этих сайтов. Однако, если Вы используете какие-либо из вышеупомянутых действий, то для Вас скорее всего будет целесообразным применение prevent-compression совместно с ними.
Следует особо отметить то, что некоторые (а такие встречаются действительно редко) разработанные непрофессионально или просто небрежно сайты не способны адекватно реагировать на запросы, требующие получения документов в несжатом виде (эти сайты ограничиваются тем, что просто отправляют “пустой” документ). Если Вы используете prevent-compression по умолчанию, то Вам придётся сделать исключения для этих сайтов. Смотрите ниже пример того, как это можно реализовать на практике.
Пример использования (секции):
# Определить умолчания:
#
{+prevent-compression}
/ # Соответствует всем сайтам

# Сделать исключения для сайтов “с отклонениями”:
#
{-prevent-compression}
www.debianhelp.org
www.pclinuxonline.com

8.5.17. send-vanilla-wafer

Типичное применение:
Подсовывать скриптам, анализирующим файлы регистрации пользователей, информацию-пустышку, дезинформировать их.
Эффект:
С каждым запросом отсылаются cookie, содержащие сообщение о том, что Вы не принимаете любые отсылаемые Вам cookie, защищённые авторским правом, и обращение с просьбой к оператору сайта не отслеживать Ваши перемещения, не собирать на Вас статистику. (Пожалуйста, по возможности предложите альтернативный перевод (mailto: mudraia@list.ru) - п.п.)
Тип:
Двоичный переключатель.
Значения параметра:
N/A
Примечания:
“Ванильная вафля” - это (относительно) уникальный заголовок, и в принципе он может быть использован для слежки за Вами. (“Из того, что ты параноик, нельзя сделать вывод о том, что они тебя не преследуют” - п.п.)
Это действие используется крайне редко и поэтому оно не было вовлечено в формирование предоставляемых Вам настроек по умолчанию.
Пример использования:
+send-vanilla-wafer

8.5.18. send-wafer

Типичное применение:
Отправлять нестандартные (определяемые пользователем) закладки cookie или ограничиваться предоставлением скриптам, анализирующим файлы регистрации, крайне малоинформативных данных.
Эффект:
Отсылать специальные, определяемые пользователем cookie с каждым запросом.
Тип:
Многозначное.
Значения параметра:
Строка в формате "имя=значение".
Примечания:
Поскольку это действие является многозначным, то к одному и в обработку одного и того же запроса могут вносить вклад сразу несколько экземпляров определений send-wafer из разных секций с различными (разумеется) параметрами, в результате чего с каждым запросом будет отсылаться несколько cookie.
Это действие используется крайне редко и поэтому оно не применяется в настройках по умолчанию.
Пример использования (секция):
{+send-wafer{UsingPrivoxy=true}}
my-internal-testing-server.void

8.5.19. session-cookies-only

Типичное применение:
Позволяет использовать только временные (сессионные) cookie (только на время текущей сессии браузера)
Эффект:
Вырезает поле “срок действия истекает” из заголовков "Set-Cookie:" сервера. Абсолютное большинство браузеров не станут хранить такие cookie перманентно (постоянно) и между сессиями просто забывают об их существовании.
Тип:
Двоичный переключатель.
Значения параметра:
N/A
Примечания:
Это действие вводит существенно менее строгие ограничения, нежели его категоричные “коллеги” crunch-incoming-cookies / crunch-outgoing-cookies и позволяет Вам осуществлять навигацию по сайтам, которые требуют или зависят от участия (пусть и временного) тех или иных закладок cookie в информационном обмене, но при этом session-cookies-only позволяет создать повышенный комфорт для защищённого веб-сёрфинга, не нанося (не причиняя) существенного ущерба Вашей конфиденциальности.
Большая часть браузеров не будет хранить постоянно закладки cookie, модифицированные этим “действием”, а просто потеряет их из виду сразу же после завершения той сессии (сеанса работы веб-браузера), в которой они были установлены. Это делает профайлинг cookie бесполезным, зато не ограничивает функционально те сайты, которые активно оперируют cookie, что позволяет Вам время от времени посещать эти ресурсы, без проблем проходя регистрацию. Это действие обычно включено для всех сайтов, и это рекомендуемая настройка.
Не имеет ни малейшего смысла использовать session-cookies-only совместно с crunch-incoming-cookies или crunch-outgoing-cookies. Если Вы прибегаете к одному из этих двух средств радикального запрета на осуществление любого информационного обмена, реализуемого с прямым или косвенным вовлечением механизма cookie, то и срок хранения “печенья” (которым всё равно никто никогда и ни при каких обстоятельствах по прямому назначению не воспользуется) в данном случае не будет играть никакой роли.
Помните, что обработка закладок cookie без информационного поля “срок действия истекает”, осуществляется по усмотрению браузера и, таким образом, эффект от применения session-cookies-only может сильно варьироваться в зависимости от типа установленного на Вашей системе браузера. Если Вы используете один из малораспространённых браузеров, то у Вас может (и должно!) возникнуть здоровое желание для начала протестировать реализацию односессионных cookie в Privoxy на соответствие Вашим ожиданиям для того, чтобы обрести полную уверенность в правильности выбранного Вами пути.
Эта настройка не сможет ограничить срок действия тех закладок cookie, которые были сохранены на жёстком диске Вашего компьютера до запуска Privoxy. Их Вам придётся удалять вручную.
Privoxy также использует content-cookies filter для блокирования некоторых типов cookie. На cookie, отправляемые Вашему браузеру вместе с контентом, действие session-cookies-only влияния не оказывает.
Пример использования:
+session-cookies-only

8.5.20. set-image-blocker

Типичное применение:
Выбрать замену блокированным изображениям.
Эффект:
Само по себе применение одного этого действия не даёт видимого эффекта, ни на чём фактически не отражается. А вот если привлечь к участию в благородном деле осуществления протектората клиентской стороны ещё и оба сопутствующих действия, а именно block и handle-as-image , т.е. если блокирование запроса будет происходить в предположении, что он адресует изображение, то в этом случае параметр, заданный для set-image-blocker, будет определять графический объект, используемый Privoxy для замещения отторженной в ходе обработки запроса части контента.
Тип:
Параметризованное.
Значения параметра:
Примечания:
Адреса URL “встроенных” изображений описываются как "http://config.privoxy.org/send-banner?type=тип изображения", где тип изображения – это либо "blank", либо "pattern".
Есть ещё и третий (дополнительный )тип, называемый "auto". Он предназначен НЕ для использования в качестве параметра действия set-image-blocker, а для вызова из фильтров. фильтров. “Auto” в полном соответствии со своим названием самостоятельно подберёт тип изображения, которое будет использовано на адресуемой странице, если, конечно это вообще будет именно изображение, а не вставка кода HTML(этот перевод – в чистом виде представляет собой импровизацию на заданную тему. Если Вы можете предложить альтернативный, близкий к оригиналу, вариант перевода, пишите мне на mudraia@list.ru) .
Пример использования:
Встроенный паттерн:
+set-image-blocker{pattern}
Перенаправление к чёрту (! -п.п.) BSD:
+set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif}
Перенаправление ко встроенному образцу для лучшего кэширования: Redirect to the built-in pattern for better caching:
+set-image-blocker{http://config.privoxy.org/send-banner?type=pattern}

8.5.21. Резюме

Обратите особое внимание на то, что многие из этих “действий” потенциально могут спровоцировать некорректное, а порой и непредсказуемое поведение некоторых веб-страниц, что может привести к полной их неработоспособности, вплоть до отказа отображаться вообще хоть как-нибудь. Существует огромное количество вариантов построения (вёртски) сайта веб-дизайнером, так, что, например, содержимое заголовков HTTP варьируется совершенно произвольным образом от адреса к адресу, да и множество других критериев создают совершенно немыслимое число степеней свободы, определяющих тот или иной “стиль” работы ресурса во Всемирной Паутине. Таким образом, невозможно подобрать некий универсальный набор достаточно жёстких и стабильных правил для всех сайтов на все времена. Обращайтесь к Приложению для ознакомления с короткими примерами, в первом приближении дающими представление о том, какие действия надо предпринимать для решения вышеозначенных проблем.

8.6. Псевдонимы

Специальные сложные “действия”, называемые “псевдонимами” в терминологии Privoxy, могут быть представлены комбинацией других (простых или сложных) действий. Декларация действий-псевдонимов в свою очередь осуществляется точно так же, как и для элементарных действий. В данной версии Privoxy идентификатор псевдонима может содержать любые символы, за исключением пробела, табуляции, присвоения (“=”) и фигурных скобок ( "{" и "}" ), но мы настоятельно рекомендуем Вам ограничиться использованием символов из диапазонов от “a” до “z” и от “0” до “9”, а также знаков “+” и “-”. При использовании псевдонимов учитывайте то, что Privoxy: 1) не обращает внимание на регистр, в котором написаны их названия, 2) не требует наличия вводных знаков “+” и “-” при декларации, поскольку псевдонимы в процессе обработки файлов настроек будут просто замещаться соответствующим текстом последовательных определений элементарных действий.

Псевдонимы могут использоваться свободно в любом месте файла действий, но они обязательно должны быть определены в специальной секции, размещённой перед всеми основными секциями ассоциативного связывания адресов URL и политик обработки запросов. В каждом из файлов “действий” допускается задание только одной секции описаний псевдонимов, при чём “область видимости” всех определений, объединённых в эту секцию, ограничивается тем файлом, в котором они были сделаны, т.е. для того, чтобы использовать универсальные “сквозные” псевдонимы Вам придётся каждый раз описывать их одинаковым образом везде, где это необходимо.

Существуют два главных основания для использования псевдонимов: Первое состоит в том, чтобы сократить время, затрачиваемое на рутинные операции ввода часто используемых комбинаций “действий”, а Второе – в достижении определённой гибкости: если Вы однажды решили выделить сайты интернет-магазинов в отдельную группу с помощью описания псевдонима, который Вы, не мудрствуя лукаво, назвали так: “Покупки”, то в дальнейшем для Вас станет возможным буквально лёгким движением руки изменять все составляющие политики, выработанной Вами по отношению к интернет-магазинам, в одном месте. Назвав псевдонимы соответственно их смысловой нагрузке или области применения, Вы также добьётесь существенного улучшения читаемости (визуального восприятия) файлов действий.

В настоящий момент существует одно большое препятствие для придания Вашим настройкам свойств модульной расширяемости с использованием механизма объявления псевдонимов, и этим препятствием является то, что встроенный в Privoxy редактор файлов действий с веб-интерфейсом хотя и учитывает псевдонимы при чтении конфигурации, но при перезаписи настроек он пользуется исключительно полученными из секции “Alias” расширениями, не используя эквивалентные отношения между заявленными там политиками и наборами действий, составляющими расширения, т.е., иными словами, все вхождения символьных идентификаторов псевдонимов замещаются при записи файла на соответствующие комбинации элементарных действий, нивелируя таким образом практически весь положительный эффект от внедрения подобного рода инноваций. Таким образом, результат от использования псевдонимов сохраняется в любом случае, но при этом сами по себе alias'ы заменяются после редактирования секции, содержащей в заголовке их “вставки”. секции при помощи встроенного интерактивного редактора. Вполне вероято, что это изменится в следующих версиях Privoxy.

Теперь давайте научимся создавать псевдонимы на коротком примере описания нескольких из них...

 # Полезные специальные псевдонимы, которые мы можем использовать в дальнейшем.
 #
 # Помните, что (и это обязательно!) заглавие секции и, собственно, сама секция, должны располагаться в самом начале файла действий!
 #
 {{alias}}

 # Эти псевдонимы только избавят Вас от необходимости клавиатурного ввода длинных (и не очень... – п.п.) последовательностей действий:
 # (Заметьте, что в описания могут включаться ранее определённые псевдонимы, т.е допускается многоуровневая вложенность описаний! )
 # (разумеется, было бы по меньшей мере наивным ставить в данном случае эксперименты с попытками ввергнуть Privoxy в состояние рекурсивного стопора. 
# Всё-таки не стоит забывать, что Privoxy – это не очередной “бестселлер” от компании Microsoft :-] – п.п.)
 #
 +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
 -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
 block-as-image      = +block +handle-as-image
 mercy-for-cookies   = -crunch-all-cookies -session-cookies-only -filter{content-cookies}

 # Нижеследующие псевдонимы описывают комбинации действий по обработке запросов,
 # полезные при работе с определёнными типами сайтов:
 #
 fragile     = -block -filter -crunch-all-cookies -fast-redirects -hide-referrer -kill-popups
 shop        = -crunch-all-cookies -filter{all-popups} -kill-popups

 # Вводим удобные сокращения - ссылки на другие ранее упомянутые псевдонимы, что полезно для действительно очень ленивых людей ;-)
 #
 c0 = +crunch-all-cookies
 c1 = -crunch-all-cookies

...и размещаем их в подходящем (сухом и прохладном) месте. Эти секции должны быть помещены в самый конец файла действий, тем самым задавая исключения из декларируемой до этого (выше по тексту файла) “универсальной” политики (той, которая ассоциативно привязана к глобальному образцу “/”):

 # Эти сайты либо очень сложно устроены, либо очень чувствительны по отношению к предоставляемым
 # пользователем данным о себе и своей системе, требуя минимизации вмешательства в свою работу:
 #
 {fragile}
 .office.microsoft.com
 .windowsupdate.microsoft.com
 .nytimes.com

 # Сайты онлайн-магазинов:
 # Разрешить обмен закладками cookie с Вашим браузером (для записи и считывания данных покупателя)
 #           
 {shop}
 .quietpc.com
 .worldpay.com   # for quietpc.com
 .scan.co.uk

 # Эти магазины генерируют всплывающие окна с обязательными для заполнениями формами или полями ввода:
 #
 {shop -kill-popups -filter{all-popups}}
  .dabs.com
  .overclockers.co.uk

Псевдонимы наподобие "shop" (в моём переводе - “Покупки” - п.п.) или "fragile" (“Не влезай – убьёт”, “Дышат на ладан” или просто “Хрупкие” - выбирайте, какой вариант Вам больше по вкусу – п.п.) часто используются для проблемных сайтов, которые ставят подавление (отключение) некоторых иммунных свойств системы пользователя (реализуемых через механизм действий в данном случае) в качестве обязательного условия обеспечения их [сайтов] нормального функционирования.

8.7. Методическое пособие по редактированию Файлов Действий

В представленных выше разделах были подробно освещены вопросы о том, какие файлы действий существуют и как они устроены, как действия объявляются и ассоциируются с URL-адресами, как реализуется механизм основанных на шаблонах образцов и как описать (создать) и использовать псевдонимы. Теперь, давайте заглянем в предоставляемые Вам в составе дистрибуции примеры файлов default.action и user.action для того, чтобы изучить работу всех этих составляющих во взаимодействии друг с другом.

8.7.1. default.action

Желательно, чтобы каждый файл настроек снабжался заглавной строкой, содержащей короткий комментарий, указывающий на предназначение файла:

# Пример файла default.action <developers@privoxy.org>

Затем, поскольку речь идёт о файле default.action, первой идёт специальная секция, исполняющая служебные функции, которую Вы не должны менять, да и каким-либо иным образом беспокоиться о её содержании тоже не должны:

####################################################################################
# Служебные настройки Privoxy – не редактировать! ТОЛЬКО для внутренних нужд Privoxy!
####################################################################################

{{settings}}
for-privoxy-version=3.0

После неё может размещаться (необязательная) секция описания псевдонимов. Мы воспользуемся здесь секцией-примером из приведённого выше раздела о псевдонимах , в котором также объясняется, для чего и как они применяются:

##########################################################################
# Псевдонимы
##########################################################################
{{alias}}

 # Эти псевдонимы только избавят Вас от необходимости клавиатурного ввода длинных (и не очень... – п.п.) 
 # последовательностей действий:
 # (Заметьте, что в описания могут включаться ранее определённые псевдонимы, т.е допускается 
 # многоуровневая вложенность описаний!)
 #
 +crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
 -crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
 block-as-image      = +block +handle-as-image
 mercy-for-cookies   = -crunch-all-cookies -session-cookies-only -filter{content-cookies}

 # Нижеследующие псевдонимы описывают комбинации действий по обработке запросов,
 # полезные при работе с определёнными типами сайтов:
 #
 fragile     = -block -filter -crunch-all-cookies -fast-redirects -hide-referrer -kill-popups
 shop        = -crunch-all-cookies -filter{all-popups} -kill-popups

После этого размещаются обычные секции, представляющие собой набор действий, сопровождаемый списком образцов URL, для которых действия применяются. Помните, что при поиске соответствий для заданного в запросе URL, изначально все действия считаются выключенными (из чего следует, что при отсутствии хотя бы одного корректно заданного параметра actionsfile главного конфигурационного файла, Privoxy будет оперировать запросами как обычный транслирующий прокси – п.п.), так что необходимо явным образом активировать в соответствующих секциях те из них, которые Вы считаете нужным привлечь к обработке тех или иных запросов.

Значение первой по порядку обычной (т.е. первой исполнительной, а не описательной – п.п.) секции, пожалуй, трудно переоценить, поскольку хотя в ней и содержится всего один образец, “/”, но он является общим “предком” (в терминологии объектно-ориентированного программирования – п.п.) для всех других образцов и ассоциативных расширений, поскольку ему соответствует вообще любой адрес URL. Таким образом, Privoxy на данном этапе чтения и разбора файлов действий будет полагать, что политика (набор действий), описанная в секции, содержащей образец “/” (“корневой” секции), должна проводится по отношению к обработке всех без исключения запросов. Действующие после определения этой секции “универсальные” правила могут быть частично или полностью переопределены в дальнейшем, если в списке URL хотя бы одной из секций, расположенных ниже в файле default.action или помещённых отдельно в user.action, будет обнаружено соответствие адресу запроса; тем не менее от вида строки заголовка “корневой” секции всё ещё будет очень сильно зависеть степень эффективности исполнения Privoxy воложенных на него обязанностей по обеспечению комфорта и безопасности Вашего взаимодействия с глобальным информационным пространством Интернет.

Хотя, повторюсь, на этапе инициирования процедуры поиска совпадений (соответствий), все действия запрещены и, таким образом, “отключать” какие-либо из них бессмысленно, тем не менее мы всё равно привели объявления всех действий в явной форме для наглядности и для того, чтобы Вы получили полный перечень встроенных элементарных “действий” Privoxy (Помните: предваряющий название действия знак “+” разрешает его [действия] использование при обработке соответствующих запросов, а знак “-” - запрещает). Также обратите внимание на то, как эта длинная строка была приведена к более удобочитаемому виду посредством разбиения её на множество строк с использованием специального символа продолжения на конце.

##########################################################################
# "Корневая" секция:
##########################################################################
 { \
 -add-header \
 -block \
 -crunch-incoming-cookies \
 -crunch-outgoing-cookies \
 +deanimate-gifs \
 -downgrade-http-version \
 +fast-redirects \
 +filter{js-annoyances} \
 -filter{js-events} \
 +filter{html-annoyances} \
 -filter{content-cookies} \
 +filter{refresh-tags} \
 +filter{unsolicited-popups} \
 -filter{all-popups} \
 +filter{img-reorder} \
 +filter{banners-by-size} \
 -filter{banners-by-link} \
 +filter{webbugs} \
 -filter{tiny-textforms} \
 +filter{jumping-windows} \
 -filter{frameset-borders} \
 -filter{demoronizer} \
 -filter{shockwave-flash} \
 -filter{quicktime-kioskmode} \
 -filter{fun} \
 -filter{crude-parental} \
 +filter{ie-exploits} \     
 -handle-as-image \
 +hide-forwarded-for-headers \
 +hide-from-header{block} \
 +hide-referrer{forge} \
 -hide-user-agent \
 -kill-popups \
 -limit-connect \
 +prevent-compression \
 -send-vanilla-wafer \
 -send-wafer \
 +session-cookies-only \
 +set-image-blocker{pattern} \
 }
 / # прямой слэш соответствует всем возможным образцам URL.

Итак, на предыдущем этапе нами была выработана методика обработки запросов “по умолчанию”... Стоит особо подчеркнуть то, что некоторые действия, например, “не скрывать информацию о браузере пользователя” (not hiding the user agent), являются составляющими т.н. “базовой политики” и не могут быть переопределены в дальнейшем, так как попытки сделать исключения из правил, формирующих базовую политику, будут попросту проигнорированы Privoxy. Остальные правила (декларации действий), наподобие “не блокировать” (которое по вполне очевидным соображениям применяется по умолчанию), требуют введения исключений, т.е. в последующих секциях мы должны указать явным образом, что именно нужно блокировать.

Первая из наших специализированных секций отвечает за обработку “капризных” сайтов, т.е сайтов, которые требуют минимального вмешательства в их работу, поскольку они либо слишком сложно устроены, либо их функциональность целиком и полностью основывается на механизмах интенсивного отслеживания действия пользователя (эи сайты имеют специальные встроеннные запирающие системы, которые делают сайт бесполезным для людей, избегающих (защищающихся от) подобной слежки). Для таких сайтов мы просто используем наш предопределённый псевдоним “хрупкие” вместо того, чтобы явно указывать в заголовке соотв. секции весь список действий:

###########################################################################################################
# Исключения для сайтов, работа с которыми в рамках правил, составляющих т.н. политику «по умолчанию», невозможна:
###########################################################################################################

# "Очень нервные" «хрупкие» и «капризные» сайты. Для обеспечения нормальной работы с ними используем минимальный набор действий 
# (см. описание соотв. псевдонима выше):
#
{ fragile }
.office.microsoft.com           # сюрприз - вот уж никак не ожидали :) !
.windowsupdate.microsoft.com    

“Психическое равновесие” сайтов онлайн-магазинов не столь хрупко, но они обычно требуют от браузера клиента полной поддержки операций с закладками cookie для автоматизации процедуры регистрации, а также разрешения всплывающих окон, содержащих бланки заказа или формы для уточнения сведений о продукте. И снова мы воспользуемся псевдонимом, предусмотрительно заготовленным нами как раз для таких случаев:

# Сайты онлайн-магазинов:
#
{ shop }
.quietpc.com 
.worldpay.com   # для quietpc.com
.jungle.com
.scan.co.uk

Действие fast-redirects , которое мы выше разрешили по умолчанию, нарушает нормальную работу некоторых сайтов. Так что запрещаем это действие для тех сайтов, где, по нашим сведениям, применение этого действия приводит лишь к деструктивному эффекту:

{ -fast-redirects }
login.yahoo.com
edit.*.yahoo.com
.google.com
.altavista.com/.*(like|url|link):http
.altavista.com/trans.*urltext=http
.nytimes.com

Очень важно, чтобы Privoxy знал, какие URL адресуют те или иные изображения, так как желательно при блокировании запросов по ссылкам на графические объекты посылать замещающую картинку вместо не очень «уместной» в таком случае HTML-страницы. Обращение к удалённому серверу для получения соотв. информации (послать запрос и посмотреть, что придёт в ответ на него) – это, очевидно, не выход из положения, поскольку таким образом будет нивелировано одно из главных преимуществ техники блокирования баннеров, заключающееся в достигаемом с её помощью уменьшении времени загрузки web-контента, и, к тому же, используя столь бесхитростно-прямолинейный подход к решению поставленной задачи, Privoxy ничуть не способствовал бы ущемлению хищнических интересов рекламодателей (по части денег и информации), которые таким образом всё равно получали бы от Вас всё, что им нужно. Методика идентификации графических объектов Privoxy основана на применении специального действия-маркера handle-as-image, с помощью которого можно URL любого вида как изображения, так что в качестве удачного решения «для начала» можно таким образом маркировать все URL, заканчивающиеся на стандартные расширения известных (наиболее распространённых) форматов графических файлов:

##########################################################################
# Изображения:
##########################################################################

# Определить, файлы каких типов будут распознаны как изображения, если адресующие их запросы будут блокированы
# политикой одной из последующих секций, обнаруживающих вхождение(я) соотв. URL в своём списке шаблонов
#
{ +handle-as-image }
/.*\.(gif|jpe?g|png|bmp|ico)$

В следующей секции добрым словом “помянем” наиболее известные источники баннеров. Для генерации баннеров они зачастую используют в качестве паразитных посредннков специальные скрипты, что способствует сокрытию от клиентской стороны того факта, что по запросу на этот URL будет отправлено изображение, поскольку при таком подходе клиентская сторона уже не имеет возможности предсказывать результат запроса, основываясь только на виде предлагаемой ссылки. Поэтому здесь мы в одно (сложное) действие блокируем их и пометим как изображения с помощью созданного нами ранее псевдонима block-as-image.(Конечно, с тем же успехом можно было бы использовать здесь комбинацию действий +block +handle-as-image). Помните, что тип замещающей картинки выбирается действием set-image-blocker. Поскольку все URL по определению соответствуют «корневой» секции, в которой изначально присутствует декларация (правило обработки запроса) +set-image-blocker{pattern}, то «шахматный паттерн» будет применяться в данном случае по умолчанию, и специально указывать на необходимость применения именно этого варианта в какой-либо из последующих секций уже не нужно.

# Known ad generators:
#
{ block-as-image }
ar.atwola.com 
.ad.doubleclick.net
.ad.*.doubleclick.net
.a.yimg.com/(?:(?!/i/).)*$
.a[0-9].yimg.com/(?:(?!/i/).)*$
bs*.gsanet.com
bs*.einets.com
.qkimg.net

Вообще блокирование баннеров является одной из наиболее важных задач, эффективно решаемых Privoxy. Существенная часть баннеров уже блокирована разрешённым по умолчанию действием filter{banners-by-size}, удаляющим ссылки на баннеры во время загрузки страниц, содержащих такие рекламные изображения, которые можно распознать по линейным размерам, характерным для этой разновидности «шедевральных произведений» вездесущего интернет-маркетинга; после фильтрации ссылок на баннеры из кода страницы, браузер больше не будет запрашивать их [изображения, а не страницы – п.п.] и, следовательно, дополнительное блокирование реклам-арта со стандартными (к сожалению, для нашей стран существует ещё с 10-ок собственных стандартов, из которых разработчиками Privoxy была учтена лишь небольшая часть -п.п.) габаритами было бы лишним. Но «в условиях полевых испытаний» выясняется, что действие filter{banners-by-size} способно перехватить далеко не все баннеры (хотя, при грамотной настройке файла фильтров становится возможным отсеивание по размеру большинства баннеров. Другое дело, что подобная система распознавания «свой-чужой» несовершенна, поскольку она может отсеять и что-нибудь полезное, приняв это за баннер... – п.п.), а некоторые люди вообще не используют фильтры, так что нам нужен здесь достаточно полный список адресов серверов крупных баннерообменных сетей, для каждого из которых будет применено действие block.

Сначала добавляются наиболее общие шаблоны адресующих баннеры ссылок, которые и выполняют фактически большую часть работы, отмечая наиболее распространённые доменные и путевые части имён рекламных ресурсов в Сети. Затем идёт список индивидуальных образцов сайтов, зарекомендовавших себя, как неистощимые источники баннерного мусора. (список был сокращён до одного элемента для того, чтобы сделать пример более наглядным и лаконичным):

##########################################################################
# Блокировать эти замечательные баннеры:
##########################################################################
{ +block }

# Общие шаблоны:
# 
ad*.
.*ads.
banner?.
count*.
/.*count(er)?\.(pl|cgi|exe|dll|asp|php[34]?)
/(?:.*/)?(publicite|werbung|rekla(ma|me|am)|annonse|maino(kset|nta|s)?)/

# Образцы, задаваемые отдельно для каждого из сайтов, ссылки на который не удовлетворяют ни одному из 
# общих определений (список приводится не полностью).
#
.hitbox.com

Вы не поверите тому, насколько же часто рекламодатели, не мудрствуя лукаво, называют свои баннерные сервера ads.company.com, или присваивают каталогу, в котором хранятся баннеры незамысловатое имя «banners» («баннеры»). Так что приведённые выше общие шаблоны оказываются просто на удивление эффективным средством для борьбы с рекламными изображениями.

Но, будучи слишком абстрактными, слишком широкими и неопределёнными, общие шаблоны неизбежно будут «заодно» вести диверсионную работу, нещадно отсеивая запросы по многим, на первый взгляд к рекламе и отдалённого отношения не имеющим, адресам, на что Вы, разумеется, санкции не давали, и, соответственно, порой результат, получаемый при попытке загрузки некоторых совершенно безобидных страниц может оказаться для Вас несколько обескураживающим. Например, образец .*ads., в полном соответствии с Вашими ожиданиями, справится со своей задачей «на ура», заблокировав "nasty-ads.nasty-corp.com", но вот предсказуемость того, что та же репрессивная мера будут применена и по отношению к совершенно безобидным на Ваш взгляд адресам вида "downloads.sourcefroge.net" или "adsl.some-provider.net", наверняка будет для Вас далеко не столь очевидной. Так что «во избежание недоразумений» укажем ниже известные исключения из правил, задаваемых в секции +block.

Обратите внимание на то, что это фактически исключения из исключений из политики «по умолчанию». Изначально все «действия» исключены, так что ни один из запросов не может быть блокирован просто по определению. Далее вводится секция глобальных настроек («корневая»), но и она лишь подтверждает статус действия block как неактивного, просто делая это в явной декларативной форме. На следующем шаге обнаруживается соответствие URL образцу .*ads., что определяет нобходимость сделать исключение из общей неблокирующей политики, и Privoxy по недоразумению принимает решение о необходимости блокирования запроса. Но досадная «коллизия» разрешается сразу же после обнаружения соответствия шаблону .*loads, для которого применяется регрессивное (с обратным действием) правило -block , и, т.о., (если, конечно, не будет обнаружено соответствие где-нибудь в дальнейшем) стадия предобработки запроса завершается при пассивном состояиии блокировки.

#################################################################################################
# Спасаем от максималисткого произвола вышеозначенных «общих шаблонов»
# невинные жертвы, просто «попавшие под горячую руку»:
#################################################################################################

# По домену:
# 
{ -block }
adv[io]*.  # (для advogato.org и advice.*)
adsl.      # (этот классический пример адреса, начинающегося на «ads» блокировать нельзя)
ad[ud]*.   # (adult.* и add.*)
.edu       # (университеты не хостят баннеры на своих серверах (пока!))
.*loads.   # (загрузки, «отгрузки» и т.д.)

# По пути:
#
/.*loads/

# Пути, задаваемые инидвидуально для каждого сайта с названием, не попадающим в область «компетенции» общих шаблонов:
#
www.globalintersec.com/adv # (adv = advanced)
www.ugu.com/sui/ugu/adv

Фильтрование исходного кода программ может привести к нежелательным побочным эффектам, так что сделаем исключение для наших друзей с sourceforge.net и всех путей, содержащих аббревиатуру «cvs» в пределах не только этого, но и любого другого сервера . Заметьте, что простая декларация -filter «отметает» буквально одни махом (это можно назвать не иначе как эдаким слишком широким жестом, если говорить о сомнительной целесообразности включения данного правила в секцию, задающую политику «по умолчанию» - п.п.) сразу все фильтры!

# Не надо фильтровать код!
#
{ -filter }
# («Система конкурирующих версий [исходного кода, документации и пр.]»)
/.*cvs 
.sourceforge.net

Конечно, на самом деле default.action по объёму на порядок превосходит суммарный размер приведённых здесь отрывков из него, но мы смеем надеяться на то, что представленный нами лаконичный пример структурной компоновки этого файла в достаточной мере разъяснил Вам, как «работают» настройки, производимые в нём.

8.7.2. user.action

До сего момента мы писали широкой кистью по «холсту» файла default.action, создавая общие правила, которые были призваны указать базовую точку отсчёта, которая могла бы поначалу служить разумным функциональным оптимумом для большинства пользователейЮ, пребывающих на начальных стадиях освоения ими приёмов и методов настройки Privoxy. Однако очевидно, что у Вас могут возникнуть более конкретные требования по отношению к тому, как должен вести себя Privoxy в той или иной ситуации, что определяет необходимость задания Вами собственных правил, которые могли бы в более полной мере отвечать Вашим привычкам и предпочтениям. Они должны применяться для ситуаций узкоспецифично-индивидуального характера, например, при работе в режиме «онлайн» с Вашим банком или при (двухсторонних) контактах и согласованиях с провайдером интернет-услуг, и могут быть размещены (рекомендовано разработчиками Privoxy – п.п.) в user.action, разбор и анализ которого происходит после окончания обработки всех остальных файлов действий и, соответственно, за ним остаётся «право последнего слова», позволяющее аннулировать, изменить, дополнить некоторые из ранее декларированных правил и политик. user.action – это также безопасное место для хранения Ваших персональных (индивидуальных) настроек, поскольку актуализацией default.action разработчики Privoxy занимаются постоянно в «интенсивном режиме» (и это при том, что Privoxy 3.0.3 вышел в 2003 году :-) - п.п.), так что Вам, вероятно, придётся время от времени устанавливать обновлённые (более «свежие») версии этого файла.

Так давайте же обратимся к нескольким примерам тех коренных преобразований, которые можно (и нужно!) осуществить посредством редактирования user.action:

# Мой файл user.action. <fred@foobar.com>

Поскольку область видимости псевдонимов для Privoxy локально ограничена тем файлом действий, в котором они определены, то Вы не можете использовать псевдонимы из файла default.action без полного или частичного дублирования текстового блока содержащей их секции в user.action:

# Определения псевдонимов действуют локально относительно того файла, в котором они даны.
# (Пере-)определяем псевдонимы для этого файла:
#
{{alias}}
# 

# Эти псевдонимы только избавят Вас от необходимости клавиатурного ввода длинных (и не очень... – п.п.)

# последовательностей действий:
#
+crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
-crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
 allow-all-cookies  = -crunch-all-cookies -session-cookies-only
 allow-popups       = -filter{all-popups} -kill-popups
+block-as-image     = +block +handle-as-image
-block-as-image     = -block

# Нижеследующие псевдонимы описывают комбинации действий по обработке запросов,

# полезные при работе с определёнными типами сайтов:
#
fragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referrer -kill-popups
shop        = -crunch-all-cookies allow-popups

# Разрешить рекламу для выбранных полезных свободных (бесплатных в смысле – п.п.) сайтов:
#
allow-ads   = -block -filter{banners-by-size} -filter{banners-by-link}

Предположим, у Вас есть учётные записи на некоторых регулярно посещаемых Вами сайтах, и Вы не желаете каждый раз утруждать себя прохождением там процедуры регистрации в ручном режиме. Say you have accounts on some sites that you visit regularly, and you don't want to have to log in manually each time. В таком случае, Вам нужны постоянные закладки cookie для этих сайтов. Назначение псевдонима «разрешать все cookies», которому выше была сопоставлена соотв. его названию комбинация действий, как раз в том, чтобы сделать Вашу жизнь более комфортной в ситуациях, подобных описанной выше, поскольку, будучи применённым в составе политики той или иной секции, он предотвращает уничтожение всех поступающих/исходящих cookie и модификацию поля «срок действия истекает» в их заголовках, которая делает cookie временными (односессионными):

{ allow-all-cookies }
sourceforge.net
sunsolve.sun.com
.slashdot.org
.yahoo.com
.msdn.microsoft.com
.redhat.com

У Вашего банка устойчивая аллергическая реакция на некоторые фильтры, но Вы не знаете на какие именно, так что Вы отключаете их все (известное дело – с банками шутки плохи! - п.п.).

{ -filter }
.your-home-banking-site.com

Рано или поздно Вы сможете привести веские доводы в пользу того, чтобы (по разным причинам) отказаться от фильтрации некоторых типов файлов. Что ж, всё в Ваших руках:

# В технической документации могут встречаться строки, которые могут быть по ошибке изменены JavaScript-ориентированными фильтрами.
#
.tldp.org
/(.*/)?selfhtml/

# А этот бестолковый хост посылает потоковое видео с неправильно установленным значением типа MIME, 
# из-за чего Privoxy думает, что получает HTML-контент и начинает фильтровать поступающие данные:
#
stupid-server.example.com/

Пример простой директивы (правила) block . Предположим, (о ужас! - п.п.) Вы увидели проклятого маркетингового лазутчика, залезшего со своим экологически опасным двигателем торговли прямо в HTML-код Вашей любимой страницы, размещённой на сервере example.com, и, разумеется, от этого незванного «гостя» Вам принципиально хотелось бы избавиться, в том числе и неконституционными методами. И вот Вы лёгким движением руки прицельно кликаете правой клавишей мыши прямо по этому вот упитанному паразиту (а они, буржуи проклятые, все такие – упитанные :) - п.п.), выбираете «копировать адрес рисунка» и, предварительно удалив префикс идентификации протокола http:// из URL, вставляете ссылку самый конец «чёрного» списка неблагонадёжных в секцию { +block }. Обратите внимание на то, что в данном случае нет необходимости специальным образом указывать (секцию или декларацию в заголовке секции) { +handle-as-image }, поскольку все URL, заканчивающиеся на стандартное расширение .gif , в любом случае будут помечены как изображения действующими общими правилами, установленными в default.action:

{ +block }
www.example.com/nasty-ads/sponsor.gif
another.popular.site.net/more/junk/here/ # другой.популярный.сайт.net/ещё-немного/хлама/здесь/

Адреса URL динамически генерируемых баннеров, в особенности тех, источниками которых являются крупные баннерные сервера, зачастую (в большинстве случаев) не содержат общепринятых расширений файлов, указывающих на принадлежность к одному из распространённых графических форматов, что существенно осложняет работу по настройке Privoxy, поскольку это не позволяет прокси-серверу производить идентификацию типа адресуемого файла, основанную только на просмотре и анализе целевого URL. Для таких случаев Вы можете воспользоваться предлагаемым Вам псевдонимом +block-as-image, описанным выше. Заметьте, что объекты, которые хотя и соответствуют этому правилу, но в действительности изображениями не являются, обычно отображаются иконкой “оборванной загрузки URL” в окне браузера. Так что пользуйтесь с осторожностью предоставляемой Вам возможностью блокирования ссылок URL произвольного вида «как изображений».

{ +block-as-image }
.doubleclick.net
/Realmedia/ads/
ar.atwola.com/

Теперь, Вы обратили внимание на то, что при действующих настройках «по умолчанию» онлайн-версия Журнала Forbes отказывается способствовать реализации Вашего права на получение полной и достоверной информации, но при этом Вы поленились выяснить, какое же именно действие «виновато» в эскалации проблемы оторванности широких слоёв бедствующего населения от СМИ (в оригинальном тексте, конечно, этого нет, но я решил несколько разнообразить немного суховатый текст «официального» документа – п.п.), и, опять же, Вам было лень обратится за поддержкой к нам , так что Вы просто использовали псевдоним fragile (хрупкий, ломкий, ранимый), и – вуаля!- это решило проблему (всё заработало, всё встало на свои места, жить стало лучше и веселее – п.п.). Псевдоним fragile запрещает те действия, которые с наибольшей вероятностью могут привести к неработоспособности того или иного сайта. Он полезен также для выявления источника проблем с отображением интернет-контента, позволяя во многих случаях определить, можно ли рассматривать в качестве этого источника исключительно деятельность Privoxy по обработке запросов,

{ fragile }
.forbes.com

Вам нравятся «прикольные» (ох уж этот мне молодёжный слэнг... - п.п.) текстовые замены, предлагаемые в файле default.filter , но они запрещены по умолчанию (У моих товарищей по команде просто отсутствует чувство юмора, такие вот невесёлые дела! ;-). В таком случае Вам, понятное дело, хотелось бы добавить возможность использования этих замен в своём личном, не затрагиваемом процедурой обновления Privoxy, файле настроек, причём для Вас желательно сделать это единожды и... для всех URL сразу:

{ +filter{fun} }
/ # Для ВСЕХ сайтов!

Впрочем, стоит заметить, что на самом деле использование приведённого выше варианта «как есть» в данном случае было бы далеко не лучшим решением. Дело в том, что в default.action были определены «противопоказания» фильтрации тех данных, которые ни в коем случае не должны «просеиваться» (и вообще в какой-либо мере быть подверженными влиянию помех, превносимых от какого-либо внешнего источника – п.п.) - наподобие программного кода в интерфейсах CVS->Web. Поскольку декларации, сделанные в user.action, имеют наивысший приоритет по отношению к определениям всех остальных файлов действий, то эти исключения из общих правил будут недействительны для назначенного здесь «потешного» фильтрования.

Также, Вас мог заинтересовать (а может быть, даже и взволновать, если здоровые проявления гражданской сознательности не чужды Вашей широкой натуре) вопрос о том, из каких же источников финансируются Ваши любимые веб-сайты, столь бескорыстно занимающиеся популяризацией свободного ПО и поддержкой движения Open Source, и тогда Вы могли обнаружить, что для жизнедеятельности этих сайтов критически важно, чтобы рекламодатели размещали на них свои баннеры, т.е. отображение рекламного контента является важнейшим условием существования таких полезных Вам и многим другим людям ресурсов. Итак, узнав, что имеет место описанная выше «диспозиция», Вы, наверное, хотите в порядке исключения разрешить загрузку баннеров с тех сайтов, от которых Вы получаете ощутимую «отдачу»:

{ allow-ads }
.sourceforge.net
.slashdot.org
.osdn.net

Отметьте, что псевдоним allow-ads предварительно (в секции «Псевдонимы») был ассоциирован с правилами -block, -filter{banners-by-size}, и -filter{banners-by-link}.

Как правило, user.action – это лучшее место для представления «отступлений и уточнений» к общей политике, декларируемой текстом файла default.action. Хотя здесь вполне уместным будет определить для некоторых действий их «политику по умолчанию». Так что давайте создадим ещё одно дополнение к общей доктрине обработки запросов, выработанной ещё на этапе формирования default.action, для замены картинки-шахматного паттерна («мозаичного мощения») специальным изображением - «заглушкой» сразу на ВСЕХ сайтах, Шаблон «/», конечно, соответствует, всем URL-путям и порождающим их URL-образцам:

{ +set-image-blocker{blank} }
/ # ВСЕ сайты

Пред

Домой

Следующ

Главный конфигурационный файл

 

Файл фильтров