BlockIt

Инструкция к расширению BlockIt

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

Видеоинструкция В начало

В видео показано, как пользоваться BlockIt, создавать правила и проверять результат.

Если встроенный плеер не открылся, посмотрите видео на YouTube.

Что такое BlockIt?

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

Ключевые особенности

Быстрое начало В начало

Этот путь подходит, если вы хотите сначала попробовать готовый CSS-селектор из DevTools.

Язык интерфейса DevTools на скриншотах — русский, хотя по умолчанию в браузере он на английском. Вы можете изменить настройку языка интерфейса DevTools.

Как настроить DevTools под себя Необязательно

Как открыть DevTools

ДействиеРезультат
F12Открывается панель DevTools.
Ctrl + Shift + IОткрывается та же панель.
Правый клик по элементу → «Посмотреть код» / «Inspect»DevTools открывается с подсвеченным элементом.

Язык интерфейса

  1. Откройте DevTools.
  2. Нажмите шестерёнку ⚙ в правом верхнем углу и откройте «Настройки» / «Settings».
  3. Откройте вкладку «Параметры» / «Preferences».
  4. В разделе «Язык» / «Language» выберите нужный язык.
  5. Закройте и снова откройте DevTools.

Расположение панели

Нажмите ⋮ в правом верхнем углу DevTools и выберите расположение в блоке «Сторона закрепления» / «Dock side»: справа, снизу, слева или в отдельном окне. Закрепление справа обычно удобно на широком мониторе, снизу — если по вертикали достаточно места, а отдельное окно — при работе с двумя экранами.

Проверяйте счётчик совпадений. Одно совпадение обычно является хорошим результатом. Ноль означает, что правило ничего не находит. Несколько совпадений допустимы, если вы убедились, что каждый найденный элемент нужно заблокировать.

Советы по выбору элемента для блокировки

Прежде чем копировать селектор или HTML, важно правильно определить, какой именно элемент нужно заблокировать.

  • Используйте подсветку в DevTools. Когда вы наводите курсор на строки HTML-кода, соответствующие элементы на странице подсвечиваются. Это помогает точно понять, какой участок страницы будет заблокирован.
  • Выбирайте самый внешний элемент, но без лишнего. Найдите максимально внешний контейнер, который содержит ровно нужный блок и ничего больше. Слишком глубокий элемент может оставить часть рекламы видимой, а слишком внешний — скрыть полезное содержимое.
  • Следите за счётчиком элементов. После вставки правила BlockIt показывает количество найденных элементов. Одно совпадение обычно безопаснее. Несколько допустимы, если вы проверили каждый найденный элемент; если совпадений 0 — правило ничего не найдёт.

Если после добавления правила блокируется слишком много или, наоборот, ничего не блокируется, удалите правило и попробуйте выбрать другой элемент — выше или ниже по дереву HTML.

Режимы блокировки

Обычно правило срабатывает сразу. Если элемент остался видимым, обновите страницу.

Способы создания правила В начало

Сначала найдите нужный элемент в DevTools и посмотрите на его тег, классы и атрибуты.

Что может помочь?

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

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

1Скопировать CSS-селектор из DevTools Нажмите, чтобы прочитать

Начните с этого способа, если хотите быстро проверить, можно ли заблокировать элемент обычным селектором. DevTools создаёт его автоматически: выберите элемент, затем «Скопировать» / «Copy» → «Копировать selector» / «Copy selector».

Вставьте селектор в основное поле BlockIt, проверьте счётчик и добавьте правило. Если результат нестабилен после обновления, переходите к StableHTMLFinder или конструктору.

2Скопировать XPath из DevTools Нажмите, чтобы прочитать

XPath — альтернативный способ описать путь к элементу по структуре страницы. Он может помочь, если классы и другие атрибуты нестабильны, но сам путь к элементу остаётся неизменным. В DevTools выберите «Копировать XPath» / «Copy XPath», затем вставьте выражение в основное поле BlockIt.

Проверьте полученное выражение. Chrome может построить XPath через id. Если этот id меняется, такой XPath тоже будет нестабильным. Абсолютный путь с порядковыми номерами, в свою очередь, сломается при перестройке HTML.

BlockIt проверяет XPath отдельно в основном документе и в каждом iframe, поэтому XPath элемента внутри iframe может сработать. Через границу Shadow DOM браузер не выполняет XPath. В таком случае используйте способ, который строит правило на основе CSS-селектора или расширенного синтаксиса BlockIt: например, конструктор правила либо StableHTMLFinder.

