如何在我的网站上检测Adblock?

流过昼夜 提交于 2020-02-27 20:04:54

我希望能够检测到用户访问我的网站时是否正在使用adblocking软件。 如果他们正在使用它,我想显示一条消息,要求他们关闭它以支持该项目,就像本网站一样。

如果您进入该站点,并且浏览器启用了某种adblock软件,则该站点会显示一个小横幅,告诉用户该广告收入用于托管该项目,而不是显示实际的广告,因此应考虑关闭Adblock 。

我想在我的网站上这样做,我在上面使用adsense广告,该怎么办?


#1楼

他们利用了Google的广告代码创建ID为“ iframe”的iframe的事实。 因此,只要您的页面上没有该ID的内容,这对您也将起作用。

<p id="ads">
<script type="text/javascript"><!--
google_ad_client = "their-ad-code-here";
/* 160x600, droite */
google_ad_slot = "their-ad-code-here";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

</p>

<script type="text/javascript"><!--
if(document.getElementsByTagName("iframe").item(0) == null)
{
    document.write("<div style='width:160px; height:600px; padding-top: 280px; margin-left:5px;border:1px solid #000000; text-align:center; font-family:century gothic, arial, helvetica, sans serif;padding-left:5px;padding-right:5px;'>Advertising seems to be blocked by your browser.<br /><br /><span style='font-size:10px'>Please notice that advertising helps us to host the project.<br /><br />If you find these ads intrusive or inappropriate, please contact me.</span><img src='http://www.playonlinux.com/images/abp.jpg' alt='Adblock Plus' /></div>");
}
--></script>

#2楼

我知道已经有足够的答案了,但是由于这个问题出现在Google在该主题上搜索“ detect adblock”的情况下,因此我想提供一些见识,以防您不使用adsense

具体而言,通过此示例,您可以检测是否使用了Firefox Adblock提供的默认Adblock-list。 利用此阻止列表的优势,可以使用CSS id #bottomAd阻止一个元素。 如果我在页面中包含此类元素并测试其高度,我就会知道adblocking是否处于活动状态:

<!-- some code before -->
<div id="bottomAd" style="font-size: 2px;">&nbsp;</div>
<!-- some code after -->

其余的通过通常的jQuery嫌疑人完成:

$(document).ready( function() {
  window.setTimeout( function() {
    var bottomad = $('#bottomAd');
    if (bottomad.length == 1) {
      if (bottomad.height() == 0) {
        // adblocker active
      } else {
        // no adblocker
      }
    }      
  }, 1);
}

可以看出,我使用的setTimeout的超时时间至少为1ms。 我已经在各种浏览器上进行了测试,大多数时候,直接检查ready的元素总是返回0; 无论adblocker是否处于活动状态。 我对此有两个想法:要么尚未完成渲染,要么Adblock尚未启动。 我没有去做进一步的调查。


#3楼

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>var adb=true;</script>
<script src="./getbanner.cfm?"></script>
<script>
$(document).ready(function(){if(adb)alert('AdBlock!');});
</script>

并在getbanner.cfm文件中:

adb = false;

我认为这是检测adblock的最简单方法。


#4楼

这对我有用:

function isAdBlocked() {
     return (typeof(window.google_jobrunner) === "undefined") ? true : false;
}

$(document).ready(function(){
    if(isAdBlocked()) {
       alert('Y U NO LIKE ADS?');
    }
});

#5楼

我的解决方案不特定于某个广告网络,并且非常轻巧。 我已经在生产中运行了几年。 AdBlock阻止所有包含单词“ ads”的网址。 这就是我所做的:

我在webroot中添加了一个小js文件,名称为ads.js

这是该文件中的唯一代码行

var canRunAds = true;

然后在我页面的某处:

<html>
  <head>
    <script src="/js/ads.js"></script>
  </head>
  <body>
    <script>
      if( window.canRunAds === undefined ){
        // adblocker detected, show fallback
        showFallbackImage();
      }
    </script>
  </body>
</html>

至少在Chrome上,以下adblocker阻止了ads.js之类的文件:

  • AdBlock
  • Adblock Plus
  • Adblock Pro
  • 幽灵

于2019-02-15更新:

在上面的列表中添加了Ghostery,因为该扩展程序现在还阻止了对ads.js的请求。 非常便利。 这是否意味着Ghostery实际上正在帮助我们的开发人员通过扩展对其广告进行拦截?

不适用于:

隐私Bad

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!