javascript - 广告拦截器检测 AKA Adblock Plus

标签 javascript html adblock

在 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/

相关文章:

ios - 如何在 Safari 部分自动开启 "Content Blocker"扩展?

javascript - 使用函数时在 Sequelize 中进行分组

javascript - Mixpanel 分段查询 API Google 电子表格

javascript - 有没有办法在圆环 Chart.JS 中显示 100 中的 %

javascript - javascript中的多个if else条件

javascript - 如何仅在启用 adblock 时显示广告背后的背景?

javascript - XMLHTTPRequest 响应不包含 header 中的 Location 字段

javascript - native IOS 应用程序从网络浏览器 javascript 接收数据

javascript - 为什么在 if 条件为 false 的情况下提交表单?

html - margin float 的替代品 : auto issues