在搜索Google和Stackoverflow几个小时后,我找不到解决方案。
我正在尝试检测Adblock plus并显示一条简单消息。
我想做的是使用JavaScript文件或jQuery检测Adblock加上而没有。
大多数adblock plus检测脚本都使用文件,例如“show_ads.js”文件,该文件托管在自己的域中,并在其中插入一行以将其设置为“adblock = false;”。
使用JavaScript文件的问题,用户可以将该JavaScript文件列入白名单,并且它将不再检测到它。我正在寻找的是一种可直接加载到HTML中的JavaScript,该JavaScript将检测是否有人在使用广告拦截程序而不使用文件。
下面的例子:
<script type="text/javascript">
// line of code that detects if using ad blocker
if so display message
</script>
这样做的原因是,没有任何广告拦截器可以将服务器上的JavaScript文件列入白名单。是的,我知道还有其他方法可以解决NoScript插件的问题,但是我已经有解决方案。我有一个绝妙的主意,那就是从未尝试过,一旦完成,广告拦截器就无法阻止它。
任何建议和示例将不胜感激。
最佳答案
您无需安装插件即可检测adblock,只需使用以下命令即可:
<script type="text/javascript">
var adblock = true;
</script>
<script type="text/javascript" src="adframe.js"></script>
<script type="text/javascript">
if(adblock) {
//adblock is installed and enabled on this site :-D
}
</script>
adframe.js 的内容:
adblock = false;
更新:
Adblock Plus会根据已有的样式阻止某些请求或隐藏某些元素。这些模式之一(在patterns.ini 中):
[Filter]
text=/adframe.
hitCount=843
lastHit=1456391595626
会阻止其中包含
/adframe.
的所有URL。更新2018年8月25日
Adblock plus更改了查找列表和屏蔽广告的方式。它有一堆称为订阅的列表,用于阻止。例如,这是默认值之一:
https://easylist-downloads.adblockplus.org/easylist.txt
您可以使用此文件上的规则来查找要使用的文件名。例如,您可以使用 seo-ads.js
开发人员的P.S :由于某种原因,我无法让ABP在本地环境中阻止这些文件。
P.S :ABP是我最喜欢的广告拦截器:-D