如何判断网络客户端是否在阻止广告?
时间:2020-03-05 18:37:45 来源:igfitidea点击:
记录有关已将其浏览器设置为阻止广告的访问我的网站的访问者数量的统计信息的最佳方法是什么?
解决方案
回答
我想我们可以将广告印刷品与网站上的浏览量进行比较(可以从分析软件中获得)。
回答
由于像AdBlock这样的程序实际上从不请求广告,因此我们必须查看服务器日志,以查看同一用户是否访问了网页但没有访问广告。这是假设广告位于同一服务器上。
如果广告位于单独的服务器上,那么我建议我们不要这样做。
阻止用户阻止广告的最佳方法是使内联文本广告由服务器生成并在html内弹出。
回答
将用户ID添加到广告请求中:
<img src="./ads/viagra.jpg?{user.id}"/>
这样一来,我们可以查看哪些用户看到了哪些广告。
回答
我们需要考虑屏蔽广告的不同方式。首先要看的是它们是否正在运行noscript,因此我们可以添加一个脚本来检查该脚本。
接下来的事情是看看它们是否阻挡了闪光灯,应该看一小部电影。
如果我们查看adblock网站,则有一些迹象表明它是如何进行屏蔽的:
元素隐藏如何工作?
如果我们进一步浏览该页面,将会发现常规的chrome探测无法正常工作,因此我们需要尝试解析更改后的DOM。
回答
AdBlock论坛说,这是用来检测AdBlock的。进行一些调整后,我们可以使用它来收集一些统计信息。
setTimeout("detect_abp()", 10000); var isFF = (navigator.userAgent.indexOf("Firefox") > -1) ? true : false, hasABP = false; function detect_abp() { if(isFF) { if(Components.interfaces.nsIAdblockPlus != undefined) { hasABP = true; } else { var AbpImage = document.createElement("img"); AbpImage.id = "abp_detector"; AbpImage.src = "/textlink-ads.jpg"; AbpImage.style.width = "0"; AbpImage.style.height = "0"; AbpImage.style.top = "-1000px"; AbpImage.style.left = "-1000px"; document.body.appendChild(AbpImage); hasABP = (document.getElementById("abp_detector").style.display == "none"); var e = document.getElementsByTagName("iframe"); for (var i = 0; i < e.length; i++) { if(e[i].clientHeight == 0) { hasABP = true; } } if(hasABP == true) { history.go(1); location = "http://www.tweaktown.com/supportus.html"; window.location(location); } } } }