AD-охотник : оперативный CSS-фильтр контента
Опубликовано: Бармалей · 28.05.2019 · 00:01 ••• Обновление: 11.01.2021 · 13:03 1

AD-охотник является одной из важных сервисных функций "Русского резака", являющейся аналогом известной "пипетки" в других блокировщиках рекламы.

В рамках "брэнда" x.Block этот термин можно интерпретировать как "Advanced (Advertisement) Destroyer (Destructor, Deleter)" – "продвинутый чистильщик рекламы", предназначенный для точечного "отстрела" любых нежелательных элементов дизайна веб-страниц. Это название также "навеяно" соответствующей функцией, имеющейся в старом добром браузере Maxthon2.)

В этой статье:


Краткая история создания и общее назначение "охотника"


[Копия скриншота]

Прообразом AD-охотника стало известное (в прошлом) расширение AdBlock+ Element Hiding Helper (сокращённо – AdBlockHelper). В разработке x.Block'а использован основной принцип и методы выделения контента на странице, заложенные в AdBlock+, эти функции были адаптированы под текущие "реалии" Интернета и работают практически без проблем на любых веб-сайтах.

Впервые в x.Block'е эта функция появилась с версии 2019.5.28 (ECR#3). В дальнейшем фича практически не претерпела изменений и используется во всех последующих релизах.

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

Принцип действия простой – после активизации "охотника" при перемещении мыши на веб-странице подсвечиваются все элементы, находящиеся под курсором (состояние "прицеливания").

Щелчок по любому подсвеченному элементу (собственно "выстрел") вызывает диалог сохранения CSS-правила для выбранной "цели", при подтверждении правило заносится в список блокировки. Если вы промазали и случайно завалили медведя выделили не тот элемент – ничего страшного, жмём Escape и "пущай живёт пока"…)

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


Вызов и активизация AD-охотника – попап или горячие клавиши

Главное, о чём следует помнить – AD-охотник не вызывается на страницах сайтов из вашего "белого списка" (на которых вы запретили блокировку). Соответственно, на этих доменах (сайтах) также не будут работать никакие ранее заданные правила CSS-фильтрации, установленные вами до включения сайта в "белый список".

На всякий случай – на "особо огороженных" доменах (CWS и иже) сабж также недоступен, по определению…

На остальных сайтах режим "AD-охотника" можно вызвать и настроить прямо в попапе:

На всякий случай – для большинства опций в попапе есть хелп в виде всплывающих подсказок, наводим мышку на кнопки, читаем и нажимаем…)

При одиночном щелчке по "стоп-знаку" [] открывается блок управления "охотника":

Блок настроек содержит две кнопки управления (на скриншоте выше подсвечена "стрелятельная" кнопка) и текстовое поле, в котором можно вручную внести любые изменения в правила для текущей страницы или сайта. Роль кнопок меняется в зависимости от действий пользователя, смотрим внимательно, читаем подсказки и делаем…

Кроме "стрелка" в попапе можно вызвать и "реаниматора" (вторая кнопка):

При вызове бригады скорой помощи "реаниматора" попап закрывается и подсвечиваются соответствующие "мёртвые души" на текущей странице. Наводим курсор, щёлкаем мышкой по "красненьким" и снимаем фильтрацию, всё просто!

Кроме того, доступ к режиму "AD-охотника" возможен и по горячим клавишам прямо на странице – при включении соответствующей опции в Настройках.

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

В общем, выбор способа вызова остаётся за вами, как вам привычнее и проще.


Настройка AD-охотника и управление созданными CSS-фильтрами

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

В общем, если вы "невкурсах" – лучше не ломайте то, что создано "охотником" автоматически.)

На скриншоте ниже подсвечена опция, отвечающая за доступ к функциям "стрелка" по нажатию горячих клавиш:

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

Если эта опция выключена – доступ (вызов) "охотника" (или "реаниматора") возможен только из попапа.

Вторая дополнительная опция в Настройках чисто сервисная, для удобства отладки и т.п.:

Назначение опции должно быть понятно из подсказки, в случае "мне просто для работы" её можно и не включать.

Кроме того, эта опция работает только если у вас при этом открыта в отдельной вкладке сама страница Настроек.

Если эта опция включена, все вновь создаваемые (или изменяемые в попапе или в "онлайне" на странице) CSS-фильтры сразу же, "на лету", перечитываются и отображаются и на открытой в фоне странице Настроек.


Особенности работы и настройка динамической CSS-фильтрации

