使用JavaScript检测广告拦截器的最有效方法

使用JavaScript检测广告拦截器的方法

如果您想知道您网站上的访问者是否正在阻止百度联盟、阿里妈妈、Google AdSense和其他在线网络广告,则可以借助一些JavaScript轻松地做到这一点。常见的广告拦截器有哪些?可参考《手机广告过滤,手机广告拦截软件推荐》以及《用uBlock Origin过滤广告,享受最好的广告拦截体验》。

使用JavaScript检测广告拦截器的最有效方法

第1步:了解广告拦截器的工作原理

当浏览器请求网站地址时,它会下载相应的HTML文件,其中包括对Javascript文件,CSS样式表和图像的内部和外部引用。如果浏览器安装了广告拦截器,则会将引用的脚本和文件的名称与“阻止列表”进行比较,如果有匹配项,则将忽略这些文件。

常见的订阅规则例如:easylist.txt更多

第2步:利用“阻止列表”显示广告阻止者

所有阻止列表都包含对“ads.js”的引用,因为它是与投放广告相关联的JavaScript文件的通用名称。知道了这一点,将以下创建隐藏的div的JavaScript代码保存到名为“ads.js”的文件中,并将其放置在网站的根目录中。

var e=document.createElement('div');
e.id='evHcEAJtaVBq';
e.style.display='none';
document.body.appendChild(e);

注意:模糊的div ID是为了确保它不会与您的网站可能使用的任何其他div冲突。

第3步:检查“ ads.js”是否已加载或被阻止

将以下JavaScript放在标记上方的网站HTML源代码中。目的是检查在“ads.js”中创建的隐藏div是否存在(允许广告)(不存在)(阻止广告)。结束!

<script src="/ads.js" type="text/javascript"></script>
<script type="text/javascript">

if(document.getElementById('evHcEAJtaVBq')){
alert('Blocking Ads: No');
} else {
alert('Blocking Ads: Yes');
}

</script>

JavaScript检测广告拦截器的更多方法

一:根据特性检测识别广告拦截器

页面加载完成后,您可以检查是否存在window.google_jobrunner。我们正在使用setTimeout来处理可能不会立即加载的异步Google AdSense。

<script>
window.onload = function() {
setTimeout(function() {
if ( typeof(window.google_jobrunner) === "undefined" ) {
console.log("ad blocker installed");
} else {
console.log("no ad blocking found.");
}
}, 10000);
};
</script>

二:使用变量检测识别广告拦截器

另一种比较流行的方法是,在服务器中创建一个名为/ads.js的文件,并在该文件中将变量设置为false。AdBlocker通常会阻止名称中带有* .ads *的JavaScript文件,因此,如果广告阻止程序处于活动状态,则不会设置该变量。

 // Put this in the ads.js file
isAdBlockActive=false;

现在,将其放置在主网页的HTML中。

<script>var isAdBlockActive=true;</script>
<script src="ads.js"></script>
<script>
if (isAdBlockActive) { 
console.log("The visitor is blocking ads");
}
</script>

三:定制化识别广告拦截器

这是与新的异步响应式Google Ads一起使用的另一个选项。

window.onload = function() {
setTimeout(function() {
var ad = document.querySelector("ins.adsbygoogle");
if (ad && ad.innerHTML.replace(/\s/g, "").length == 0) {
ad.style.cssText = 'display:block !important';
ad.innerHTML = "You seem to blocking Google AdSense ads in your browser.";
}
}, 2000); 
}; 

在新格式下,广告使用INS标签插入。该代码段检查INS标签内包含的标签的长度。如果为0,则Google Ads被阻止,并向用户显示一条自定义消息。

我们还需要将CSS显示属性设置为block,因为AdBlock可能会通过简单地使用CSS将其隐藏在屏幕上来阻止“adsbygoogle”类的广告。