如何检测请求是否被AdBlocker阻止?

时间:2020-08-28 16:22:48

标签: vue.js request adblock

我们在Vue Js中有一个页面,我们注意到Adblocker阻止了某些请求,我想检测出这种情况何时发生(仅当请求被阻止时)

1 个答案:

答案 0 :(得分:1)

创建一个看起来像广告的端点,以愚弄adblock使其阻塞,然后将其加载到脚本标签中,即:

TiSlack

然后,端点返回一些基本的js在页面上创建一个虚拟元素:

<script src="/adverts.js" type="text/javascript"></script>

然后在页面上或您的应用中,您只需查找应已加载的元素,如果不是,则该元素被阻止,这表明用户已启用adBlock:

app.get('/adverts.js', function (req, res, next) { const response = `var a=document.createElement('div');a.id='advert-test';a.style.display='none';document.body.appendChild(a)` res.setHeader('content-type', 'text/javascript') res.setHeader('content-length', response.length) res.send(response) })

如果您尝试解决阻塞图片的问题,请不要使用广告特征(例如广告的通用图片尺寸)来命名资产。即。 let adBlocked = document.getElementById('advert-test') ? false : true改用/ads/ad375x50.jpg之类的东西,并将哈希与实际文件匹配/映射。其中包括DOM ID,并且/a/708e8144b8c034c8bde17391ef1bf9c1.jpg之类的类将被隐藏(heres被阻止类的列表)。

如果您尝试解决加载AdSense或第三方域名等问题,那么您会很走运,因为没有解决方法。