在搜索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

10-08 15:37