[recovery mode] Обход блокировок adblock, и блокировка обхода блокировки

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

bc6ae7b7f73c4f8cb4c665823626aa92.png

Как-то раз на одном сайте администрация вежливо попросила пользователей добавить сайт в исключения адблока. Я, как сознательный пользователь, это сделал – но появившаяся реклама через какое-то время стала совсем не похожа на допустимую рекламу, и я включил адблок снова. К моему удивлению, реклама не исчезла – и я стал разбираться, в чём тут дело.

1. Обход adblock со стороны разработчиков:


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

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

2. Блокировка рекламы пользователем, в обход обхода adblock:


Пришлось создать правило, исключающее вложенные полезные элементы. В описании создания фильтров для adblock нигде про это не рассказывается, поэтому незнакомые с CSS люди вряд ли смогут это сделать. Может, моя статья им в этом поможет.

Для вложенных элементов в adblock используется следующая конструкция:
div.внешний_класс > div.внутренний_класс

Для исключения элементов по какому-то атрибуту используется конструкция not:
div:not(.полезный_класс)

Таким образом, искомое правило выглядит так:
имя_сайта##div.sidebar_right > div:not(.block)
Это позволяет заблокировать все вложенные в sidebar_right элементы, за исключением тех, которые имеют класс block. Задача была решена – что дальше?

3. Обход такой хитрой блокировки со стороны разработчиков:


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

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

© Geektimes