Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Совместимость Adguard, техническое #84

Open
mtxadmin opened this issue Jun 13, 2024 · 0 comments
Open

Совместимость Adguard, техническое #84

mtxadmin opened this issue Jun 13, 2024 · 0 comments

Comments

@mtxadmin
Copy link
Owner

К вопросу о #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-заголовок

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant