使用JavaScript检测广告拦截器的最有效方法
- 发表于
- javascript , 前端
使用JavaScript检测广告拦截器的方法
如果您想知道您网站上的访问者是否正在阻止百度联盟、阿里妈妈、Google AdSense和其他在线网络广告,则可以借助一些JavaScript轻松地做到这一点。常见的广告拦截器有哪些?可参考《手机广告过滤,手机广告拦截软件推荐》以及《用uBlock Origin过滤广告,享受最好的广告拦截体验》。
第1步:了解广告拦截器的工作原理
当浏览器请求网站地址时,它会下载相应的HTML文件,其中包括对Javascript文件,CSS样式表和图像的内部和外部引用。如果浏览器安装了广告拦截器,则会将引用的脚本和文件的名称与“阻止列表”进行比较,如果有匹配项,则将忽略这些文件。
常见的订阅规则例如:easylist.txt,更多
第2步:利用“阻止列表”显示广告阻止者
所有阻止列表都包含对“ads.js
”的引用,因为它是与投放广告相关联的JavaScript文件的通用名称。知道了这一点,将以下创建隐藏的div的JavaScript代码保存到名为“ads.js
”的文件中,并将其放置在网站的根目录中。
1 2 3 4 |
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是否存在(允许广告)(不存在)(阻止广告)。结束!
1 2 3 4 5 6 7 8 9 10 |
<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。
1 2 3 4 5 6 7 8 9 10 11 |
<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文件,因此,如果广告阻止程序处于活动状态,则不会设置该变量。
1 2 |
// Put this in the ads.js file isAdBlockActive=false; |
现在,将其放置在主网页的HTML中。
1 2 3 4 5 6 7 |
<script>var isAdBlockActive=true;</script> <script src="ads.js"></script> <script> if (isAdBlockActive) { console.log("The visitor is blocking ads"); } </script> |
三:定制化识别广告拦截器
这是与新的异步响应式Google Ads一起使用的另一个选项。
1 2 3 4 5 6 7 8 9 |
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
”类的广告。
原文连接
的情况下转载,若非则不得使用我方内容。