КодSEOБлогИное

Как бороться с блокировщиком рекламы

Google Chrome (что блокирует), Opera, Яндекс.Браузер, Эдблок, Касперский, Антибаннер, Аваст и многие другие программы могут вырезать рекламу, счётчики статистики, скрипты кнопок социальных сетей и прочие элементы сайта.

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

Как обойти блокировку AdBlock и т. п.

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

Что делать: вместо РСЯ или Google AdSense для приверженцев AdBlock показывать баннеры партнёрских программ. В SEO практически у каждого хостинга, системы автоматического продвижения есть свои начисления за привлечённых посетителей. Также и в других тематиках. Доход с блога может даже увеличится, потому что у непуганых рекламой людей ещё отсутствует баннерная слепота.

Код JavaScript, который позволит обойти AdBlock

Пояснение: если после загрузки страницы высота блока-обёртки равна нулю, то нужно создать и показать ссылку с баннером.

Один из возможных вариантов:

<div id='ad'>
<!-- код AdSense -->
</div>

<script>
window.addEventListener("load", function() {
  var ins = document.getElementById('ad');
  if (ins.clientHeight == "0") {
    ins.innerHTML = '<a href="партнёрская_ссылка" target="_blank" rel="nofollow"><img src="адрес_изображения" alt="Описание картинки"></a>'; // innerHTML можно заменить на outerHTML
  }
}, true);
</script>

Человек может вручную его заблокировать. Поэтому периодически нужно менять адрес картинки самому или рандомом PHP. Изображение следует либо загружать на свой сервер, либо

  1. не употреблять в URL слова "banner", "ad" и т.п.,
  2. не использовать типичные размеры рекламных блоков ("728 x 90", "160 x 600" и т. д.).

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

Удаление через фильтры раз и навсегда маловероятно, поскольку нужно хорошо разбираться в селекторах, что абсолютное большинство не будет делать (не сумеет) для одного из миллионов сайтов. Бездумная настройка может привести к тому, что товарищу не отобразится ни ролик YouTube, ни нужное ему изображение, ни форма, и тогда уже AdBlock будет рассматриваться не как антиреклама, а как вирус, который не даёт полноценно работать с интернетом. К тому же, увеличение списка фильтров приведёт к замедлению работы браузера.

Сколько на сайте посетителей блокируют рекламу с помощью расширения AdBlock

Анализировать данные с помощью Яндекс.Метрики (см. отчёт) и Google Analytics смысла нет, так как они тоже могут быть удалены, поэтому нужно использовать свой код PHP.

Шаг 1. Создать файл cAB.html и количество просмотров с включенным AdBlock смотреть на http://вашсайт.ru/cAB.html

<!DOCTYPE html>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
<meta name="robots" content="noindex"/>
<ol>

Шаг 2. Создать файл cAB.php

<?php
if (isset($_GET['add']))
{
    $fp = fopen("cAB.html", "a+"); // режим записи
    $mytext = "<li>" . date("d.m.Y H:i", strtotime("+4 hours")) . " " . $_SERVER['HTTP_REFERER']; // +4часа для Москвы
    $save = fwrite($fp, $mytext); // запись в файл
    fclose($fp); // закрытие файла
}
?>

Шаг 3. На страницы сайта с рекламой

<div id='ad'>
<!-- код AdSense -->
</div>

<img alt='1 пиксель белый' height='1' id='adbl1' src='http://1.bp.blogspot.com/-1QU3c-k4Psw/U8rGvbidbhI/AAAAAAAAEpc/mI0BV39Ukek/s00/1-1.png' width='1'/>
<script>
document.getElementById('adbl1').onload = function() {
  if (document.getElementById('ad').clientHeight == '0' && window.XMLHttpRequest) {
       var req = new XMLHttpRequest();  
       req.open('GET', 'cAB.php?add', true);
       req.send(null);   
  }
}
</script>
NMitraДругой вариант
<div id='ad'>
<!-- код AdSense -->
</div>

<script>
window.addEventListener("load", function() {
  var div = document.getElementById('ad');
  if (div.clientHeight == '0') {
    theImg = document.createElement('img');  // создать новый элемент в JavaScript
    theImg.src = 'адрес_изображения';
    div.parentNode.insertBefore(theImg, div.previousSibling);
    theImg.onclick = function() {  // клик по картинке приведёт к переходу
        document.location.href = 'партнёрская_ссылка';  // изменить URL текущей страницы
    }
  }
}, true);
</script>
Вариантов можно набросать достаточно много, так как можно
  1. прятать код в селекторах, непохожих у каждого отдельно взятого сайта,
  2. разными способами высчитывать размер элемента,
  3. с помощью CSS показывать ранее скрытые блоки,
  4. использовать аналоги JS
Так что если предложенные скрипты не срабатывают, напишите в комментариях, по мере возможности будем разбираться. Космо Мизраил ГорынычЗашибись, Эдблок теперь банит блоки подписки Feedburner! Не, ну это уже нарушение функционирования сайта! Поэкспериментировал. Блокируется именно блоггеровский стандартный виджет. Если вставить блок HTML с формой от Фидбёрнера (без изменений даже), то Adblock его не режет. АнонимныйПодскажите, а как сделать, чтобы партнёрская ссылка открывалась в новой вкладке? NMitraВместо
document.location.href = 'партнёрская_ссылка'
использовать
window.open('партнёрская_ссылка');  // открыть новое окно
Все комментарии