总有人间一两风,填我十万八千梦

JS检测网站广告是否被屏蔽

PHP Zero、J 6075℃ 0评论

自己创建这个博客也只是因为兴趣原因,不求有什么收益,一直以来很纠结是否要在网站上挂点儿广告什么的,挂广告必然会影响用户的体验,但是我也不想因为服务器费用亏得太多,索性还是挂点不碍眼的广告弥补一下损失。然而,由于浏览器各种屏蔽广告插件的出现,广告内容根本无法显示( ╯□╰ ),最终想了想还是通过弹窗提示一下用户吧。

现在最常用的屏蔽广告插件有AdBlock、ADT广告终结者等,初步了解了一下,这些插件都是根据关键字来屏蔽广告JS文件的,例如cmp、adview、cpc等,所以要想检测广告是否被屏蔽了,只需要伪造一个广告用的JS文件,在其内部创建一个变量,如果广告被屏蔽了那么这个JS文件就不会被加载,其内部声明的变量也就不会存在,这样就可以检测到广告是否被屏蔽了,其基本思路如下:

  1. 创建一个名称含有广告关键字的JS文件,例如“adview_pic_cpc_cpm_cpa_guanggao_gg_ads_300x250.js
  2. 在JS文件内部随意创建一个变量,例如 var adskilltest=true;
  3. 在html中加载这个JS文件,如果广告被屏蔽了,文件adview_pic_cpc_cpm_cpa_guanggao_gg_ads_300x250.js将不会被载入,那么adskilltest这个变量就不会存在,if(typeof(adskilltest)==’undefined’ ) 就会为真
  4. 检测变量adskilltest是否存在即可判断广告是否被屏蔽

运行效果如下(代码在最后):

adblocktips

 

示例代码:

百度网盘:http://pan.baidu.com/s/1bnCWEV9 密码 k4md (防度娘河蟹)adkillcry

转载请注明:悠然品鉴 » JS检测网站广告是否被屏蔽

喜欢 (3)or分享 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(4)个小伙伴在吐槽
  1. 您好,按照您的方法测试了,不过无论我是否屏蔽广告,都会有窗口提示,是因为这个代码比广告还先加载吗,我是把测试广告用的js调用放在模板头html的,test代码放在foot模板的,请指点一下,谢谢。
    小雷2016-04-18 01:41 回复
    • 如果你用了360等浏览器的话,这些浏览器自带屏广告的插件,你可以按下F12查看JS文件的加载状态,如果/wp-content/plugins/adstips/js/adview_pic_cpc_cpm_cpa_guanggao_gg_ads_300x250.js这个文件没有被加载,就会弹窗,我的Chrome浏览器没有任何问题。
      浅灬笑2016-04-18 10:03 回复
      • 谢谢您的回复,查看了确实被360拦截了,但是广告没有被拦截,另外用ie浏览器试了试,也应该是被拦截了,也是广告没有被拦截。针对360浏览器是没有办法了吧,那么请问ie也被拦截是什么原因呢
        小雷2016-04-18 14:54 回复
        • 有些软件也是支持IE拦截广告的,你把JS放到你网站的目录下,因为是你自己的域名,如果JS被拦截了,只能说是你电脑上有相关的拦截软件起作用了,我的IE、Chrome、360安全浏览器、360极速,测试一切正常
          浅灬笑2016-04-20 08:24 回复