Приложения типа AdBlock для браузера крайне популярно, потому что мало кто любит видеть рекламные баннеры на посещаемых сайтах. Владельцы сайтов не любят, когда важный источник их дохода блокируют. Это приводит к бесконечной «гонке вооружений». В результате некоторую рекламу не удаётся удалить просто кликнув по ней. В этой статье мы разберёмся, как обхитрить хитрецов и заблокировать назойливые баннеры при помощи собственных фильтров.
В первую очередь нужно найти тот самый назойливый баннер, который не хочет блокироваться обычным методом. Приведу пример на сайте Auto.ru, где меня сильно раздражали баннеры, вклинивающиеся между объявлениями.
Идеальный случай: вы нажимаете правой кнопкой мыши на странице, выбираете пункт «Заблокировать объявление», объявление скрывается.
Реальный случай: вы нажимаете правой кнопкой мыши, выбираете пункт, но ничего не происходит. В таком случае вам нужно в раскрывающемся меню выбрать не пункт «Заблокировать рекламу», а пункт «Посмотреть код». Справа откроется страшный блок исходного кода страницы, но не стоит его пугаться, при взаимодействии с этим блоком вы ничего не сломаете. К тому же вам потребуется только его прочитать.
Осмотритесь, наведите курсор мышки на разные строчки, присмотритесь, какой блок подсвечивается при наведении. Вам нужен самый крупный блок. Иными словами, при отведении курсора от этого блока, подсветка вокруг него должна пропадать. Попробуйте навести курсор на блоки выше и ниже, посмотрите, как меняется картина на странице.
Найдите класс, ID рекламного блока или любые закономерности. Например, ниже можно найти реальный пример кода рекламного блока. Обратите внимание на слова между треугольных скобок: «<bla-bla-bla> <div></div> </bla-bla-bla>». Может показаться, что они не имеют смысла, но нужно присмотреться внимательнее и выявить логику:
<vertisads-c1-promo class="ym-hide-content opaa9hv4xoAdC1Promo_1 VertisAds VertisAds_desktop VertisAds_place_c1-promo"> <vertisads-rtb class="VertisAds__rtb VertisAds__index_0 VertisAds__rtb_hidden_yes" id="tyaaag2k41"> <div></div> </vertisads-rtb> <vertisads-rtb class="VertisAds__rtb VertisAds__index_1" id="kp9beggwtr"> <div></div> </vertisads-rtb> <vertisads-adfox class="VertisAds__adfox VertisAds__index_2 VertisAds__adfox_hidden_yes"> </vertisads-adfox> </vertisads-c1-promo>
Мы видим, что в примере выше есть следующие закономерности:
Это и есть первые подозреваемые в нашем детективном деле. Теперь нам нужно, чтобы AdBlock опознал подозреваемых.
Шаг 2: заблокировать рекламу
Перейдите в параметры блокиратора рекламы. Нажмите право кнопкой на его иконку, выберите пункт «Параметры», слева выберите пункт «Настроить», затем нажмите кнопку «Настройка», чтобы разблокировать поле для ввода собственных фильтров.
В разблокированном поле введите свой фильтр в формате site.ru#*(class=*VertisAds). Так мы добьёмся скрытия всех блоков, в коде которых есть class, равняющийся VertisAds или чему-то подобному. Под чем-то подобным в данном случае подразумевается всё, что заканчивается на VertisAds, об этом свидетельствует звёздочка после знака равно.
Но что делать, если блок с class=VertisAds располагается не в элементе VertisAds, а в любом другом, например, так: <div class=VertisAds></div>? В таком случае будет полезно сказать блокировщику рекламы распознавать его во всех местах следующим образом: site.ru##.VertisAds. Здесь мы сообщаем, что в принципе любой элемент, который содержит «VertisAds» должен блокироваться на указанном сайте.
Таким образом мы помогли блокиратору опознать первого подозреваемого, когда в каждой строчке есть class="случайный-набор-символов VertisAds".
Чтобы помочь опознать второго подозреваемого нам потребуется более продвинутый синтаксис: site.ru#?#:-abp-has(vertisads). Данный синтаксис означает, что, если в строке содержится «vertisads» в любом виде, элемент будет заблокирован. Во многом эффект от такой формулировки тот же, что и site.ru##.VertisAds, но формулировка более точная, позволяет также заблокировать подчинённые элементы. Например, если внутри блока «vertisads» есть рекламная ссылка, которую необходимо заблокировать, но сам блок хочется оставить, можно построить конструкцию site.ru#?#:-abp-has(%3E div > a. advertiser). Так мы выберем элементы, содержащие подчинённый блок <div>, внутри которого есть ссылка <a> с классом advertiser.
Данная статья создана для привлечения внимания к расширенным фильтрам AdBlock и совсем не является исчерпывающей. Узнать больше о фильтрации контента можно на страницах официальной документации AdBlock Plus.
Если вы не хотите изучать документацию и вам не нравится детективная работа, это нормально, в таком случае вы можете использовать уже готовые фильтры, любезно составленные сообществом. Не рекомендуется переносить фильтры целиком, список работает корректно только в uBlock Origin, вместо этого перенесите фильтры только для сайтов, которые вы посещаете чаще всего и посмотрите, не сообщит ли приложение об ошибках синтаксиса.
Безусловно, зачастую блокировка рекламы является жизненной необходимостью, способом оградить себя от цифрового шума. Но часто реклама является средством поддержки сайтов и авторов. Если вам понравилась статья и вы хотите отблагодарить автора, вы можете временно отключить блокировщик рекламы и обновить страницу.