Совместимость Adguard, техническое
К вопросу о #83 https://raw.githubusercontent.com/mtxadmin/ublock/master/it.txt
Поверхностно просмотрел, какие подводные камни могут быть при включении в Adguard
Ну !#include там тоже есть. https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#include-directive
Параметры разработчики старались называть одинаково, и логика работы та же.
Скриптлеты могут не совпасть (см. там же), но большой проблемы от этого случиться не должно. И вообще, все ##+js , похоже, съедут - "#%#//scriptlet(" scriptletName arguments ")" https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#scriptlets
Вот здесь может быть засада, из лучших побуждений разработчиков: https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#trusted-filters "Некоторые правила можно использовать только в доверенных фильтрах." Причём, список ограничений не указан - то есть, это первый кандидат на множественные подводные камни. Ниже по тексту можно найти упоминания, что там запрещено:
- Правила JavaScript. Это ладно
- Скриплеты. Странно и непонятно, зачем их запретили. Неприятно, но, в целом не смертельно.
- $hls. Интересно.
- $removeheader.
- $removeparam. Очень плохо.
- $replace.
https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#adguard-content-blocker Ужас-ужас, совершенно урезанная версия этот AdGuard Content Blocker.
https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#wildcard-for-tld "для AdGuard для Safari и iOS поддерживаемый список доменов верхнего уровня ограничен из-за ограничений Safari."
Про приоритеты подробно, что-то новое. В вики uBlock Origin этого момента не видел. https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#rule-priorities Не то, чтобы было сильно важно, но интересная деталь
И еще про приоритеты https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#cosmetic-rules-priority
В расширенных CSS-селекторах чуть другой синтаксис https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#extended-css-selectors "#?# — для скрытия элементов, #@?# — для исключений #$?# — для CSS-стилей, #@$?# — для исключений Настоятельно рекомендуем использовать эти маркеры каждый раз, когда вы используете расширенный CSS-селектор."
- то есть, можно и без них, и будет совместимо?
:matches-css() : https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#extended-css-matches-css " Для нерегулярных выражений паттерны (,),[,] должны быть без экранирования, например, :matches-css(background-image:url(data:*)).
Для регулярных выражений паттерны \ должны быть экранированы, например, :matches-css(background-image: /^url\("data:image\/gif;base64.+/). "
:matches-attr() : https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#extended-css-matches-attr " The :matches-attr() pseudo-class allows selecting an element by its attributes, especially if they are randomized.
target — optional, standard or extended CSS selector, can be skipped for checking any element name — требуется, простая строка, или строка с подстановочным знаком, или регулярное выражение для сопоставления имени атрибута value — необязательный, простая строка, или строка с подстановочным знаком, или регулярное выражение для сопоставления значения атрибута "
:matches-property() : https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#extended-css-property " The :matches-property() pseudo-class allows selecting an element by matching its properties.
target — optional, standard or extended CSS selector, can be skipped for checking any element name — требуется, простая строка, или строка с подстановочным знаком, или регулярное выражение для сопоставления имени свойства элемента value — необязательный, простая строка, или строка с подстановочным знаком, или регулярное выражение для сопоставления значения свойства элемента "
tag-content https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#tag-content " В будущем этот специальный атрибут может перестать поддерживаться. Предпочтительнее использовать псевдокласс :contains() там, где это возможно.
Пожалуй, наиболее часто используемый специальный атрибут. Он ограничивает выбор теми элементами, внутренний HTML-код которых (innerHTML) содержит указанную подстроку.
You must use "" to escape ", for instance: $$script[tag-content="alert(""this is ad"")"] "
$header https://adguard.com/kb/ru/general/ad-filtering/create-own-filters/#header-modifier Это не replace (тот запрещен), это реакция на HTTP-заголовок