Kaptain.
Telegram /
LinkedIn /
Email /
GIT /
RSS /
GPG /
Заказ печатных плат

№ 2850 В разделе
Programming
от May 18th, 2011,
Обнаружение и блокировка AdBlock головная боль многих издателей. Но если вы все-таки решились увеличить доход от рекламы, то приготовьтесь к обилию вони от любителей халявы. Скажу по опыту, что рекламу на моем сайте начали жать в 2 раза чаще, за что я очень благодарен посетителям.
Итак, есть всего 3 эффективных метода борьбы на данный момент: простой, сложный и просто маргинальный. Простой заключается в проверке загрузилась ли картинка с баннером. Концепция второго – внедрение рекламы прямо в код страницы, а если это графика, то использовать base64 прямо в теге img (что кстати не проканает с флешем. а может и проканает, но я просто не знаю как сделать). От такого может спасти только порево с кучей плагинов перезаписывающих DOM дерево страницы. Обычный юзер такие даже ставить не будет, не то что разбираться. Третий способ намного сложнее и заключается в генерации случайного имени файла и директории в которой он лежит и хранение рекламы прямо у себя на сервере (или нгинксом делать вид, что она на сервере). Я пока еще придумываю его реализацию (ждите в ближайшее время продолжение статьи). ВКонтакте применил сместь второго и третьего способа и теперь у него все хорошо.
Сразу скажу, что называть скрипты и стили именами явно рекламными бесполезно (чтобы при заходе с AdBlock пользователь видел кривую как саблю полурабочу страницу, заставляя его отключить блокиратор). Конечно, на первое время прокатит и такое, но урлы то можно добавлять в исключения, а списки исключений коммитить на сервер AdBlock. Это уже не очень хорошо. Первый способ строится как раз на том, что юзер ленивый и не сразу закоммитит исключение на сервер. Со временем придется менять урл загружаемого баннера или пустышки, изображающей баннер.
Итак, начнем с первого способа, работающего прямо сейчас с моим блогом.
Известно, что AdBlock рекламу не просто блокирует, а вырезает ее из страницы. Допустим, на странице есть баннер с именем banner.gif. Понятно дело, что у Adblock это первый кандидат для блокировки по имени. У меня нет баннеров с таким именем и я вообще не храню рекламу на сервере, поэтому я применяю болванку размером 1×1 пиксел.
<img src="/wp-content/themes/wp-theme-rubashka/banner.gif" height="1" width="1" id="test" class="test">
Тег img имеет класс test, который естественно исчезнет из DOM страницы, когда AdBlock её обработает. Делаем простой скрипт проверки наличия этого класса и вуаля!
<script type="text/javascript">
var test=document.getElementById("test");
if (test.className != "test") {
document.getElementById("cont").innerHTML="Вы используете
блокировщик AdBlock. Отключите его пожалуйста
или добавьте сайт в исключения.";
}
</script>
Сам контент находится в элементе с ID “cont”. Как вы видите в коде, его содержание (собственно контент страницы) перезаписывается вашим текстом. Можно конечно этого не делать, а просто выводить сообщение, что юзер очень редиска.
Ждите продолжения со вторым и третьим способом. Также мы обсудим блокировку изображений по их размерам.
Fortune cookie: If elected, Zippy pledges to each and every American a 55-year-old houseboy ...
очень интересно. ждемс 🙂
самый верный способ встраивать червя через какую-нить дыру в браузере)
Вобще вроде за такие извраты гугол может и зобанить (у себя) у них есть какита правила которые которые запрещают шаги в стороны не говоря уже о прыжках
ну гугол то врятли забанит за то, что обеспечиваю показ объяв 🙂 другое дело если я прямо заставляю тыкать на них
А на другие блокировщики действует к примеру на Adguard
даже не слышал о таком. не думаю, что колво его пользователей даже сравнимо с колвом пользователей адблока. следовательно им можно пренебречь как слишком малая аудитория. в любом случае если яваскриптом проверять загружена ли картинка, то можно добиться искоренения таких блокираторов.
уже не работает 🙁
chromium + adblock
проверил, ничего он не вырезает, количество строк в html-страничке – одинаковое что с вкл, что с выкл adblock’ом 🙂
за прошедшие 1.5 года мой блог изменился. вот и не вырезает. а количество строк не должно меняться. просто высота и ширина блоков делается 0.
отключаем js читаем страничку
И сразу половина сайта не рабочая. Супер решение.