3Создать быстрое правило из HTML Нажмите, чтобы прочитать

Этот способ даёт больше контроля, чем готовый селектор из DevTools: после разбора HTML вы сами решаете, какие атрибуты войдут в селектор.

Не оставляйте атрибут автоматически. Класс или id со случайным набором символов может измениться после следующей загрузки страницы.
4Использовать StableHTMLFinder Нажмите, чтобы прочитать

Установить StableHTMLFinder из Chrome Web Store

Подробное руководство: инструкция StableHTMLFinder.

StableHTMLFinder полезен, когда классы и id обфусцированы, меняются между загрузками или на странице много похожих блоков. Он часто проще, чем ручной разбор HTML, но анализ занимает время: расширению нужно несколько раз загрузить страницу.

StableHTMLFinder не блокирует элементы сам. Он помогает выбрать основу для правила BlockIt:

  • CSS-селектор — самый простой вариант, если он построен по устойчивым признакам и находит нужное количество элементов.
  • Правило BlockIt — используйте, если для точного поиска нужны возможности расширенного синтаксиса, которых нет в обычном CSS.
  • Самостоятельная работа с картой — изучите стабильные признаки самого элемента и его окружения, а затем укажите их в конструкторе BlockIt. Этот вариант полезен, если готовые результаты недостаточно точны.
5Открыть конструктор правила Нажмите, чтобы прочитать

Конструктор правила — мощный инструмент для создания точных правил без знания CSS, XPath или синтаксиса BlockIt. Он подходит и для стабильных, и для нестабильных элементов: правило может опираться не на конкретный класс, а на текст, количество атрибутов или классов, положение среди сиблингов и окружающие элементы.

В DevTools скопируйте HTML нужного элемента, откройте «Продвинутый режим» BlockIt, вставьте HTML в соответствующее поле и нажмите «Открыть конструктор».

Карточка элемента

Каждая карточка описывает один HTML-элемент: тег, количество атрибутов, условия по атрибутам, тексту и позиции.

Дерево связей

Предки находятся выше. Потомки располагаются ниже с отступом. Сиблинги находятся на одном уровне вложенности.

Устойчивые признаки

Автоматически подставленные значения можно отключать. Не используйте меняющиеся id и классы только потому, что они были найдены в HTML.

Проверка

Смотрите количество совпадений сразу, затем используйте «Проверить после обновления», чтобы убедиться в устойчивости результата.

Какие признаки указать в карточке элемента?

По возможности оставляйте только нужные и достаточно устойчивые признаки. Если хотите проверить совпадения в DevTools, используйте признаки, из которых конструктор может собрать обычный CSS-селектор. Метка рядом с предпросмотром показывает, что получилось: «CSS-селектор» или «Правило BlockIt».

  • Тег, классы и атрибуты: тег, отдельные классы и обычные условия на имя и значение атрибута обычно можно выразить CSS-селектором. Для имени атрибута подходят точное совпадение и поддерживаемые CSS сравнения значения: точно, начинается с, заканчивается на или содержит.
  • Количество атрибутов и классов: можно задать ровно, не менее или не более указанного числа. Эти подсчёты нельзя проверить обычным CSS-селектором — они требуют синтаксиса BlockIt.
  • Текст: собственный текст элемента или текст внутри него, в том числе точное совпадение, начало, конец, часть текста или регулярное выражение. Обычный CSS не ищет элементы по тексту, поэтому такое условие требует BlockIt.
  • Частичное совпадение имени класса, регулярные выражения и шаблоны имени атрибута: такие условия также требуют BlockIt; CSS-селектор не умеет проверять регулярные выражения.
  • Позиция среди сиблингов: порядковый номер среди детей одного родителя можно выразить CSS-псевдоклассом вроде :nth-child(). Но выбор номера среди уже найденных правилом совпадений — отдельная возможность BlockIt.
  • Связанные элементы и расстояние до сиблинга: некоторые связи конструктор может выразить CSS, другие сочетания связей и условий требуют BlockIt. Расстояние 0 означает непосредственного соседа.

Если в предпросмотре указано «Правило BlockIt», проверить его как CSS в DevTools не получится. Такие признаки включайте, когда они действительно нужны для точного правила. Само правило можно ввести в поиск по карте стабильности StableHTMLFinder и посмотреть, какие элементы на ней ему соответствуют. CSS-селектор, напротив, можно скопировать и проверить в DevTools.

