uMatrix





                Иконка на панели инструментов

Красная и зеленая области дают приблизительное представление о том,
сколько ресурсов было заблокировано (красноватый цвет)
и сколько ресурсов не было заблокировано (зеленоватый цвет).

Число на иконке показывает количество заблокированных/модифицированных запросов.





                Всплывающая панель

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

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

В матрице есть четыре отдельных раздела, сверху вниз:
    Верхняя секция - для доменов и поддоменов первой стороны.
    Вторая секция - для доменов из белого списка.
    Третья секция - домены из серого списка, т.е. домены, которые не входят ни в белый, ни в черный список.
    Четвертый раздел - для доменов из черного списка.

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

Число на иконке переключателя фильтрации матрицы показывает количество заблокированных/модифицированных запросов.





                Переключатель уровня домена

В панели управления: Настройка -> Матрица -> Область применения по умолчанию:
Сайт
Домен
Глобально

Во всплывающей панели:
sub.domen.tld


domen.tld




tld





*






                Переключатель области применения

Воркеры, <noscript>, реферер, смешанное содержимое.
Важно: Переключатели для каждой области не зависят от переключателя фильтрации матрицы,
поэтому, если вы отключите фильтрацию матрицы, включенные переключатели для каждой области
будут по-прежнему применяться.
Например, можно отключить матричную фильтрацию, сохранив при этом возможность запрещать смешанный контент.
Число на иконке — количество включённых переключателей.

«Подменять <noscript> теги, когда скрипты главного домена заблокированы» (отмеченное) —
тот же результат, что и в настройках NoScript «Скрывать элементы <noscript>» (неотмеченное).




                Значок пазла (головоломки)

Готовые рецепты для данного сайта.
Активируется только если отмечена галка в панели управления:
Стронние правила -> Наборы правил -> Ruleset recipes for English website



                Типы запросов


matrix header    
rule type      
browser resources
(invisible) doc root document
cookie cookie cookies,
local storages (as browser API allows)
css css stylesheets,
fonts
image image images (<img>, <picture>)
media media audio (<audio>),
video (<video>),
plugins (<object>, <embed>)

it is expected that users of uMatrix will have their click-to-play setting enabled in their browser
script script scripts
XHR xhr XMLHttpRequest, Fetch, WebSockets
frame frame embedded documents (<iframe>, <frame>)
other other everything which does not fit in previous types:
beacons,
CSP reports,
ping,
Web App Manifest,
XBL,
DTD,
XSLT, and other unspecified types





                Логгер



    Индикаторы особого статуса
Серый фон (или бледно-серый для закрытых вкладок) означает, что запись является behind-the-scene сетевым запросом.
Бледный шрифт означает, что запись принадлежит закрытой вкладке.
Вы можете удалить записи закрытой вкладки из логгера, используя значок на панели инструментов.

Можно кликнуть область индикатора состояния , чтобы открыть матрицу соответствующей вкладки (если есть).
Матрица будет открываться в липком режиме, т.е. вы можете держать ее открытой постоянно.
Открытая матрица будет отражать состояние конкретной вкладки в браузере, поэтому записи журнала,
не связанные с этой вкладкой, будут недоступны.

    Фильтр запросов
Вы можете фильтровать записи в логгере, используя выражения фильтра.
Записи логгера, которые не соответствуют всем выражениям фильтров, будут скрыты от просмотра.
Синтаксис выражения фильтра:

"foo" — последовательность символов или тип запроса.

foo
  только те записи, которые содержат "foo" + все behind-the-scene
|foo
  только записи, которые начинаются с "foo" + все behind-the-scene
|-- 
  только записи заблокированных запросов + все behind-the-scene
foo|   только записи, которые заканчиваются на "foo" + все behind-the-scene
|foo|   только те записи, в которых есть только "foo" + все behind-the-scene

Префикс любого выражения с "!" инвертирует значение выражения.

    !foo    только те записи, в которых нет строки "foo" + все behind-the-scene
    !|--    только те записи, которые не были заблокированы + все behind-the-scene

Если более одного выражения фильтра, подразумевается логическое and между выражениями.
Специальное ключевое слово можно использовать для фильтрации behind-the-scene  запросов:

    bts
или
    |bts для более строгой фильтрации.

Примеры:

!|-- facebook
  только неблокированные записи с "facebook" в них + все behind-the-scene
|xhr private
  только записи типа XMLHttpRequest с "private" в них + все behind-the-scene
!|image !|css   только записи типов, отличных от image и css + все behind-the-scene
!|-- |xhr |css
  так не работает
|xhr |css   так не работает





                Синтаксис правил

source hostname {white spaces} destination hostname {white spaces} [request type {white spaces} [action]]
action надо указывать.

Не работает (хотя такие правила в «Мои правила» не пропадают):
instagram.* * * action
instagram * * action
Нужно указывать домен верхнего уровня.

После символа # идёт комментарий, но комментарии в «Мои правила» пропадают.

Общий принцип: более конкретное правило превалирует над менее конкретным.
Приоритет определяется в методе evaluateCellZXY (см. matrix.js).

