如何判断Web客户端是否阻止广告?

时间:2008-08-05 15:30:43

标签: browser analytics

记录访问我网站的访问者数量的最佳方法是什么?他们将浏览器设置为屏蔽广告?

5 个答案:

答案 0 :(得分:11)

由于像AdBlock这样的程序实际上从不请求广告,因此您必须查看服务器日志以查看同一用户是否访问了网页但未访问广告。这是假设广告在同一台服务器上。

如果您的广告位于单独的服务器上,那么我建议不可能这样做。

阻止用户阻止广告的最佳方法是使用由服务器生成并在html中抛出的内联文字广告。

答案 1 :(得分:10)

将用户ID添加到广告请求中:

<img src="./ads/viagra.jpg?{user.id}"/>
通过这种方式,您可以查看哪些用户看到了哪些广告。

答案 2 :(得分:4)

您需要考虑广告被阻止的不同方式。首先要看的是它们是否正在运行noscript,因此您可以添加一个可以检查该脚本的脚本。

接下来就要看看它们是否阻挡闪光灯,一部小电影应该这样做。

如果你看一下adblock网站,就会有一些关于它如何阻止的迹象:
How does element hiding work?

如果你进一步查看该页面,你会发现传统的chrome探测不起作用,所以你需要尝试解析改变后的DOM。

答案 3 :(得分:4)

AdBlock论坛says这用于检测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);
      }
    }
  }
}

答案 4 :(得分:3)

我认为您可以将广告打印与网站上的网页浏览量进行比较(您可以从分析软件中获取)。