Связанные элементы

У цели и предков можно добавить непосредственного родителя или просто предка. У цели можно добавить дочерний элемент, потомка или сиблинга; у сиблингов также могут быть потомки. Для сиблинга расстояние можно учитывать при необходимости. Для связанного элемента доступен переключатель «Допускается отсутствие».

Порядковый номер среди сиблингов — это место элемента среди детей одного родителя. Порядковый номер в результатах правила — это место среди всех элементов, которые уже нашло полностью сформированное правило. Это разные условия.

Предпросмотр и проверка

В блоке «Предпросмотр правила» прочитайте словесное описание: оно помогает заметить случайно включённый атрибут, текст или связь. Затем проверьте количество совпадений на текущей странице и после обновления страницы.

Пример настройки правила для нескольких элементов

  1. Включите «Порядковый номер среди сиблингов» и укажите позиции нужных элементов: в примере это 2, 3 и 5.
  2. Оставьте точное сравнение имени атрибута class.
  3. Удалите из значения класса ненадёжную часть и замените условие «значение: точно» на «значение: содержит».
  4. Отключите «Количество классов», если это число не является существенным признаком и может измениться.
  5. Прочитайте словесное описание в блоке «Предпросмотр правила» и проверьте, все ли условия нужны.
  6. Закройте DevTools на целевой странице и нажмите «Проверить после обновления». С открытыми инструментами разработчика сайт иногда загружает другой контент.
  7. Убедитесь, что после обновления количество найденных элементов не изменилось. Это указывает на устойчивость правила.
  8. Нажмите «Создать правило».

Когда переходить к другому способу

Начните с CSS-селектора из DevTools, если нужен быстрый результат. Быстрое правило из HTML подходит, когда признаки элемента выглядят устойчивыми, но вы хотите самостоятельно выбрать атрибуты. Если признаки нестабильны, выглядят случайными или на странице много похожих блоков, переходите к StableHTMLFinder или конструктору.

Конспект по CSS-селекторам В начало

Что такое селекторы?

Селекторы — это способ найти нужный элемент на веб-странице по его свойствам: тегу, классу, идентификатору, атрибутам или положению в структуре HTML.

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

Эти примеры помогут читать и немного редактировать обычные CSS-селекторы.

Как проверить селектор

  1. В DevTools откройте вкладку «Элементы» / Elements.
  2. Нажмите Ctrl + F или Cmd + F на Mac.
  3. Вставьте селектор в строку поиска.
  4. DevTools подсветит все совпадения и покажет их количество, например 1 of 3.

Типы селекторов

Универсальный селектор (*)

Находит все элементы на странице. Используйте с осторожностью — он вернёт всё, что есть в HTML.

Селектор: *

Что найдёт: все элементы без исключения.

Селектор по тегу

Находит все элементы с указанным HTML-тегом.

Селекторы: h1, p, button, div

Что найдёт:

  • h1 — все заголовки первого уровня;
  • p — все абзацы;
  • button — все кнопки;
  • div — все контейнеры <div>.

Селектор по классу (.класс)

Находит все элементы с указанным классом в атрибуте class. Несколько классов записываются подряд, без пробела.

Селекторы: .card, .card__title, .card.featured

Что найдёт:

  • .card — все элементы с классом card;
  • .card__title — все элементы с классом card__title;
  • .card.featured — элементы, у которых одновременно есть классы card и featured.

Элемент может содержать и другие классы: например, class="card featured compact" тоже соответствует селектору .card.featured. Для точного совпадения всей строки классов можно использовать [class="card featured"], но такой селектор зависит от порядка классов и не допускает дополнительных классов.

