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



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

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-мастеров: можно просто добавлять ненавязчивую рекламу, тогда пользователи намного лояльнее начнут относиться к ней.

Комментарии (109)


  1. Flash_X
    06.11.2015 19:32
    +5

    var ad = document.querySelector(`body > div:nth-child(2) > div:nth-child(6) > div:nth-child(3)`);
    ad.parentNode.removeChild(ad);
    


    1. caveeagle
      06.11.2015 19:42
      +1

      Да, спасибо за подсказку, хороший вариант!

      Хотя, тоже обходится «на раз» модификацией движка — добавлением случайного числа промежуточных элементов. Причем, похоже, скоро массово появятся всякие такие плагины для сайтов — по обходу адблока и других резателей рекламы.


      1. Flash_X
        06.11.2015 19:59

        во первых это, с большой вероятностью сломает вёрстку. во вторых, что-то вроде этого:

        Array.prototype.slice.call(document.querySelectorAll('div')).forEach((e)=> e.childNodes.length?0:e.parentNode.removeChild(e));
        // snippet #1
        


        1. caveeagle
          06.11.2015 20:05

          Обходится ненулевым содержимым, например невидимым пикселем. Для вёрстки — div высотой пару пикселей.

          И да: адблок, которым пользуются большинство, на такое не способен (насколько я знаю)


          1. Flash_X
            06.11.2015 21:07

            если будет не нулевое содержимое, то это содержимое нужно будет как то скрывать, а значит либо появится признак у промежуточных элементов (например стиль display:none), либо будет общее для всех них правило. в любом случае это тупиковый вариант.


            1. caveeagle
              06.11.2015 21:18

              Да, но этот признак скроет «фальшивые» элементы. А как быть с самой рекламой? Конечно, можно написать скрипт: сначала скрыть фальшивые элементы, а потом скрыть элементы по их номеру. Но увы, адблок этого не умеет.

              Да и написание столь сложных правил — подходит для гиков, каждый день заходящих на один и тот же сайт, и разбирающихся в CSS. А если когда таких сайтов станет много? =)


              1. dtestyk
                06.11.2015 21:26
                +2

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


                1. NetBUG
                  07.11.2015 02:33

                  Опять появятся кнопки прекращения выполнения скриптов.
                  Для экономии батарей устройств, в том числе.


                1. Mad__Max
                  07.11.2015 04:00
                  +1

                  А потом посетитель сайта сильно удивляется (и справедливо злится) почему это загрузка всего 1й простой странички съедает несколько Мб интернет трафика, занимает несколько сотен Мб оперативной памяти браузером и грузит половину ядра процессора, хотя вроде ничего на ней даже не делаешь.

                  Хотя скорее всего к этому и идем…


                  1. dtestyk
                    07.11.2015 09:08

                    Врядли, подобные проверки требуют интернет трафика, много оперативной памяти. А маленькая задача, запускаемая по таймеру практически не заметна для современных, в том числе и мобильных процессоров.
                    Другое дело: невмеру продвинутый дизайн, непрактичная тяга к универсализации инструмента и cryptoUI: хитроумные полиморные вставки в DOM, переусложненные стили…

                    Хотя скорее всего к этому и идем…
                    Скорее, к этому идут сайты, а не пользователи:
                    многие интересные сайты — минималистичны: pinterest.com, agar.io, editpad.org, develop.re, craigslist.org, bash.im, arxiv.org, echojs.com, nplus1.ru, gostash.it, neurowareblog.blogspot.com


                    1. vrmzar
                      07.11.2015 16:32

                      Многие «интересные» сайты уже привели к тому, что пользователи вынужденны размещать текст и посты преимущественно текстового содержания в виде картинок.


  1. Nicknnn
    06.11.2015 20:02
    +3

    Вот примерно так можно убрать эти страшные лица в тонере справа.
    для ublock
    habrahabr.ru###layout > .inner > .column-wrapper:nth-of-type(2) > .sidebar_right > * > a


    1. withkittens
      07.11.2015 17:11
      +2

      Вот не совру: бувально пару дней назад у этих страшных лиц ещё были нормальные id:

      habrahabr.ru##DIV[class="daily_best_posts"]
      habrahabr.ru##A[id="print_tab"]
      


    1. withkittens
      07.11.2015 17:15
      +3

      На текущий момент вроде бы решилось вот так:

      habrahabr.ru##div.sidebar_right > div:not(.block)
      


      1. mtp
        08.11.2015 03:43

        А не проще там ссылку на bit.ly детектировать?


        1. xRay
          09.11.2015 16:13

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

          Я пока так правило составил

          ###layout > .inner > .column-wrapper:nth-of-type(2) > .sidebar_right > * > a[rel="noreferrer"]
          ###layout > .inner > .column-wrapper:nth-of-type(2) > .sidebar_right > * > a[rel="noreferrer"]> img


        1. withkittens
          09.11.2015 18:01

          У этих блоков не один «рекламный» признак, выбирайте любой.


  1. olen
    06.11.2015 20:03

    Также были убраны все атрибуты, по которым можно было идентифицировать div или рекламу внутри: никаких постоянных id элементов, изображение рекламы подгружается с хостинга, на котором хранятся полезные картинки

    У рекламных баннеров все же есть существенное отличие от «полезных картинок»: по ним можно кликнуть (присутствует тэг «a»).


    1. caveeagle
      06.11.2015 20:07

      Увы, там не картинки — а ссылки на разделы сайта и популярные посты, не хочется их терять.


      1. olen
        06.11.2015 20:16
        +1

        a > text — полезная ссылка
        a > img — банер


    1. forgotten
      07.11.2015 08:37
      +3

      Ходят слухи, что JavaScript-ом можно обрабатывать клики по любым элементам.


      1. DenimTornado
        08.11.2015 21:26

        Нет, сынок, это фантастика!


      1. ankh1989
        09.11.2015 00:39

        Меньше верьте всяким непроверенным слухам :)


  1. dtestyk
    06.11.2015 20:37

    Мне кажется у клиента есть преимущество, так как код исполняется на его стороне, в крайнем случае можно сделать для рекламы подходящую «песочницу» и вытаскивать только полезную информацию.


    1. caveeagle
      06.11.2015 21:00

      Мне кажется, наоборт:
      — Владелец сайта делает это один раз для своего сайта. Причем, если сайт приносит деньги от рекламы, то это можно поручить профессионалам.
      — Пользователь должен настраивать фильтры для каждого сайта, что в условиях рандомных алгоритмов будет непросто. Причем, для этого он должен либо делать это сам, и разбиратсья в css (как сейчас).

      К примеру, удаление рекламы для одного сайта до сих пор не работает в адблоке, несмотря на огромную аудиторию.


      1. dtestyk
        06.11.2015 21:15
        +5

        Тут может сработать краудсорсинг. Человек не будет искать настройки(или что там еще потребуется) для каждого сайта. Он решит задачу для одного конкретного. А затем обменяется решениями с другими.


      1. NetBUG
        07.11.2015 02:35
        +1

        AdBlock Plus — далеко не самый умный плагин для этой задачи. К примеру, в нём нельзя просто так ввести регулярное выражение для id/класса элемента, что было лет семь назад в старой Opera.


  1. CyberCore
    06.11.2015 20:57
    +9

    Нужен компромисс, я бы отключил ad block, если бы не было анимированных баннеров.


    1. foxkeys
      06.11.2015 21:08
      +6

      Да, я тоже не трогаю рекламу, пока она не моргает. Как только появляется анимация — немедленно выпиливаю нах...., эм, ну в общем, совсем выпиливаю.


    1. Ocelot
      06.11.2015 21:23
      +2

      Для лисы:

      Анимированные гифки: плагин «Toggle Animated GIFs» можно настроить так, чтобы анимация воспроизводилась только по наведению курсора или по клику.
      HTML5 video: пока не встречал в рекламе, но автоплей отключается параметром media.autoplay.enabled=false в about:config.
      Flash: отключить его нахрен, флеш давно пора похоронить. Ну или сделать включаемым по запросу и разрешить только там, где он нужен.


      1. caveeagle
        06.11.2015 21:35

        Собственно, все эти плагины у меня и стоят — Toggle и Flashblock. Просто рекламные картинки на одном сайте сами по себе стали несколько… вызывающими и отталкивающими, даже без анимации.


      1. Vilgelm
        06.11.2015 22:32
        +1

        Вот (впрочем, любой почти ucoz сайт) пример HTML5 видео в рекламе, еще и в виде попапа, который можно только через 30 секунд закрыть. Пока такое практикуется, AdBlock отключать нет смысла.
        А вот AdSence или Директ даже полезным бывает иногда, эти сети блокировать как-то не тянет.


      1. NetBUG
        07.11.2015 02:36

        В Facebook бы выпилить это видео.


      1. amarao
        08.11.2015 17:13

        rbc в мобильной версии использует html5 видео с автозапуском. Мне кажется, они некую грань перешли уже.


      1. sashabeep
        09.11.2015 10:40
        +2

        Хоронили флеш — порвали три стандарта. Добро пожаловать в мир Canvas и всего такого, что вообще ничем не задетектишь
        Часть баннеров вообще теперь делаю просто с помощью библиотечек слайдеров

        И, кстатида, на одной из площадок, для которой постоянно делаю баннеры, увидев, как нереально тормозит что swiffy, что createJS нашли хак, как обойти автоматическую постановку флеша на паузу в хромиуме, потому что он не тормозит, как вся эта модная красота. Такие вот вести с полей.


  1. caveeagle
    06.11.2015 20:59

    del


  1. dtestyk
    06.11.2015 21:07
    +3

    Тема топика затрагивает самые основы философии программирования.
    Потому что, подобное противостояние является одной из программистстских антиномий:

    • вирус — антивирус
    • анонимность — идентификация
    • seo оптимизация — поисковики
    • adBlock — реклама
    • автоматизация — captcha
    • Может кто знает еще какие?
    Еще просматривается пользовательская антиномия:
    • информационная перегрузка — пузырь фильтров
    Все они, в свою очередь, представители «дурной бесконечности» Гегеля.
    В теории игр модель подобных отношений хорошо соответствует минимаксу.


    1. caveeagle
      06.11.2015 21:21

      Ну, я о более «приземлённом» — о том, что начинается эра рекламы, которая не будет блокироваться стандартными средствами «из коробки». Будут либо «гиковские» средства с индивидуальной настройкой, требующие знания CSS, либо платные сложные решения, с постоянно меняющимися алгоритмами.


      1. dtestyk
        06.11.2015 21:33

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


        1. Ocelot
          06.11.2015 21:35
          +2

          Как раз к этому моменту подоспеют нейросети, которые будут распознавать рекламу на уже отрендеренной странице.


          1. ankh1989
            07.11.2015 06:49
            +1

            Это было бы идеальным решением: нейросеть должна распознать все вырвиглазные элементы интерфейса и выпилить их (ну или сделать статичными и черно белыми, чтобы не отвлекали). Можно, конечно, будет обмануть эту нейросеть сделав рекламу спокойной расцветки, но тогда её и блокировать незачем.


        1. caveeagle
          06.11.2015 21:36

          (с интересом) Это как? Интересно было бы услышать ответ — я не очень представляю себе такое.


          1. KivApple
            06.11.2015 21:42
            +2

            Думаю речь идёт о рекламных статьях, которые с точки зрения оформления никак не отличаются от полезного контента.


            1. arkandos
              06.11.2015 21:54
              +4

              Собственно, под этот критерий подходит немалая часть статей на ГТ.


            1. Mad__Max
              07.11.2015 04:05

              Их уже полно, есть даже устоявшиеся профессии по их написанию и рекламые сети специализирующиеся на обмене такими всевдо-полезными статьями (вы размещаете у себя наши N статей, мы — ваши) как в свое баннерообменные сети.

              Хотя на общем фоне (баннеров и рекламных ссылок и контекстной) пока меньшую часть и пока основной акцент на индексацию и позиции в поисковах, а обход рекламорезок вторичен.


      1. Goodkat
        06.11.2015 23:08
        +1

        Рекламу можно вставлять между абзацами полезного текста, между комментариями и т.п., вёрстку и css-классы генерировать уникальные для каждого просмотра, контент загружать программно уже после отображения рекламы, зашифрованным и распаковывать уже на клиенте с проверкой контрольных сумм получившегося дерева DOM — блокировщики типа AdBlock против такого пока бессильны. В Германии, кстати, одно популярное издательство так и делает — блокирует доступ к контенту, если установлен блокировщик рекламы; недавно отчитались о падении доли пользователей с блокировщиками и росте доходов от рекламы, а блокировщику рекламы через суд запретили блокировать блокировку блокировщиков :)

        Думаю, будущее рекламщиков как раз за такими методами, а будущее блокировщиков — OCR+Crowdsourcing.

        Парсер не дал вставить ссылки.
        Запрет через суд: http://m.heise.de/newsticker/meldung/Axel-Springer-Einstweilige-Verfuegung-gegen-Adblock-Plus-2854649.html


        1. dtestyk
          07.11.2015 00:11
          +1

          блокировщику рекламы через суд запретили блокировать блокировку блокировщиков :)
          То есть запретили Б3Р. Есть книга «Конфликтующие структуры», там вводится алгебра для подобной рекурсии.
          Возможно, должен быть какой-то международный запрет на принятие подобных запретов: «право на бесконечную рекурсию».


      1. Alexey2005
        07.11.2015 21:24
        +2

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


  1. Greedz
    06.11.2015 21:11

    Как-то раз на одном сайте

    А можно ссылку на этот сайт?


    1. caveeagle
      06.11.2015 21:22

      Теги к посту Вам в помощь =)


      1. Greedz
        07.11.2015 00:24

        Ах вот оно, что! Я то и не замечал, наши это быстро пофиксили.


      1. Vendict
        07.11.2015 15:36

        Не охота начинать ещё одну ветку. В тему сайтов, только у меня общая их лента не работает без отключения сабжа?


  1. Lertmind
    06.11.2015 21:23

    Я наверно что-то не понял, но чем не устраивает блокировка картинок через AdBlock? Около 7 штук заблокировал и больше не вижу рекламы с включённым AdBlock.


    1. arkandos
      06.11.2015 21:28

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


      1. Lertmind
        06.11.2015 21:44

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


        1. arkandos
          06.11.2015 21:48

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


    1. caveeagle
      06.11.2015 21:28

      Блокирование конкретной картинки по URL? Не устраивает, что завтра появится восьмая картинка — рекламодатели меняются. Кроме того, скоро такой подход возьмут себе и другие сайты — картинок будет сильно много.


  1. KivApple
    06.11.2015 21:39

    У меня была такая идея, но в благих целях. Если генерировать подобным образом (случайные id + в коде элементы находятся не в том порядке, в котором их разместит CSS) элементы формы, то можно, наверное, отсечь без всяких каптч большинство спамеров, а пользователь ничего и не заметит. Конечно, сломается автокомплит, но он нужен не везде.


    1. caveeagle
      06.11.2015 21:46

      (задумался над реализацией) Вы отсылаете на сервер данные формы, причем поля формы имеют случайное имя. Сервер должен при этом знать, какое именно имя соответсвует нужному полю. Значит, на сервере надо хранить соответствие — а хранение на сервере таких вещей замедляет быстродействие, и вообще не очень оптимально. Правда, можно эти данные шифровать внутри самой формы, ключом с сервера… В общем, да — интересное решение!
      Спасибо, возьму на заметку.


      1. kloppspb
        06.11.2015 22:46

        В самом простом случае поля формы могут генерироваться по определённым правилам, например, в зависимости от UserAgent, IP посетителя, текущей даты (не перескочить через полночь...) etc Соответственно, обработчик формы их легко восстановит (например, email будет лежать в поле с именем md5( «email» + HTTP_USER_AGENT). Ну или что-то в этом роде.


        1. Goodkat
          07.11.2015 00:31

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


          1. kloppspb
            07.11.2015 00:37

            >в сессии обычно и так много чего хранится

            В какой такой сессии?


    1. dtestyk
      06.11.2015 22:09

      не в том порядке, в котором их разместит CSS
      А document.elementFromPoint(x, y) это обманет?


      1. KivApple
        08.11.2015 17:09

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


  1. qw1
    06.11.2015 22:02
    +2

    На одном сайте была реклама партнёров, картинки грузились с полезного сайта, div было сложно идентифицировать, но была уязвимость — ссылка вела к партнёрам. По этому признаку и заблокировал

    ##a[href^="http://some.domain/delivery/ck.php?"]


    1. evocatus
      06.11.2015 23:58

      Можно пойти дальше: если картинка-ссылка ведёт на другой домен, уже можно блокировать.


      1. qw1
        07.11.2015 00:35

        Может быть много ложных срабатываний, например на трекерах превьюшки скриншотов ведут на хостинг картинок, таблички рейтинга кинопоиска — на страницу фильма.

        Но идея интересная, блокировать не список источников картинки для банера, а список таргетов, куда ведёт ссылка из картинки. Если домен в чёрном списке, например googleadservices.com, картинку скрывать.


      1. Ocelot
        07.11.2015 00:55
        +1

        Сделают ссылки на свой домен, откуда уже идет редирект на домен рекламодателя.


        1. qw1
          07.11.2015 12:55

          del (не в ту ветку)


      1. Iv38
        07.11.2015 05:07

        Это может быть до 100% картинок на популярных сайтах. Например на этом сайте картинки к статьям на каком домене хранятся? Картинкохостинги, CDN, хотлинкинг, всё в бан? Или я не понял идею?


        1. evocatus
          07.11.2015 12:15
          +1

          Ну так это просто картинки, не ссылки.

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

          Если хотят вставить рекламу, это другой случай. Обычно прямых ссылок на картинку нет, потому что она каждый раз разная и загружается с стороннего хостинга. Также используются iframe, анимация и пр. Часто элемент с рекламой содержит немало JS. И HTML-структура обычно на порядок сложнее, чем у просто картинки, вставленной для дела, а не для рекламы. Редиректы — обычное дело.

          Так вот — это 2 настолько отличающихся паттерна поведения, что их можно отловить, как мне кажется.


  1. v0rtex
    06.11.2015 22:11
    +1

    Немного оффтопа:
    Как залочить рекламу в стоковом приложении YouTube на Android?
    Adblock Plus не блокирует :(
    А они уже внутри ролика вставлять начали.


    1. Vilgelm
      06.11.2015 22:36

      AdFree отлично помогает.
      А у кого-нибудь получалось смотреть видео на RuTube и подобных сайтах с включенным AdBlock в нормальном качестве? AntiAdBlock не спасает.


      1. Iv38
        07.11.2015 05:14

        Я давно пытаюсь побороть рекламу на ютубе, но сейчас после установки этой штуки по ссылке произошло нечто, хм, подозрительное.
        Начнем с положительного. Рекламы на ютубе я действительно пока не видел. Но через час после установки этого apk, конечно требующего рута, у меня угнали много лет не используемый AppleID, который привязан к тому же адресу электронной почты, что и гугл-аккаунт на планшете. Улики косвенные, но будьте осторожны.


        1. Vilgelm
          07.11.2015 13:26

          Скорее совпадение или устанавливали откуда-то не оттуда. Пользуюсь уже очень давно, еще со времен первого Galaxy, когда никаких других способов избавиться от рекламы кроме AdFree не было. При этом на телефона всегда установлен Webmoney, QIWI, клиент ИБ и так далее. Так вот, за все время использования ни одного «угона» не было.
          Кстати, AdFree блокирует рекламу во всех приложениях и в браузере за одно. Работает просто: добавляет в hosts записи типа 127.0.0.1 adsite.com


    1. ivan386
      07.11.2015 00:05

      Я его просто отключил и смотрю в мобильном хроме без рекламмы.


    1. Greedz
      07.11.2015 00:30

      Радикальный метод: Xposed + Youtube Adaway
      Вообще забыл о рекламе в Youtube приложении.


    1. xirahai
      07.11.2015 19:00

      Вручную заменил hosts на двухметровой длины, еще установлена adaway (обычная). В Хроме на ютубе не наблюдаю рекламы.


  1. Stiver
    06.11.2015 22:34

    Что-то не соображу, а обычный RequestPolicy не поможет? Очень небольшое количество сайтов загружает рекламу со своего хостинга, т.к. это дает возможность накруток (рекламодатели, соответственно, против). На хабре RequestPolicy режет все, кроме рекламных ссылок в верхней строке, ну так они и не мешают.


    1. qw1
      06.11.2015 23:49

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


  1. SpiritOfVox
    07.11.2015 00:35
    +4

    Самые первые блокировщики работали с размерами изображений.


    1. caveeagle
      07.11.2015 10:49
      +1

      Поэтому в гугле первый ответ на вопрос «Как обойти adblock»: "- Измените размер изображения на пару пикселей" =)


  1. icelaba
    07.11.2015 01:19

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


    1. Ocelot
      07.11.2015 02:10

      Значит, будет адблок с эвристикой?


      1. caveeagle
        07.11.2015 02:38
        +2

        И станет платный, по подписке. И будет штат специальных людей, разрабатывающих правила для блокировки.


        1. Greedz
          07.11.2015 20:24

          Такое уже есть у конкурентов, сидят люди на зарплате и своевременно обновляют фильтры. Довольно оперативно реагируют на жалобы о пропущенной рекламе.


      1. dtestyk
        07.11.2015 02:47
        +2

        а что еще нету? парочку эвристик распознавания рекламы уже упомянули:

        следующий виток: эвристики распознавания антиблокировщика рекламы:
        • полиморфное поведение
        • обработка события DOMNodeRemoved
        • проверка style.display
        • наличие таймера


    1. caveeagle
      07.11.2015 11:01

      Тссс… не подсказывайте им, нас читают те самые люди! =)


  1. ankh1989
    07.11.2015 07:10
    +10

    Когда на одном сайте появилось вырвиглазное мигающее нечто справа, причём это нечто явно не хотело чтоб его выпиливали (рандомные атрибуты), я просто выпилил sidebar-right — на нём всё равно ничего полезного нет. Подсказка как легко сделать трудновыпиливаемую рекламу: скрипт запускает таймер на 10-20 секунд, после чего создаёт прямо в document.body элемент верхнего уровня без всяких признаков отличия и с position:fixed, картинка (красная мигающая и противная — иначе зачем так заморачиваться) идёт в background-image, а ссылка — в addEventListener(«onclick», ...). Продвинутый юзер, увидев это, будет в бешенстве (я вот со злости весь правый сайдбар выпилил), но выпилить рекламу не сможет. Ещё рекомендую попробовать пойти дальше и сделать top-level баннеры которые надо нажать прежде чем они уйдут (без крестика, конечно) и желательно со звуком (всё создавать скриптом — никакой разметки). Наконец, можно обязать юзера смотреть рекламу: на входе показывать рекламу (видео), затем требовать ответить на вопросы по поводу просмотренной рекламы и лишь затем пускать на сайт (если отвечает неправильно, то заставлять смотреть видео в два раза большей длительности).


    1. dtestyk
      07.11.2015 09:15
      +3

      требовать ответить на вопросы по поводу просмотренной рекламы и лишь затем пускать на сайт
      видео-капча :)


    1. Anisotropic
      07.11.2015 11:00
      +4

      Тоже выпилил весь правый сайтбар, достали яркие уродские морды.


    1. caveeagle
      07.11.2015 11:04

      Увы, я не был готов пожертвовать подборкой «самое популярное».

      А главное — из принципа не хочется жертвовать функциональностью сайта, если это явно не оговорено в пользовательском соглашении. Так что — решил включиться в эту бесконечную гонку блокировщиков и антиблокировщиков.


    1. esc
      07.11.2015 11:33

      Можно просто проверять то, что реклама отображена и не вырезана по таймуту и если не отображена, выпиливать все из document.body. Это не даст включить блокирующее правило в список т.к. оно будет ломать сайт.


    1. xirahai
      07.11.2015 19:50

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


  1. qrasik
    07.11.2015 10:49
    +3

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

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


    1. caveeagle
      07.11.2015 11:18

      (задумался над идеей) С одной стороны — да, выглядит перспективно. С другой — есть ряд сложностей:

      — Спамеров прорядили не просто нейросети. Их прорядили нейросети, созданные командой профессионалов, которые работали в крупных компаниях. Вспомните спам-фильтры, которые бесплатны, и работают на локальном компьютере? Они очень долго были неэффективны, да и сейчас та же ситуация, как мне кажется.
      Спам фильтруется либо крупными игроками (гмейл, мейл-ру), либо платными антиспам-решениями, за которые пользователь платит деньги.

      — В случае со спамом — он невыгоден крупным игрокам, и они готовы вложиться в борьбу с ним. В случае инет-рекламы, наоборот. Нет стороны, которая готова платить серьезные деньги для борьбы с этим явлением.

      — Кроме того, вычислительные ресурсы: мейлы можно фильтровать по нескольку секунд, даже минут. Для инет-серфинга это не пойдёт. Для примера: спам в мгновенных сообщениях на стороне клиента не фильтруется вообще, не видел таких решений.

      Так что тема интересная, но надо думать… и поисследовать инет-рекламу нейросетями — чем не тема для следующей статьи?


      1. xirahai
        07.11.2015 20:13
        +1

        Если начнется заметный отток аудитории из-за навязчивой рекламы — тогда возможно и крупные поменяют отношение. На днях бквально был свидетелем как коллега искал запчасть по разным сайтам. Открыл очередной, а там как замельтешит, да еще и с звуком. Копирует URL в буфер и быстро нажимает ctrl-w, даже не заглядывая в списки цен. Спросил зачем чс'сишь в hosts — на сайты мудаков принципиально больше раза не хожу. Выходит навечно потеряли покупателя. Подумываю может взять методу на вооружение)


        1. SpiritOfVox
          07.11.2015 20:22

          Аудитории некуда течь. Допустим периодически у Юлмарта и его конкурентов есть кликабельный фон по краям. Это отвратительно, но им норм.


  1. vp7
    07.11.2015 16:48

    Несколько лет использую на FF связку AdblockPlus (с Element Hiding Helper) + Stylish, все фильтры настраиваю вручную.
    Рекламы практически нигде нет. Даже youtube в ролики не вставляет рекламу, хотя для него настроку делал чёрт знает сколько времени назад.

    Но самое интересное — поставил на другом компьютере adblock с авто-обновляемыми фильтрами и один известный сайт (см. теги к статье) сразу же стал ненавязчиво просить отключить адблок. Такое ощущение, что он использует нечто вроде honeypot'а для проверки активности стандартных правил адблока.

    p.s. Давно жду появления сайтов, которые будут проверять факт отображения рекламы и блокировать показ содержимого сайта в случае, если рекламы нет. Вот тут бороться будет намного веселее.


    1. withkittens
      07.11.2015 17:25
      +1

      Давно жду появления сайтов, которые будут проверять факт отображения рекламы и блокировать показ содержимого сайта в случае, если рекламы нет.
      Лично мне такие уже попадались. Потребность получить содержимое была разовой, поэтому пришлось временно адблок отключить :(


      1. xirahai
        07.11.2015 20:28

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


        1. dtestyk
          07.11.2015 20:44

          Полагаю, его принятие нарушало бы принципы когнитивной свободы.


          1. Alexey2005
            07.11.2015 21:40

            Думаете, это кого-то остановит? Рекламщики уже сейчас вопят о недополученной прибыли и подают в суд на разработчиков AdBlock.
            А что им помешает объявить сайт творческим продуктом, не подлежащим изменению, и придумать какие-нибудь лицензионные соглашения — мол, заходя на этот сайт вы обязуетесь просмотреть рекламу. Не нравится реклама — не ходите на сайт. И ваша свобода не нарушается, т.к. вы сами выбираете, смотреть ресурс с рекламой или не смотреть данный ресурс вообще.
            Ещё и пропаганду врубят на полную мощность по типу правоторговцев. Мол, из-за негодяев, блокирующих рекламу, разоряется куча сайтовладельцев, которые не могут содержать свой ресурс. И честный человек просто обязан рекламу смотреть, раз он хочет и дальше ресурсом пользоваться.


            1. xirahai
              07.11.2015 23:50

              Физические объекты типа магазинов и т.д хоть и являются частной собственностью — тем не менее подчиняются правилам публичной оферты. Поэтому не имеют права препятствовать свободному входу и выходу любого посетителя и что-либо навязывать. В кибер-пространстве подобная оферта должна предоставлять как минимум аналогичные возможности в любой момент покинуть сайт (закрыть вкладку) без продолжения демонстрации нежелательного посетителю контента.
              Любой творческий продукт как музыка или видео — тоже допускают свободу в плане вкл/выкл когда угодно, регулировки громкости, яркости, и промотки при наличии тех. возможности. Поэтому адблок можно считать еще одним подобным регулятором в руках пользователя. Ведь даже при просмотре ТВ зритель не связан договором, запрещающим выключать звук или отходить от экрана на время рекламных пауз.
              И уж тем более абсурдно вменять ответственность за благоденствие или разорение владельцев сайта. Это все равно что обвинять уходящих без покупки посетителей из магазина в разорении его владельца.


            1. dtestyk
              08.11.2015 04:48

              заходя на этот сайт вы обязуетесь просмотреть рекламу
              Можно поставить расширение, блокирующее все упоминания и ссылки на подобные сайты, как malware:
              «несанкционированными» будут считаться действия программы, не одобренные явным образом пользователем этой программы
              Если такой сайт и будет существовать, пользователь о нем не узнает.

              Как крайний вариант — настраиваемое устройство, бьющее пользователя током, каждый раз, когда он обращает внимание на рекламу :)


  1. kopch
    07.11.2015 17:30

    Надо добавить в addblock функцию отключения только анимированной рекламы.


  1. resetnow
    07.11.2015 17:36

    Яндекс.почта доставляет рекламу в том же HTTP-запросе, в котором идет тело письма, список писем и т. д. Блок вставляется с абсолютным позиционированием с классами, похожими на те, что встречаются в списке писем. В принципе, не страшно, т. к. реклама текстовая. Только я один раз случайно кликнул по рекламе одежды для полных женщин и теперь мне всегда показывают рекламу одежды для полных женщин.


  1. DragonRU
    09.11.2015 23:55

    Меня вот интересует — а почему «переходить на темную сторону» могут только рекламщики? Как вам такое решение — вместо того, чтобы исключать назойливую рекламу из страницы, подтолкнуть поставщика рекламы разорвать все отношения с этим клиентом? То есть, запустить скрипт, имитирующий максимально наглую и тупую накрутку кликов на этот баннер. Подозреваю, что у сайтовладельца могут возникнуть проблемы с доказательством, что этот скрипт запустил не он.


    1. esc
      10.11.2015 01:25

      Замахаетесь скрипты писать. Рекламщики уже закладывают довольно большой процент склика, если речь идет о назойливой рекламе. И кстати большенство «скриптов» и так отсекаются т.к. вебмастера тоже не гнушатся ими пользоваться.