Почему Ublock Origin не блокирует элемент с динамическим ID

    При ручной блокировке в uBlock Origin пользователи часто сталкиваются с ситуацией, когда выбранный элемент исчезает сразу после применения фильтра, но после перезагрузки страницы снова появляется. Это происходит из-за того, что атрибут id элемента генерируется динамически и меняется при каждом обновлении. В результате фильтр, основанный на старом ID, перестаёт работать.

    Как работает динамический ID в рекламных блоках

    Современные рекламные сети и скрипты часто используют случайные или хешированные значения для атрибута id (например, m3faa8ffa9da33fcbe1d7de40a0fa8181). Это делается намеренно, чтобы затруднить автоматическое блокирование стандартными фильтрами. При каждой загрузке страницы генерируется новый уникальный идентификатор, и ранее созданное правило перестаёт совпадать.

    Как правильно блокировать элементы с изменяющимся ID

    Чтобы блокировка работала постоянно, не используйте в правиле динамический id. Вместо этого применяйте другие атрибуты или структуру элемента. Рассмотрим несколько надёжных способов:

    1. Блокировка по атрибуту src или href

    Если элемент содержит ссылку на рекламное изображение, можно заблокировать его по адресу. В вашем примере в теге <a> есть атрибут href с закодированной ссылкой /help/JTJGcGF5bWVudHMlMkY=/. Создайте правило в uBlock Origin:

    example.com##a[href*="/help/JTJGcGF5bWVudHMlMkY=/"]

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

    2. Блокировка по размеру или стилю

    Баннеры часто имеют фиксированные размеры. В вашем примере указаны height: 250px и width: 680px. Можно использовать фильтр по стилю:

    example.com##div[style*="height: 250px"][style*="width: 680px"]

    Однако будьте осторожны: если на странице есть другие элементы с такими же размерами, они тоже будут скрыты.

    3. Блокировка по вложенной структуре

    Если рекламный блок имеет уникальную структуру (например, div > a > img), можно задать правило по вложенности. В uBlock Origin это делается через комбинацию селекторов:

    example.com##div > a > img[src*="reklama.jpg"]

    Такой подход точечно находит элемент по цепочке тегов и значению src.

    Использование расширенных возможностей uBlock Origin

    Если стандартные CSS-селекторы не помогают, попробуйте процедурные фильтры (procedural filters). Они позволяют применять более сложные условия, например, поиск по тексту ссылки или атрибуту alt. В вашем случае можно использовать фильтр:

    example.com##div:has(a[href*="/help/JTJGcGF5bWVudHMlMkY=/"])

    Этот фильтр найдёт любой div, внутри которого есть ссылка с нужным адресом, и скроет родительский контейнер.

    Проверка и тестирование правил

    После добавления нового фильтра обязательно перезагрузите страницу и убедитесь, что элемент не появился. Если блокировка не сработала, откройте лог uBlock Origin (значок щита > шестерёнка > вкладка «Мои фильтры») и проверьте, применяется ли ваше правило. При необходимости скорректируйте селектор, используя инструменты разработчика браузера (F12).

    Заключение

    Динамический id - распространённый приём для обхода блокировщиков рекламы. Чтобы uBlock Origin надёжно скрывал такие элементы, откажитесь от привязки к ID и используйте стабильные атрибуты: ссылки, пути к изображениям, размеры или вложенность тегов. Правильно составленный фильтр будет работать даже после обновления страницы.

    Часто задаваемые вопросы