Порядок приоритета следующий: matrix-off > srcHostname > desHostname > type
Порядок правил не имеет значения. Не определено, какое правило будет иметь эффект среди правил с одинаковым приоритетом.
1  matrix-off: ololo true
2  forum.mozilla-russia.org mc.yandex.ru image action
3  forum.mozilla-russia.org mc.yandex.ru * action
4  forum.mozilla-russia.org * image action
5  forum.mozilla-russia.org * * action
6  * mc.yandex.ru image action
7  * mc.yandex.ru * action
8  * * image action
10 * * * action





                Добавление правил в «Мои правила»

Для любой данной 3rd-party, если требуется только один тип запроса, то правило должно разрешать только этот конкретный тип.
Пример:
habr.com hsto.org xhr allow

Для любой данной 3rd-party, если требуется более одного типа запроса, возможны два случая:

Случай 1: Если нужны только пассивные ресурсы, то правила должны быть специально только для этих пассивных ресурсов.
Пример:
habr.com hsto.org css allow
habr.com hsto.org image allow

Случай 2: Если необходимы активные ресурсы, то широкое правило должно добавляться к более конкретным.
Пример:
habr.com hsto.org * allow
habr.com hsto.org frame allow
habr.com hsto.org script allow

Когда используется такое правило, как habr.com hsto.org * allow, нет необходимости явно объявлять правила
для пассивного содержимого (т.е. нет необходимости в habr.com hsto.org image allow).





                Как работать с жёстким запретом 3rd party по умолчанию

Удалить два правила:
* * css allow
* * image allow



Если добавлялись свои, например * * cookie allow, то и его удалить.





                Как блокировать корневые документы  по умолчанию везде

По умолчанию uMatrix не препятствует загрузке корневых документов - если только сам домен не внесен в черный список.
Было бы весьма непрактично блокировать все корневые документы по умолчанию.

В uMatrix есть встроенное разрешающее правило (* * * doc allow), благодаря которому корневые документы будут правильно загружаться
даже при наличии блокирующего правила на ячейке all, и даже если текущий домен не внесен в белый список
(это произойдет, если вы удалите * 1st-party * allow из вашего набора правил):



Если вы хотите, чтобы даже корневой документ наследовал состояние ячеек с более низким приоритетом,
вам нужно переопределить встроенное правило разрешения для корневого документа.
Для этого вам нужно добавить следующее правило в набор правил,
отредактировав его вручную через панель «Мои правила» в панели управления:
* * doc inherit

Если вы дополнительно удалите правило
* 1st-party * allow
из вашего набора правил, то все корневые документы будут заблокированы по умолчанию
(при условии, что ячейка с более низким приоритетом all занесена в черный список):

https://user-images.githubusercontent.com/585534/33379162-50cdf37c-d4e5-11e7-8ef9-4fdb349fcaa8.png

И вам придется явно создать разрешающее правило для загрузки корневого документа:



Обратите внимание, что встроенное правило
* * doc allow
никогда не появляется в «Мои правила», потому что в прошлом пользователи удаляли все правила, а затем открывали проблему
о том, что uMatrix теперь блокирует слишком много. Теперь это правило встроено и должно быть переопределено с помощью явного
* * doc inherit
чтобы корневые документы наследовали свой статус блокировки/разрешения от ячейки all.





                Как получить доступ к всплывающей панели при отсутствии панели инструментов

Иногда бывает так, что вам необходимо получить доступ к всплывающей панели uMatrix для всплывающего окна браузера.

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

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

Однако для этой ситуации есть обходной путь, но вам нужно найти способ запустить логгер uMatrix — это можно сделать
из любого окна браузера, для которого видна панель инструментов:

https://user-images.githubusercontent.com/585534/33516598-7172ce30-d743-11e7-8240-35d6dbec43fd.png

Открыв логгер, обновите содержимое всплывающего окна без панели инструментов (нажмите F5),
в журнале появятся записи, связанные с содержимым всплывающего окна.

Далее найдите любую запись, связанную со всплывающим окном (вы можете использовать раскрывающийся список
в левой верхней части логгера (Все, Скрытые запросы, вкладки),
чтобы просмотреть только записи для конкретной веб-страницы),



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



или кликните значок .



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






                Обход перенаправлений

Иногда uMatrix может заблокировать документ, который просто предназначен для перенаправления на другой сайт.
(Если, например, зачем-то разрешены скрипты в поиске гугла)
Часто в этих перенаправлениях используются URL-адреса, в которых реальный URL-адрес назначения закодирован в качестве параметра.
Начиная с версии 1.1.14, uMatrix проанализирует параметры URL-адреса, если таковые имеются,
и представит их вам для использования по вашему усмотрению. Нередко в анализируемом результате можно найти
фактический URL-адрес, который является реальным URL-адресом назначения:



Когда это произойдет, вы, возможно, захотите просто кликнуть по целевому URL-адресу и обойти все промежуточные серверы.





________________

Пример всплывающего окна взят с https://htmlweb.ru/java/example/is_popup_window.php
Остальная инфомация и некоторые изображения с https://github.com/gorhill/uMatrix/wiki