Интересный способ заставить пользователей выключить Adblock
Обнаружен на сайте https://www.kp.ru/, в целом похож на этот способ обнаружения Adblock.
Краткая суть: считаем, что AdBlock включен, пытаемся загрузить JavaScript, похожий на рекламу /js/adriver.js
, если есть AdBlock, он его блокирует. А файл /js/adriver.js
содержит всего одну инструкцию: window.noAdBlock = true;
, которая отменяет утверждение, что Adblock есть.
- index.html
<script> window.noAdBlock = false; </script> <script src="/js/adriver.js"></script> <script async="async" type="text/javascript" src="/js/module/myFrame.min.js"></script>
- /js/module/myFrame.min.js
utils.isBlockedAd = function() { var i = document.getElementById("popapIsBlockedAd"); if (i) { var s = function() { i.innerHTML = '<div class="container"><div class="leftColl"><span class="close">x</span><div class="wrap"><div class="titleBlockedAd">Здравствуйте!</div>' + '<div class="txt"><p>Мы заметили, что вы используете блокировщик рекламы.</p><p>Очень просим отключить его для ' + '<span style="text-transform: uppercase;">' + window.location.hostname + '</span>!</p><p>Реклама - основной источник дохода для нас. ' + 'Без нее мы не сможем оплатить работу журналистов и их командировки.</p><p class="bold">Не лишайте себя хороших материалов!</p>' + '</div></div></div><div class="rightColl"><div class="wrap"><div class="nav kpNav"><span class="active" data-slide-active="slide-1">' + 'AdBlock</span><span data-slide-active="slide-2">AdBlock Plus</span><span data-slide-active="slide-3">uBlock</span></div>' + '<div class="slideGallery"><div class="slide" id="oneSlide"><div class="title">Инструкция:</div><ol><li>Нажмите на значок Adblock' + ' рядом с адресной строкой</li><li>Выберите пункт «Не запускать на страницах этого домена» </li></ol></div>' + '<div class="slide" id="twoSlide"><div class="title">Инструкция:</div><ol><li>Нажмите на значок Adblock рядом с адресной строкой</li>' + '<li>Нажмите на опцию «Включен на этом сайте»</li></ol></div><div class="slide" id="threeSlide"><div class="title">Инструкция:' + '</div><ol><li>Нажмите на значок uBlock рядом с адресной строкой</li><li>Нажмите на большую синюю кнопку «Выключить»</li></ol>' + '</div></div></div></div></div><span class="shadow shadowClose close"></span>' }; $(document).find("#popapIsBlockedAd").each(function() { function i() { d.removeClass("active") } function l() { var i = $(this).attr("data-slide-active"); v.removeClass("active"), $(this).addClass("active"), c.removeClass("slide-1"), c.removeClass("slide-2"), c.removeClass("slide-3"), c.addClass(i) } var a = !1, d = $(this), e = get_cookie("popapAdShow"), o = location.hostname.split(".").reverse(); if (o = "." + o[1] + "." + o[0], "yes" !== e) { s(); var t = $(this).find(".close"); setTimeout(function() { a = !a, a ? (d.addClass("active"), window.dataLayer && window.dataLayer.push({ event: "popadshow" }), set_cookie("popapAdShow", "yes", { domain: o, path: "/", expires: 1800 })) : d.removeClass("active") }, 1e4), t.click(i); var c = $(this).find(".slideGallery"), v = $(this).find("[data-slide-active]"); v.click(l) } }) } }, $(document).ready(function() { noAdBlock || utils.isBlockedAd() });