|
Privoxy 3.0.3 Руководство Пользователя |
||
|---|---|---|
Файлы действий используются для того, чтобы определить соответствие между URL и комплексом методов обработки, применяемых, к запросам, адресуемым этими URL; иными словами, файлы действий определяют рамки отдельных множеств сайтов (или даже их частей), при обращении к которым рекламные изображения, закладки cookies и различные другие аспекты HTTP-контента и транзакций будут обработаны тем или иным образом. Вместе с Privoxy поставляется 3 таких файла, различающихся способами применения:
default.action – это наиболее важный файл действий (являющийся вершиной своеобразной иерархии actions-файлов, используемых Privoxy – примеч. переводчика), устанавливающий начальные значения для всех действий. Этот файл предоставляет базовый уровень функциональности для всего многообразия возможностей Privoxy. Фактически в нём описана совокупность общих правил, которые в большинстве случаев должны работать достаточно разумным практически для любого пользователя образом. Это файл, в который разработчиками постоянно привносятся исправления и обновления, после чего он становится становится доступным для пользователей.
user.action – позволяет делать исключения из общих правил и учитывать индивидуальные предпочтения для тех или иных сайтов. В качестве примера, если Ваш банк или Ваш провайдер интернет услуг (Internet Service Provider – ISP) предъявляет специфические (особенные) требования и, таким образом, создаёт необходимость задавать специальные настройки для взаимодействия с ним, то сделать это можно именно в файле user.action. Этот файл не затрагивается процедурой обновления.
standard.action – используется редактором конфигурации с web-интерфейсом для установки различных предопределённых именованных наборов правил (так называемых “политик”) в секции “действия по умолчанию” (default actions) файла default.action. Эти наборы правил отличаются возрастающим уровнем жёсткости (бескомпромиссности, агрессивности) и ни коим образом не влияют на поведение браузера до тех пор, пока Вы не выберите их явным образом при редактировании (и это по сути единственный разумный подход к редактированию default.action, потому как изменять отдельные настройки этого файла вручную нежелательно в силу вышеизложенных причин – примеч. переводчика). Изменять что-либо в файле standart.action крайне не рекомендуется.
Профили “по умолчанию” и ассоциированные с ними действия, предопределённые в файле standart.action:
Таблица 1. Настройки “по умолчанию”
|
Возможность |
Предусмотрительный |
Средний |
Смелый |
|---|---|---|---|
|
Распознавание и блокирование рекламы по 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.
Помните, что некоторые "действия", наподобие подавления cookies или запрещения на выполнение скриптов, могут создавать для Вас определённые трудности, сильно (или полностью) ограничивая функциональность некоторых сайтов, построенную на основе использования этих специальных элементов, (обеспечивающих в том числе “обратную связь” в пространстве web), приводя их (сайты) в совершенно неработоспособное состояние или сводя на нет пользу от специальных возможностей, ими предоставляемых. Поиск оптимального сочетания не всегда является простой задачей и, конечно, во многом определяется проблематикой сугубо индивидуального выбора в соответствии с Вашими личными интересами и предпочтениями. Обобщая, можно сказать, что чем более “агрессивными” будут Ваши настройки, эффект которых рапространяется на все сайты “по умолчанию” (секция в верхней части файла “действий”), тем большее число исключений Вам придётся сделать позже по отношению к “добропорядочным” сайтам (которые можно вносить в “белый список”, упомянутый в главе 7-й и более подробно обсуждаемый ниже – примеч. переводчика). Если, например, Вы “по умолчанию” настроены на то, чтобы размолотить в крошку всё отправляемое Вашему браузеру печенье (именно так в традиционном англ. языке дословно переводится технический неологизм cookies, так что это просто игра слов – п.п.), то Вам придётся сделать исключения из этого заведённого Вами правила для сайтов, посещаемых регулярно и требующих использования cookies для реализации действительно полезного информационного обмена; например, это могут быть: Ваш банк, любимый магазин, или даже просто газета, расположенные в пространстве online.
Для начала мы постарались предоставить Вам в файлах “действий” из состава дистрибутива Privoxy комплекс достаточно сбалансированных правил. Но для подобных универсальных решений нет и не может быть выработано общих подходов для простой оценки “на глазок” их пригодности к применению в реальных условиях. Существует слишком много подвижных факторов, пребывающих в постоянном взаимодействии и предопределяющих перманентный процесс обновления сайтов. Раньше или позже Вам придётся привнести изменения в предложенные нами правила (и перечитать эту главу :).
Для редактирования файлов действий проще всего использовать удобный инструмент с web-интерфейсом, доступный прямо из Вашего браузера, доступ к которому легко получить, послав из браузера запрос по специальному адресу http://config.privoxy.org/show-status (перехватываемому Privoxy как “внутренний” адрес для служебного пользования – п.п.) Редактор позволяет использовать два противоположных подхода к правке файлов “действий”: Вы можете осуществлять как очень “тонкую“ настройку любой элементарной возможности, основанную на привязке (механизме сопоставления, определения соответствий – п.п.) к одному или группе похожих адресов URL, так и довольствоваться простым выбором одного из стандартных вариантов предопределённых сводов (комплексов) правил (т.н. “политик”), таких как: “Осторожный”, “Средний” или “Смелый”. Предупреждаем: “Смелая” политика не только более агрессивна, но и включает настройки, искажающие оригинальное содержание web-страниц (к примеру, удаляющие выражения, употребление которых не принято даже в разговорной лексике, заменяющие название Всенародно Любимой Корпорации на нечто более подходящее и т.д.), целесообразность применения и качество реализации которых вполне может показаться Вам более чем сомнительными!
Если Вы предпочитаете использованию GUI (Графических Интерфейсов Пользователя) правку “голого текста”, то Вы можете, безусловно, также напрямую редактировать файлы “действий”. В этом случае за более подробной информацией Вам стоит обратиться к исчерпывающим комментариям, данным в файле default.action.
Файлы “действий” состоят (делятся на секции) из секций . Существуют специальные секции, наподобие необязательной секции "псевдонимы", которые будут обсуждаться позже. Теперь давайте акцентируем внимание на строении и назначении обычных секций: они имеют заглавную строку (часто разделяемую на множество отдельных строк в целях улучшения зрительного восприятия), содержащую список “действий”, разделённых пробелами и заключённых в фигурные скобки. Ниже следуетсписок образцов URL, каждый адрес на отдельной строке.
Для того, чтобы определить, какие “действия” должны быть использованы для обработки запроса (в данном случае запрос передаётся по протоколам HTTP либо HTTPS – п.п.), URL-идентификатор запрашиваемой стороны последовательно сравнивается со всеми образцами всех секций каждого из используемых файлов “действий”. Каждый раз, когда обнаруживается соответствие (чёткое, либо нечёткое совпадение (с шаблонами) – п.п.) с одним из образцов, список применяемых для обработки URL действий обновляется, таким образом постоянно расширяясь, при этом в список добавляется заглавная строка той секции, в которой был найден соответствующий образец. Если комбинации действий для нескольких обнаруживающих соответствие данному URL секций оказываются несогласованными по значению(ям) одного или нескольких “действий”, то фактически будут “конфликтные” присваивания значений, за исключением последнего; для остальных (согласованных по значениям) “действий” в итоге будет получен фактически результат сложения эффектов отдельных аддитивных операций (а именно описаниями аддитивных операций являются присвоения значений действиям). Например, если сначала будет установлено соответствие между URL и основной секцией с заглавной строкой, состоящей из одной аддитивной операции: { +handle-as-image }, а затем обнаружится ещё и соответствие секции с заглавной строкой “в одно действие”: { +block }, то в результате будут использованы для обработки URL оба “действия” (как мы видим, имеет место объединение политик разных секций по принципу логического сложения (логического “ИЛИ”) - п.п.)
Вы можете проследить за процессом обработки соответствий для любого выбранного URL, посетив одну из встроенных страниц, реализующих web-интерфейс Privoxy и доступную по нижеследующему адресу: http://config.privoxy.org/show-url-info.
Более детальную информацию по затронутым в этом разделе вопросам Вы можете получить из Приложения Анатомия Действий.
Как уже говорилось ранее, в Privoxy широко используются “образцы” для того, чтобы определить, какие действия могут быть применены для деструктивного анализа кода тех или иных сайтов и страниц, запрашиваемых Вашим браузером на предмет получения доступа к их контенту. Эти “паттерны” используют для поиска нечёткого совпадения (соответствия) на основе применения т.н. шаблонов, что позволяет достигать высокой степени гибкости при формировании общих определений. Это делает возможным создание выражений, представляющих собой контейнеры, “включающие” составной частью все заданные сочетанием шаблонов потенциально возможные расширения и, таким образом, полностью заменяющие многократно более избыточные определения множества различных образцов , имеющих (необходимые и) достаточные признаки схожести с данными “универсальными” выражениями (а “достаточность” контролируется опять же применением шаблонов – п.п.).
Обычно, выражения (или “образцы” - в данном случае под этими словами понимается одно и то же – п.п.), используемые Privoxy, имеют форму <домен>/<локальный путь>, где обе части выражения: <домен> и <путь>, вполне могут и отсутствовать (Именно по этой причине специальный образец / соответствует всем (любым) URL). Заметьте, та часть стандартного лексического представления адреса URL, которая идентифицирует используемый при обращении по этому адресу протокол обмена (например, http://), не должна включаться в те выражения, которые Вы формируете для настройки Privoxy. “Незримое присутствие” этой части учитывается автоматически! (....являясь для Privoxy само собой разумеющимся, ни коим образом не подвергающимся сомнению, абсолютно очевидным и т.д. фактом – п.п.)
Privoxy предоставляет очень гибкие возможности по созданию ассоциативных связей для доменной части сетевого имени: если первым или последним символом имени является “точка”, то оно становится свободно расширяемым соответственно либо в начале, либо в конце, либо же становится возможным произвольное дополнение имени с обеих сторон. Приведём несколько наглядных примеров:
Также имеется возможность использования самостоятельного механизма подстановки на основе замещения части символьной строки доменного имени нечётким описанием на основе применения традиционных специальных шаблонов (“джокеров”, если хотите - п.п.). Они [шаблоны] работают во многом аналогично подстановочным шаблонам оболочки shell: "*" представляет последовательность из нуля и более произвольных символов, “?” обозначает вхождение в данной позиции строки любого одиночного символа, Вы также можете определять классы символов в квадратных скобках, и всё это возможно применять в совершенно произвольных сочетаниях:
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, представленным в точности тем же кодовым набором, что и заданный Вами образец для сравнения.
В исходном состоянии Privoxy, т.е. до разбора и анализа каких-либо файлов настроек (разумеется, это не относится к главному конфигурационному файлу – п.п.), все “действия” по умолчанию отключены и применение определённого подмножества действий для обработки тех или иных URL-запросов станет возможным лишь после “разрешения” использования всех составляющих подмножества. Мобилизовать ту часть функциональности Privoxy, которая реализуется посредством определённого “действия”, можно просто предварив символом “+” его [действия] строковый идентификатор, а деактивизировать - соответственно, через простановку лидирующего символа “-”. Таким образом, запись +действие обозначает “примени это действие”, например, +block означает “пожалуйста, заблокируй адреса URL, обнаруживающие соответствие одному или нескольким образцам из нижеследующего списка (перечня)”, а -block обозначает “ввести запрет на блокирование любых URL, являющихся расширениями нижеследующих “путевых” регулярных выражений, даже если ранее были получены противоречащие этому указания (т.е. для некоторых из них (или для всех) было разрешено действие block)”.
Кроме того, “действия”, которыми Вы оперируете, должны быть размещены в одной строке, заключенной в фигурные скобки, и разделены типографскими пробелами (т.е нельзя же разделять вообще всё символом подчёркивания, как это, не отдавая себе в том отчёта, по привычке пытаются делать профессиональные программисты! - п.п), так что должно получаться нечто подобное этому: {+some-action -some-other-action{some-parameter}}, сопровождаемому списком образцов URL (по одному в строке), попадающих “в область компетенции” того сложного или простого оператора, который записан выше в фигурных скобках. Вместе специальный заголовокв фигурных скобках, описывающий комбинацию действий, и следующие за ним строки с образцами, составляют секцию файла “действий”.
Можно выделить три различных класса действий:
Элементарные двоичные, т.е. действие может быть только “разрешено” или “запрещено”. Синтаксис:
+имя # разрешить действие с идентификатором имя -имя # запретить действие с идентификатором имя |
Пример: +block
Параметризованные, где некоотрое значение требуется в обязательном порядке для активации “действия” такого типа. Синтаксис:
+имя{параметр} # разрешает действие и устанавливает значение параметра равным указанному в фигурных скобках
# с перезаписью предыдущего определения, если это необходимо
-name # отменить действие. Параметр может быть опущен
|
Обратите внимание на то, что если один URL соответствует множеству позитивных форм параметризованного действия, то фактически будет использовано только последнее из сделанных определений, т.е все остальные будут просто проигнорированы.
Пример: +hide-user-agent{ Mozilla 1.0 }
Многозначные. Хотя их определения выглядят в точности так же, как и для параметризованных действий, но тем не менее различия в “поведении” между этими двумя разновидностями очень существенны, т.к. если многозначное действие применяется многократно к одному и тому же URL, но с различнми параметрами, то все параметры из всех соответствий будут учтены (что не имеет места быть для параметризованных действий – п.п.). Это используется для действий, эффект которых для разных значений параметров куммулируется при обработке одного и того же запроса, например, при добавлении различных заголовков или фильтрации через множество выполняющих самостоятельные функции фильтров. Синтаксис:
+имя{параметр} # разрешить действие и добавить параметр в список [параметров]
-имя{параметр} # удалить параметр из списка и, если он был последним в списке, дезактивировать действие
-имя # окончательно запретить это действие и удалить все параметры из списка
|
Пример: +add-header{X-Fun-Header: Некоторый текст} и +filter{html-annoyances}
Если в файлах действий ничего нет, то и не будет предпринято никаких специальных мер по контролю и обработке URL-запросов. Т.е. в этом случае Privoxy будет представлять собой традиционный прокси, ничего не блокирующий и совершенно не отличающийся стремлением повышать уровень Вашей анонимности. Вы должны специальным образом разрешить использование нужных Вам возможностей защиты кофиденциальной информации и блокирования нежелательных запросов (хотя предоставляемые в составе дистрибутива Privoxy оригинальные файлы действий с настройками по умолчанию также могут служить неплохой точкой отсчёта).
Определения “действий”, сделанные позже, перезаписывают те, которые были сделаны раньше. Так что превносимые исключения из любых правил, которые Вы превносите, должны располагаться в самом конце файла (или, если Вы используете несколько файлов действий, для собственных настроек удобно ипользовать отдельный файл, который считывается из списка actionsfile последним (см. главу 7 “Руководства пользователя”)). Многозначные действия применяются том порядке, в котором следуют их описания. Последовательная обработкf файлов действий происходит в том порядке, в котором они определены в config (в стандартном дистрибутивном комплекте имеется 3 файла действий). Также вполне возможно для любого заданного шаблона URL-адреса обнаруживать соответствие более, чем одному образцу и, таким образом, отрабатываться по правилам, формируемым сразу несколькими наборами “действий”!
Далее приводиться список всех предопределённых действий Privoxy:
+add-header{X-User-Tracking: sucks}
|
{+block} # Блокировать и заменить на страницу "blocked"
.nasty-stuff .example.com # .мерзость.пример.com
{+block +handle-as-image} # Блокировать и заменить на картинку
.ad.doubleclick.net
.ads.r.us
|
+crunch-incoming-cookies # позитивная форма декларации (объявления) действия crunch-incoming-cookies |
+crunch-outgoing-cookies # позитивная форма декларации (объявления) действия crunch-outgoing-cookies |
+deanimate-gifs{last} # ограничить анимацию GIF показом последнего кадра
|
{+downgrade-http-version}
problem-host.example.com
|
{+fast-redirects} # включить быстрые перенаправления
|
+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, реализуемых кодом, содержащим создающие реальную угрозу безопасности системы ошибки,
|
# Основные расширения графических файлов: # {+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 |
+hide-forwarded-for-headers |
+hide-from-header{block}
|
+hide-from-header{spam-me-senseless@sittingduck.example.com}
|
+hide-referrer{forge}
|
+hide-referrer{http://www.yahoo.com/}
|
|
Предупреждение |
|
Это действие может сильно затруднить Вашу работу с теми сайтами, функциональность и внешний вид которых зависит от результатов анализа этого заголовка (ваятели сайтов эксплуатируют такого рода технологии, между прочим, далеко не от большого ума!). |
+hide-user-agent{Netscape 6.1 (X11; I; Linux 2.4.18 i686)}
|
+kill-popups |
+limit-connect{443} # Это значение по умолчанию и его не нужно задавать специально.
+limit-connect{80,443} # Принимать запросы на порты 80 и 443.
+limit-connect{-3, 7, 20-100, 500-} # Используются порты с номерами до 3-х, 7-й, номера в диапазоне с 20-го по 100-й, а также все после 500-го.
+limit-connect{-} # Принимаются запросы, поступающие на любой порт (этим создаётся критическая по характеру брешь в системе безопасности!)
|
# Определить умолчания: # {+prevent-compression} / # Соответствует всем сайтам # Сделать исключения для сайтов “с отклонениями”: # {-prevent-compression} www.debianhelp.org www.pclinuxonline.com |
+send-vanilla-wafer |
{+send-wafer{UsingPrivoxy=true}}
my-internal-testing-server.void
|
+session-cookies-only |
+set-image-blocker{pattern}
|
+set-image-blocker{http://www.freebsd.org/gifs/dae_up3.gif}
|
+set-image-blocker{http://config.privoxy.org/send-banner?type=pattern}
|
Обратите особое внимание на то, что многие из этих “действий” потенциально могут спровоцировать некорректное, а порой и непредсказуемое поведение некоторых веб-страниц, что может привести к полной их неработоспособности, вплоть до отказа отображаться вообще хоть как-нибудь. Существует огромное количество вариантов построения (вёртски) сайта веб-дизайнером, так, что, например, содержимое заголовков HTTP варьируется совершенно произвольным образом от адреса к адресу, да и множество других критериев создают совершенно немыслимое число степеней свободы, определяющих тот или иной “стиль” работы ресурса во Всемирной Паутине. Таким образом, невозможно подобрать некий универсальный набор достаточно жёстких и стабильных правил для всех сайтов на все времена. Обращайтесь к Приложению для ознакомления с короткими примерами, в первом приближении дающими представление о том, какие действия надо предпринимать для решения вышеозначенных проблем.
Специальные сложные “действия”, называемые “псевдонимами” в терминологии 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" (“Не влезай – убьёт”, “Дышат на ладан” или просто “Хрупкие” - выбирайте, какой вариант Вам больше по вкусу – п.п.) часто используются для проблемных сайтов, которые ставят подавление (отключение) некоторых иммунных свойств системы пользователя (реализуемых через механизм действий в данном случае) в качестве обязательного условия обеспечения их [сайтов] нормального функционирования.
В представленных выше разделах были подробно освещены вопросы о том, какие файлы действий существуют и как они устроены, как действия объявляются и ассоциируются с URL-адресами, как реализуется механизм основанных на шаблонах образцов и как описать (создать) и использовать псевдонимы. Теперь, давайте заглянем в предоставляемые Вам в составе дистрибуции примеры файлов default.action и user.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 (Помните: предваряющий название действия знак “+” разрешает его [действия] использование при обработке соответствующих запросов, а знак “-” - запрещает). Также обратите внимание на то, как эта длинная строка была приведена к более удобочитаемому виду посредством разбиения её на множество строк с использованием специального символа продолжения на конце.
Итак, на предыдущем этапе нами была выработана методика обработки запросов “по умолчанию”... Стоит особо подчеркнуть то, что некоторые действия, например, “не скрывать информацию о браузере пользователя” (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 по объёму на порядок превосходит суммарный размер приведённых здесь отрывков из него, но мы смеем надеяться на то, что представленный нами лаконичный пример структурной компоновки этого файла в достаточной мере разъяснил Вам, как «работают» настройки, производимые в нём.
До сего момента мы писали широкой кистью по «холсту» файла 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} }
/ # ВСЕ сайты
|
|
Главный конфигурационный файл |
|
Файл фильтров |