在 Google 和 Stackoverflow 上搜索了几个小时后,我找不到解决方案。 我现在要做的是检测 Adblock plus 并显示一条简单的消息。
我想做的是检测 Adblock plus 而不 使用 JavaScript 文件或 jQuery。 大多数 adblock plus 检测脚本使用一个文件,例如“show_ads.js”,该文件托管在自己的域中,其中一行将其设置为“adblock = false;”
使用 JavaScript 文件的问题,用户可以将该 JavaScript 文件列入白名单,它将不再检测到它。我正在寻找的是一个直接加载到 HTML 中的 JavaScript,它可以在不使用文件的情况下检测是否有人在使用广告拦截器。
示例如下:
<script type="text/javascript">
// line of code that detects if using ad blocker
if so display message
</script>
这样做的原因是没有广告拦截器可以将您服务器上的 JavaScript 文件列入白名单。是的,我知道还有其他方法可以使用 NoScript 插件来解决这个问题,但我已经有了解决方案。我有一个从未尝试过的好主意,一旦我完成它,广告拦截器就无法阻止它。
任何建议和示例将不胜感激。
最佳答案
你不需要一个插件来检测广告拦截,只需使用这个:
<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 for developers:出于某种原因,我无法让 ABP 在本地环境中阻止这些文件。
P.S:ABP 是我最喜欢的广告拦截器 :-D
关于javascript - 广告拦截器检测 AKA Adblock Plus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18180598/