browser -如何判断web客户端是否阻止了广告?

Translate

记录有关已将浏览器设置为阻止广告的访问我的网站的访问者数量的统计信息的最佳方法是什么?

This question and all comments follow the "Attribution Required."

所有的回答

Translate

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

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

阻止用户阻止广告的最佳方法是使内联文本广告由服务器生成,并放入html内。

来源
Translate

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

<img src="./ads/viagra.jpg?{user.id}"/>

这样一来,您可以查看哪些用户看到了哪些广告。

来源
Translate

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

接下来的事情是看看它们是否阻挡了闪光灯,应该看一小部电影。

如果您查看adblock网站,则有一些迹象表明它如何阻止:
元素隐藏如何工作?

如果进一步浏览该页面,您会发现常规的chrome探测无法正常工作,因此您需要尝试解析更改后的DOM。

来源
Translate

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);
      }
    }
  }
}
来源
Translate

我想您可以将广告印刷品与网站上的浏览量进行比较(可以从分析软件中获得)。

来源