如何在我的网站上检测Adblock?
我希望能够在用户访问我的网站时检测用户是否使用了广告拦截软件。如果他们正在使用它,我想显示一条消息,要求他们关闭它以支持该项目,就像这个网站一样。
如果您进入该网站并且您的浏览器启用了某种广告拦截软件,则该网站会显示一个小横幅,告诉用户该广告收入用于托管项目,他们应考虑关闭Adblock 。
我想在我的网站上这样做,我正在使用adsense广告,我该怎么做?
没有找到相关结果
已邀请:
30 个回复
梦话快家腹
的小js文件 这是该文件中唯一的代码行
然后在我的页面的某个地方:
ads.js等文件至少被Chrome上的这些广告拦截器拦截: 广告拦截 Adblock Plus Adblock Pro Ghostery的 2019-02-15更新: 在上面的列表中添加了Ghostery,因为扩展现在也阻止了对ads.js的请求。非常便利。这是否意味着Ghostery实际上正在帮助我们开发人员检测广告的扩展名? 不适用于: 隐私獾
献导外拘
草票
当然,您需要拥有AdblockNotice.html的目标网页,而.myTestAd类需要反映您的实际广告容器。但这应该有效。 编辑 正如TD_Nijboer建议的那样,更好的方法是使用
(或
,我在下面使用)选择器,以便检查
:
当然,如果需要,这两个都可以组合成一个
块。 请注意,
也不会被捕获(布局空间停留,但广告不可见)。要检查,可以使用另一个过滤器:
这将为您提供一系列“隐形”的广告元素(理论上任何大于
都是一个问题)。
梦砍废么
喷乡顾沥沪
这也可以用于其他元素,以查看广告拦截器是否阻止内容。如果远程元素不存在或无法到达,则此方法可能会产生误报。
犯痪桂涛杭
此方法概述如下:http://www.metamorphosite.com/detect-web-popup-blocker-software-adblock-spam
俺呵誓放胳
advertisement.js只包含任何内容。当有人使用adblock时,它会失败并调用该函数。
勺的驴吓识
阻止的元素。如果我在页面中包含这样的元素并测试它的高度,我知道adblocking是否处于活动状态:
其余的是通过通常的jQuery嫌疑人完成的:
可以看出,我使用
至少超时1ms。我已经在各种浏览器上测试了这个,大多数时候,直接检查
中的元素总是返回0;无论广告拦截器是否有效。我对此有两个想法:渲染尚未完成或Adblock尚未启动。我没有打扰进一步调查。
佩疵瓦
,另一个页面/弹出窗口为
。 在另一页上,清楚地表明您了解它是他们的计算机并且他们可以自由地使用广告拦截。 还要以非指责的方式明确指出,使用这些阻止程序会使您更难以提供优质内容(详细说明原因),而且您希望广告拦截不会发生在您的网站上,这完全是他们的决定。专注于关闭阻止的积极因素。 那些强烈反对广告的人会忽视这一点,但无论如何你都没有机会说服他们。那些漠不关心的人很可能会被你的吸引力所左右,因为你不是在做“让我走自己的路,或者我会把球带回家”,这应该是五岁儿童的专属领域。 记住,没有人拿着枪对着你的头,迫使你把你的东西放在网上。尊重您的读者/用户,您可能会发现其中很多人会回报。
为陡土
镀建啼
jQuery的:
“ablockercheck”是adblocker阻止的ID。因此,检查它是否可见,您可以检测adblocker是否已打开。
距相镭
是否为
。由于异步脚本是异步的,因此必须在几秒钟后检查。这是一个粗略的轮廓:
为了澄清,以下是AdSense异步广告代码的示例:
请注意,
初始化为数组。
库在执行时将此数组更改为
。在一定时间后检查变量的类型可以告诉您脚本是否已加载。
破弯
名称为adsbygoogle.js 然后做以下事项:
在这里找到了解决方案
缮记箔
类的元素都会被自动阻止。 我用
类创建了一个非空的div元素:
页面加载后,只检查该元素是否隐藏。我使用jQuery,但随意使用javascript:
甚至更好用
如果值为
,则AdBlocker处于活动状态。
邵酮
结乳
内并检查高度
它适用于adblock plus和bluehell防火墙。
琶竞捆栓
此解决方案适用于所有类型的广告,而不仅仅是谷歌广告。
嘘崇蔡对
然后你调用页面底部的adsense代码(注意在调用
脚本时不要使用
标志):
然后在下面添加以下代码:
AdSense会在广告加载时始终创建/设置标记
至
。您可以将支票放入setTimeout函数以将检查延迟几秒钟。
橙绥
/
,阻止
s和阻止资源(javascript文件)。 也许它超过顶部或偏执,但它涵盖了广告拦截系统,只能阻止选择中的一两个,因此如果您只进行了一次检查,则可能没有被覆盖。 在页面上运行检查添加:(我正在使用jQuery)
并在页面上的任何其他位置添加以下内容:
我使用了带有诱饵名称的div以及带有文字“广告”的外部托管图像以及AdSense使用的尺寸(感谢placehold.it!)。 在
中,您应该在文档中附加一些内容,我们可以在以后查看。虽然看起来你和以前一样,但实际上你正在检查文件(
)本身是否被加载,而不是输出。
然后是广告拦截器检测脚本,它结合了一切
当文档准备就绪,即加载了标记时,我们也将iframe添加到文档中。然后,当加载窗口时,即内容包括。图片等已加载,我们检查: 第一个测试div的尺寸和可见性。 第二个测试div的内容是“检查”,因为如果
没有被阻止的话。 iframe的维度(我猜可见性,隐藏对象没有高度或宽度?) 和风格:
希望这可以帮助
俺呵誓放胳
到街客核
屡倒雷图
舞备联
并在getbanner.cfm文件中:
我认为这是检测adblock的最简单方法。
磨标烫徽啪
田损比报
答案很好看,但没有更多的工作,所以我已经将'js文件的名称从'ads'更新为'adsense',它就像魅力一样! 这是代码,也许这将帮助某人:
在Js文件中只放了这一行:
甲车劲
部分:
现在,您可以在任何想要向AdBlock用户显示消息的位置使用
id:
请注意添加的内联样式最初隐藏它(当然,您也可以从您自己的CSS文件中执行此操作)。 另请注意,它需要500毫秒,这是因为它必须等待广告拦截器执行其操作,否则它将无法正常工作。 这个脚本如何工作的一点解释 首先,它附加一个iframe,其中包含随机生成的链接源。 (它是随机生成的,因为有些adblock很聪明,在某些时候,他们意识到链接是假的)。 然后它对该iframe运行多次检查(如果它已成功加载或其样式被修改)。如果其中一个测试成立,则会向广告拦截用户显示
元素。 此脚本适用于大多数(如果不是全部)广告拦截器。 额外 没有必要,真的,可能只是创建了一个要点,但我创建了一个Github项目,但是,如果它帮助了你,请检查它并为它加注星号.abDetector:Simple vanilla JavaScript AdBlock Detector。 请享用。
好按紊叉
然后用它:
破弯
标记关闭之前将其粘贴到页面页脚中。
缕嚏冻
末钉蹈泰唬
在简单的JavaScript中:
对于
,您可以使用您知道与正在生成的广告一致的任何选择器。例如。对于新的AdSense代码,您可以使用
。