在 javascript 中使用 gpt 回调检测 Adblocker

Adblocker detection using gpt callback in javascript

我见过几种检测用户是否启用广告拦截的方法,例如加载 ads.js 文件并在加载后更改变量。有没有一种方法可以简单地在 google doubleclick gpt 回调中检测到这一点?

基本上我只想调查一些广告视图差异,看看有多少用户没有看到广告启用了广告拦截器。我注意到我正在尝试使用两个广告拦截器,gpt 回调仍然被触发并且 iframe 加载了空的 body 标签。

还没有找到在 gpt 中检测广告块的方法。我修改了我看到加载 ads.js 文件的另一个解决方案。下面我正在加载 ads.js 然后从同一服务器加载另一个外部文件以调用对函数的调用以跟踪用户是否启用了广告拦截器。这可以通过设置超时来完成,但我觉得这样做可以减少 运行 进入异步问题且 ads.js 未加载的机会。如果你要使用这个,请检查 vars 是否有拼写错误我不得不去掉一个品牌名称。

内联 js

  // Adblock detection with external file.
  var adsEnabled = false;
  adBlock = function() {
    // Omniture reporting for ad blocking.
    if(!adsEnabled) {
      document.getElementById('ad-blocker').innerHTML = '<div class="alert alert-box">Ad blocker enabled, no ads should appear.</div>';
      // Omniture ad block var to false.
    } else {
      document.getElementById('ad-blocker').innerHTML = '<div class="success alert-box">Ad blocker disabled, you should see ads.</div>';
      // Omniture ad block var to true.
    }
  };
  // Ad blockers will block this file.
  document.write('<scr' + 'ipt type="text/javascript" src="/js/ads.js"><\/scr' + 'ipt>');
  // adBlock() is called from an external file to prevent async issues.
  document.write('<scr' + 'ipt type="text/javascript" src="/js/adblockInit.js"><\/scr' + 'ipt>');

ads.js

adsEnabled = true;

adblockInit.js

adBlock();

html

<div id="ad-blocker">No data.</div>

将此方法用于脚本拦截广告拦截器。

<script src="http://www.googletagservices.com/tag/js/gpt.js" onload="callback()" onerror="error()"></script>

function callback() {
  // in this case you will need to verify the gpt object isn't blank for some ad blockers in chrome
}

function error() {
  // most script blocking ad blockers will end up here.  All script blocking ad blockers (ghostery, disconnect) I have seen in firefox end up here.
}