Несмотря на возраст этого вопроса, недавно я обнаружил, что он очень полезен, и поэтому могу только предполагать, что другие его еще просматривают.Посмотрев здесь и в других местах, я предположил, что основные три проверки на стороне клиента для косвенного обнаружения блокировщика рекламы заключались в проверке заблокированных div
/ img
, заблокированных iframe
s и заблокированных ресурсов (файлов javascript).
Может быть, это слишком или параноидально, но это относится к системам блокировки рекламы, которые блокируют только один или два из выбора и, следовательно, могут не быть покрыты, если бы вы сделали только одну проверку.
На страницевы запускаете проверки add: (я использую jQuery)
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="advertisement.js"></script>
<script type="text/javascript" src="abds.js"></script>
и добавьте следующее в любом месте на странице:
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
Я использовал div с именем приманки кака также внешнее размещенное изображение с текстом «Advert» и размерами, используемыми AdSense (благодаря placehold.it!).
В advertisement.js
вы должны добавить в документ что-то, что мы сможем проверить позже.,Хотя кажется, что вы делаете то же, что и раньше, вы на самом деле проверяете загружаемый файл (advertisement.js
), а не вывод.
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
А затем сценарий обнаружения блокировщика рекламы, которыйобъединяет все
$(document).ready(function()
{
var ifr = '<iframe id="adServer" src="http://ads.google.com/adserver/adlogger_tracker.php" width="300" height="300"></iframe>';
$("body").append(ifr);
});
$(window).on("load",function()
{
var atb = $("#myTestAd");
var atb2= $("#myTestAd2");
var ifr = $("#adServer");
setTimeout(function()
{
if( (atb.height()==0) ||
(atb.filter(":visible").length==0) ||
(atb.filter(":hidden").length>0) ||
(atb.is("hidden")) ||
(atb.css("visibility")=="hidden") ||
(atb.css("display")=="none") ||
(atb2.html()!="check") ||
(ifr.height()!=300) ||
(ifr.width()!=300) )
{
alert("You're using ad blocker you normal person, you!");
}
},500);
});
Когда документ готов , т. е. разметка загружена, мы также добавляем в документ iframe.Затем, когда окно загружено , то есть содержимое вкл.загружаются изображения и т. д., мы проверяем:
- Размеры и видимость первого тестового div.
- Что содержимое второго тестового div является "check", как это было быбыли, если
advertimsent.js
был не заблокирован. - Размеры (и я предполагаю, что скрытый объект не имеет высоты или ширины?) iframe
И стили:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
Надеюсь, это поможет