Селектор по идентификатору (#id)

Находит элемент с уникальным идентификатором id. На странице должен быть только один такой элемент.

Селекторы: #salad-cat, #confused-cat, #bread-cat

Что найдёт:

  • #salad-cat — элемент с id="salad-cat";
  • #confused-cat — элемент с id="confused-cat";
  • #bread-cat — элемент с id="bread-cat".

Селектор по атрибуту ([атрибут="значение"])

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

Селекторы: [data-type], [data-type="description"], [data-type="description"][aria-label="Карточка"], [class~="card"], [class="card featured"]

Что найдёт:

  • [data-type] — элементы, у которых есть атрибут data-type с любым значением;
  • [data-type="description"] — элементы, у которых значение data-type в точности равно description;
  • [data-type="description"][aria-label="Карточка"] — элементы, у которых одновременно совпадают оба атрибута;
  • [class~="card"] — элементы, в списке классов которых есть отдельный класс card;
  • [class="card featured"] — элементы, у которых вся строка атрибута class в точности совпадает с указанной.
Способы сравнения значения
[href^="https://"]
значение начинается с https://
[src$=".png"]
значение заканчивается на .png
[class*="advert"]
значение содержит строку advert в любом месте
[class~="card"]
список слов, разделённых пробелами, содержит отдельное слово card
[lang|="ru"]
значение равно ru или начинается с ru-, например ru-RU
[aria-label*="реклама" i]
значение содержит слово «реклама» без учёта регистра

Селектор проверяет только перечисленные в нём атрибуты и не запрещает остальные. Например, [data-type="description"][aria-label="Карточка"] найдёт элемент <div data-type="description" aria-label="Карточка" title="Подробнее">: дополнительный атрибут title не мешает совпадению. Обычный CSS-селектор не умеет потребовать, чтобы у элемента не было никаких других атрибутов.

Комбинированные селекторы

Тег, класс, идентификатор и условия по атрибутам можно объединять без пробелов, чтобы все признаки относились к одному элементу.

Селекторы: h2.card__title, div.card.featured, div[data-type="description"], article.card[data-type="advertisement"][aria-label="Реклама"]

Что найдёт:

  • h2.card__title — <h2> с классом card__title;
  • div.card.featured — <div> с классами card и featured, при этом другие классы разрешены;
  • div[data-type="description"] — <div> с указанным атрибутом, при этом другие атрибуты разрешены;
  • article.card[data-type="advertisement"][aria-label="Реклама"] — <article> с классом card, у которого значения атрибутов в точности равны data-type="advertisement" и aria-label="Реклама".

Селектор потомка (пробел)

Находит элементы, которые находятся внутри другого элемента на любом уровне вложенности.

Селектор: .card .btn

Что найдёт: все элементы с классом btn, которые находятся внутри элемента с классом card.

Селектор дочернего элемента (>)

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

Селектор: .card__body > .card__title

Что найдёт: элементы с классом card__title, которые являются прямыми детьми элемента с классом card__body.

Селектор соседнего элемента (+)

Находит элемент, который является следующим соседним для другого элемента на том же уровне вложенности.

Селектор: #confused-cat + .card__description

Что найдёт: абзац <p>, который идёт сразу за элементом с id="confused-cat".

Псевдокласс для выбора по позиции

Позволяет выбирать элементы по их положению среди «братьев и сестёр».

Селектор: .card__actions :nth-child(2)

Что найдёт: второй дочерний элемент внутри элемента с классом card__actions.

У обычных CSS-селекторов есть ограничения. Они не умеют описывать количество атрибутов или классов без их перечисления, собственный текст элемента, произвольный текст внутри него, регулярные выражения и шаблоны имён атрибутов. Например, запись [data-*] не является стандартным CSS-селектором. Для таких случаев используются правила BlockIt — расширение стандартного синтаксиса CSS-селекторов, в котором доступны конструкции [data-*], :attr-name(/^data-/) и другие дополнительные условия. Ознакомиться с документацией по синтаксису BlockIt.

Что такое iframe и Shadow DOM В начало

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

Как iframe выглядит в HTML
<main>
  <h1>Основная страница</h1>
  <iframe src="advertisement.html"></iframe>
</main>

Разметка из advertisement.html загружается как отдельный документ внутри <iframe>.

Shadow DOM — это изолированное внутреннее дерево компонента. Сайт использует его, чтобы отделить разметку компонента от остальной страницы; закрытый теневой корень дополнительно скрывает это дерево от обычного кода страницы.

Как Shadow DOM выглядит в DevTools
<video-player>
  #shadow-root (open)
    <button class="play">Воспроизвести</button>
</video-player>

Кнопка находится внутри теневого корня компонента <video-player>, а не в обычном дереве основной страницы.

Для блокировщиков это создаёт границы поиска: правило нужно выполнять не только в основном документе, но и внутри каждого доступного iframe и теневого корня. Не все блокировщики это делают. BlockIt применяет CSS-селекторы и расширенные правила внутри iframe и Shadow DOM, однако XPath работает только в документах: через границу Shadow DOM он не проходит.

Управление правилами В начало

Созданные правила отображаются в списке для текущего сайта и в списке правил без привязки к домену. Для правил из конструктора доступны редактирование и удаление; отключённые правила остаются в списке с соответствующей пометкой.

Отключение и удаление

Как отключить правило?

Найдите правило в списке «Активные правила» и нажмите «Отключить». Правило останется на прежнем месте с пометкой «Отключено», но больше не будет применяться. Если правило уже скрыло элемент на открытой странице, обновите эту страницу, чтобы восстановить её исходное содержимое.

Как удалить правило?

Найдите правило в списке «Активные правила» и нажмите «Удалить». Чтобы восстановить скрытый элемент на открытой странице, перезагрузите её с помощью F5 или кнопки обновления вкладки.

Экспорт и импорт

Экспорт сохраняет правила в файл, а импорт добавляет правила из такого файла или заменяет ими текущий список. Эта функция нужна для переноса настроек и обмена ими между устройствами.

Проверка правил

Откройте страницу, на которой хотите проверить правила, затем откройте BlockIt. В заголовке группы «Для этого сайта: <домен>» нажмите кнопку «Проверить правила».

Проверка показывает, находят ли сохранённые правила элементы на открытой странице. Можно выполнить одно измерение или включить «Проверить стабильность» и выбрать несколько перезагрузок. Во время измерений BlockIt временно не применяет правила, перезагружает страницу и показывает количество совпадений для каждого правила при каждой загрузке.

Проверка запускается для правил текущего базового домена и правил без привязки к домену. BlockIt не разделяет субдомены при сохранении обычной привязки: например, правило, созданное на e.mail.ru, сохраняется для mail.ru. При этом проверяются элементы именно на той странице, с которой вы открыли диагностику. Поэтому исправное правило для одного субдомена или раздела сайта может получить статус «Не сработало» на другом субдомене либо по другому адресу. Для достоверного результата откройте страницу, для которой создавалось правило, и запустите проверку оттуда.

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

Решение проблем В начало

Вместе с рекламой заблокировалось что-то лишнее

Это происходит, когда выбранный селектор оказался слишком «широким» и находит не только рекламный блок, но и другие элементы на странице.

Что делать:

  • Удалите созданное правило, как описано в разделе «Управление правилами».
  • Выберите более точный элемент: поднимитесь или опуститесь по дереву HTML, чтобы найти контейнер, который содержит только рекламный блок.
  • Проверьте количество найденных элементов перед добавлением правила. Несколько совпадений допустимы только тогда, когда каждый найденный элемент нужно заблокировать.
Созданное правило не сработало
  • Возможная причина №1. Выбран не самый внешний элемент: Попробуйте подняться по дереву HTML выше и скопировать селектор для родительского контейнера.
  • Возможная причина №2. Сайт использует динамические классы (обфускацию): Скопированный селектор может перестать работать после обновления. В разделе «Способы создания правила» отметьте нестабильность признаков и воспользуйтесь предложенным способом — например, StableHTMLFinder или конструктором.
  • Возможная причина №3. Страница изменила структуру после создания правила: Проверьте актуальный HTML элемента и счётчик совпадений. Если сайт перестроил блок, заново скопируйте селектор или уточните правило в конструкторе.
  • Возможная причина №4. Правило создано для другого домена: Проверьте, что правило находится в группе «Для этого сайта» или «Для остальных сайтов».
Селектор не находит ни одного элемента
  • Проверьте ваш селектор: Откройте DevTools (F12) и перейдите на вкладку «Элементы» / «Elements». Нажмите Ctrl + F (или Cmd + F на Mac), введите ваш селектор в строку поиска. Если строка поиска не находит ни одного элемента, значит, ваш селектор неверен.
После удаления элемента вёрстка «поехала» и выглядит хуже, чем с рекламой
  • Решение: Удалите созданное правило и создайте его заново, но выберите режим «Скрыть». Это позволит сохранить место на странице и не нарушить вёрстку.
Селектор находит слишком много элементов

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

Не получается разобраться в структуре HTML-страницы

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

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

Ничего не помогает

Попробуйте объединить найденные в StableHTMLFinder устойчивые признаки с возможностями конструктора BlockIt. Так можно вручную собрать правило, которое учитывает не только сам элемент, но и его окружение.

Или попробуйте расширение uBlock Origin Lite.

Если проблема возникла именно при работе BlockIt — например, его правило не срабатывает или расширение выдаёт ошибку, сообщите об этом через форму «Обратная связь». Укажите адрес страницы, приложите правило и, если возможно, скриншоты — это поможет разобраться.