如何使用js制作检测广告拦截器

作者 : 西楼源码网 本文共1343个字,预计阅读时间需要4分钟 发布时间: 2019-11-5 共136人阅读
互联网的潜规则之一是,大多数内容都是“免费的”……这是因为网页上充斥着广告和跟踪器。在早期的互联网时代,这并不是一个大问题,但是跟踪器和广告已经变得如此具有侵略性,并且毫无侵略性,以至于您几乎需要使用广告拦截器浏览器扩展程序。

Ad Blocker Plus非常受欢迎,像Brave这样的浏览器以围绕广告屏蔽为中心。通常,我会去某个网站查看禁用我的广告拦截器的模式,这使我开始思考检测广告拦截器的最佳方法。经过各种测试和试验,我发现了一种检测广告拦截器的非常简单的方法!

本质上,我的方法尝试加载Google的广告服务JavaScript文件,如果请求失败,则很可能是由于用户具有广告拦截器造成的:

// Determines if the user is likely using an ad block extension
async function checkAdBlocker() {
  // Used to cache the result
  let isBlocked;

  async function tryRequest() {
    try {
      return fetch(
        new Request("https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js", {
          method: 'HEAD',
          mode: 'no-cors'
        }))
        .then(function(response) {
          // Google Ads request succeeded, so likely no ad blocker
          isBlocked = false;
          return isBlocked;
        }).catch(function(e) {
          // Request failed, likely due to ad blocker
          isBlocked = true;
          return isBlocked;
        });
    } catch (error) {
      // fetch API error; possible fetch not supported (old browser)
      // Marking as a blocker since there was an error and so
      // we can prevent continued requests when this function is run
      console.log(error);
      isBlocked = true;
      return isBlocked;
    }
  }

  return isBlocked !== undefined ? isBlocked : await tryRequest();
}

其背后的逻辑如下:

  • Google的广告文件,adsbygoogle.js是完美的示例文件,因为它被认为是敌人1号-由于Google广告服务的受欢迎程度,广告拦截者希望屏蔽的第一个文件
  • 该文件对于Google的业务也至关重要,因此可以保证99.999999999%的正常运行时间
  • 网络问题几乎没有发生的机会。误报可能来自网络连接问题或服务人员状况不佳
  • 如果您不考虑adsbygoogle.js最好的示例文件,则可以轻松地将其切换为其他任何URL

从内容创建者的角度来看,navigator理想的是让您知道是否使用了广告拦截器的属性……但这不会很快发生(…永远不会)。但是,使用这样的简单代码段,可以为用户启用广告拦截程序提供合理的提示!

免责声明: 本站提供的资源,都来自网络,版权争议与本站无关,所有内容及软件的文章仅限用于学习和研究目的。不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,我们不保证内容的长久可用性,通过使用本站内容随之而来的风险与本站无关,您必须在下载后的24个小时之内,从您的电脑/手机中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
侵删请致信站长

西楼网 » 如何使用js制作检测广告拦截器

常见问题FAQ