使用JavaScript检测广告拦截器的最有效方法
- 发表于
- javascript , 前端
使用JavaScript检测广告拦截器的方法
如果您想知道您网站上的访问者是否正在阻止百度联盟、阿里妈妈、Google AdSense和其他在线网络广告,则可以借助一些JavaScript轻松地做到这一点。常见的广告拦截器有哪些?可参考《手机广告过滤,手机广告拦截软件推荐》以及《用uBlock Origin过滤广告,享受最好的广告拦截体验》。
第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
”类的广告。
原文连接
的情况下转载,若非则不得使用我方内容。