如何使用JavaScript检测广告拦截器
在本文中,我们将使用JavaScript开发一个广告拦截器检测器。广告拦截器是用于阻止网站上显示的广告的扩展程序。广告拦截器阻止了用于显示广告的DOM和脚本代码。广告拦截器具有大量的拦截列表文件名,并且它们会检测网站是否使用了这些文件中的任何文件,它会阻止对那些文件的下载,从而使广告脚本不会加载。easylist.text是一个包含大多数广告拦截文件名的庞大拦截列表。
根据一项调查,10%的人使用广告拦截器浏览没有广告的网页。这意味着网站的收入减少了10%。对于那些完全依赖广告的网站来说,这是令人沮丧的,有些网站使用广告拦截器检测脚本,限制用户在不禁用广告拦截器的情况下进入网站(但从SEO角度来看,这是一个坏主意)。
使用欺骗脚本检测广告拦截器: 使用这种方法,您需要创建一个 div 以类名 ad-zone . 使该div高度为1像素。然后编写一个脚本,检查父 div 的offset height 是否变为零,如果是,则说明用户正在使用广告拦截器。广告拦截器阻止了渲染该 div ,因此offset height变为零。如果该 div 的offset height保持不变,则浏览器中没有广告拦截器。原因是类名 ad-zone , 广告拦截器会检查哪个元素具有类名类似于广告的样式。
easylist.text中包含了大量这样的类名。 **** 每个广告拦截器都有自己的一套类名,它们将被阻止,因此我们不应仅依靠一个类名。一些常见的类名是 textads、banner-ads、banner_ads、ad-unit、ad-zone、ad-space ,广告拦截器将用于检测广告。
例子:
输出:
- 我们在jsbin.com上运行我们的代码,并使用AdBlock扩展程序。当广告拦截器运行时,可以看到以下输出。
- 当关闭jsbin.com的广告拦截器时,可以看到以下输出。
例子2: 以下代码可以在