Функционально AD-охотник состоит из инжектируемого скриптового модуля (xbhunter.js), обрабатывающего контент страницы, на которой он непосредственно загружен, и модуля "ответной части", которая обеспечивает связь между инжектором и фоновым скриптом, а также отвечает за общее управление и вызов "охотника" по требованию.

Выбранные пользователем "отстреленные" элементы дизайна запоминаются как специальные правила и в дальнейшем применяются автоматически для удаления таких элементов. При этом в x.Block'е задействуются те же самые функции, которые работают для любых других "подписочных" правил CSS-фильтрации, никакой отдельный обработчик правил для AD-охотника не требуется.

Режим "привязан" к дизайну конкретных сайтов и/или отдельных страниц. Созданные динамические CSS-правила не являются глобальными фильтрами.

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

Оперативно изменить текущие правила для конкретной страницы или сайта можно непосредственно в окне попапа. Полное управление всеми созданными CSS-фильтрами доступно в соответствующем блоке Настроек x.Block'а, включая правку/удаление любых правил по доменам, а также экспорт и импорт всех частных правил фильтрации через файлы в формате *.json.

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

Тем не менее, в x.Block'е возможна реальная блокировка загрузки таких элементов, если выставлена соответствующая опция в блоке "Оптимизация контента" ("Удалять из HTML-кода страницы все заблокированные элементы вместо их скрытия").

При включении этой опции все отфильтрованные элементы автоматически удаляются скриптом-инжектором на этапе загрузки страницы. Это реально позволяет сократить трафик, поскольку удаление "ненужного" html-кода предотвращает его последующую загрузку. Естественно, некоторая часть "зачищенного" может браться из кэша, но и эти элементы будут в любом случае удалены (или, как минимум, скрыты, если опция выключена).


Перенос правил AD-охотника в список "своих" фильтров

В режиме снятия фильтров AD-охотника можно перенести любой из фильтров в статические правила блокировки.

Для этого в режиме восстановления следует зажать ALT при щелчке на любом "красном" элементе (есть подсказка).

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

Щелчок на любом НЕ-скрытом элементе в этом режиме абсолютно безопасен – никаких действий не производится.

Удаление перемещённых элементов из правил (или отключение их блокировки) с этого момента доступно только в Настройках – в блоке "Частные правила блокировки".

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

Ну и наконец, для лучшего понимания "как оно у него внутри", заострим внимание на том…


Зачем и когда нужен "переключатель прицела" AD-охотника

У настоящего "стрелка" должна быть "под рукой" разная "оснастка" – заранее ведь не известно, с каким "зверюгой" придётся столкнуться "на охоте", вот и приходится брать и "обычную оптику" и "ИК" до кучи, чтоб наверняка…))

Так и у AD-охотника – есть два отдельных способа "выцеливания", технически они отличаются только методом отслеживания "нажатия на курок" щелчка по нежелательному элементу веб-страницы.

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

В таких случаях единственный метод "отстрела", имевшийся у "старины Хелпера", уже не работает, поэтому в более молодом и прытком современном AD-хантере добавлен и второй метод перехвата щелчка по элементу – "погружение". Этот метод по умолчанию не применяется и не запоминается в настройках (в подавляющем большинстве случаев хватает "основного прицела"), вызывается как альтернативный (поэтому и управляется зажатием клавиши ALT).

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

Итак, конкретных рекомендаций, когда именно применять тот или иной метод "прицеливания", нет и быть не может – всё обусловлено только конкретным веб-сайтом и способами его "типа защиты". Плюс, как уже сказано, зависит ещё и от других настроек x.Block'а. Но в любом случае – если не получается выделить одним способом, заменяем "прицел" и повторяем процесс "отстрела"…))


На этом по нашему "ворошиловскому стрелку" всё. Надеюсь, теперь большинство вопросов по его применению сняты.

Доброй охоты вам! :)



Описание и инструкции Бармалей
Бармалей 28.05.2019 11.01.2021 296 5.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:29+
Протестировано в:SRWare Iron 29/31/36/49 + 360 Extreme Explorer 9/11/12/13 (CR63/69/78/86)
Технологии и API:Чистый JavaScript (ES5), API: content-script, privacy, webRequest, contentSettings, contextMenus, storage, browserAction

Поделиться

Всего комментариев: 1
0
1 script0l0g 27.06.2020 • 18:50
За "заваленного медведа" – 5 баллов! thumb
В юблоке сам сталкивался, но в сабже оно реально "жёстче", чуть промахнулся "акелла" – и привет!))

Если серьёзно – нормально сделано, сижу, репу чешу на предмет пересесть на x.Block…)
close