2

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

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

Вот пример такой страницы. Обратите внимание на случайный id .

http://www.thelocal.fr/20170219/france-denounces-cyberattacks-blamed-on-moscow

Чтобы быть ясным, в данный момент я не очень обеспокоен этими объявлениями на этом конкретном веб-сайте, потому что они четко обозначены и выделены, поэтому их легко пропустить при просмотре страницы. Но в прошлом этот сайт не обозначал их, и было трудно отличить "спонсируемые" статьи от обычных. Именно это побудило меня попытаться заблокировать их. Если я хочу сделать это снова в будущем, я хотел бы знать, как.

1 ответ1

1

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

document.querySelectorAll("...")

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

div[style="background: ..."]

Иногда эти элементы появляются в фиксированной точке дерева DOM, как в этом случае. Иногда сложно разобраться, но здесь очень просто, потому что перед ними всегда есть еще одно (уже заблокированное) объявление:

div.ad_container + div[id*=-widget]

Может быть, это последний элемент:

div:last-child

Вы можете прочитать больше о CSS-селекторах в Mozilla Developer Network.

Однако, если все сделано правильно, вы ничего не сможете сделать без сценария. Я уже видел сценарии, которые создавали бы тег со случайным именем (например, <uaUZGI>) в произвольном месте в дереве DOM, которое затем каким-то образом было бы отображено в нужном месте на экране.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .