网页页面检验 AdBlock 的 6 种方式

2021-01-21 13:18 jianzhan

网页页面检验 AdBlock 的 6 种方式


短视頻,自新闻媒体,达人种草1站服务

一些网页页面上泛滥着让人厌烦的广告宣传,这些广告宣传不但阻拦了信息内容的获得,有的还比较严重危害了访问者的情绪。非常是一些绝不有关的多新闻媒体广告宣传和弹出式对话框,不但令人觉得被骚扰,还很非常容易误点到,消耗珍贵的時间。由此便诞生了名字鼎鼎的混合开发 AdBlock 软件,在任何流行访问器上都有它的拓展或软件,客户能够安裝它并屏蔽绝大部分的广告宣传。

既然 AdBlock 有检验广告宣传并屏蔽它们的方式,做为网页页面创作者,实际上也是有反过来检验 AdBlock 的方式。

为何要检验 AdBlock

这是1个有争执的难题:客户有挑选不要看广告宣传、在访问器网页页面上消毁广告宣传的支配权,网站也是有捆缚广告宣传和信息内容1同发放给你并扣除广告宣传商展现花费的随意。这二者都不可以相互之间干涉,而且在沒有确立法律法规政策法规的自然环境下,你能够预防我,我还可以预防你。

 

除向 AdBlock 立即递交 可接纳的广告宣传网站 申请办理进到白名单以规定立即免受屏蔽以外,下面详细介绍 6 种从网站自身考虑的检验 AdBlock 并开启有关实际操作的方式。

下列的方式全是以不改动广告宣传编码自身的基本上进行的,由于诸如 Google AdSense 的广告宣传同盟规定不可改动编码。

检验广告宣传控制模块可见高宽比

这是1种很质朴的方式,基本原理也很简易,便是检验对应广告宣传控制模块的高宽比是不是小于它应有的高宽比,若小于就表明它被置空塌陷了,也即表明开启了 AdBlock。

编码相近以下

if( document.getElementById('ads').clientHeight 90 ){
//AdBlock Detected
}

此计划方案的可行性为中。一些状况下 AdBlock 屏蔽了某个广告宣传以后的解决情况较为独特,不容易使得广告宣传控制模块塌陷,而是保持设置的高宽比显示信息空白,那个情况下就无论用了。

检验可见广告宣传的个数

这是1个和上述相近的方式,也很质朴,那便是检验当今网页页面上的广告宣传个数是不是做到预期,由于一些广告宣传将会并沒有开启 AdBlock 的标准得以显示信息,因此能够运用查验广告宣传的个数的方式来做到目地。

依靠 jQuery,编码相近以下

if( $('.ads').filter(':visible').length 3 ){
// Ads showing less than 3
// AdBlock Detected
}

此计划方案的可行性依然为中,理由和上1个方式相近。

检验 google_jobrunner

这个方式仅仅可用于 Google AdSense 广告宣传。在载入了 AdSense 的广告宣传编码以后,有1个 window.google_jobrunner 目标被创建,而 AdBlock 会阻拦 AdSense 编码的载入,此时这个目标将不存在。大家能够靠这1点来检验 AdBlock。

其编码看起来相近于

if ( typeof(window.google_jobrunner) != 'object' ){
// AdSense js not loaded
// AdBlock detected
}

此计划方案的可行性为高,由于这充足运用了 AdSense 的特性,而且十分精确,高效率也很高。

检验 adsbygoogle 种类是不是是数字能量数组

这个方式仅仅可用于 Google AdSense 广告宣传。假如你应用了含有 ins 标识的新多线程编码,则可使用这个方式。其基本原理是,adsbygoogle 在当今网页页面载入时被原始化为1个数字能量数组,而当 AdSense 的编码被载入时,它被演变为1个目标 object,而 AdBlock 会阻拦 AdSense 编码的载入。因而,大家根据查验 adsbygoogle 的情况便可以了解 AdBlock 有木有安裝。

其编码应当相近于

window.setTimeout(function(){
if(adsbygoogle instanceof Array) {
// AdSense js not loaded
// AdBlock detected
} }, 2000);

此计划方案的可行性为高,由于这充足运用了 AdSense 的特性,而且十分精确,高效率也很高。编码中的 setTimeout 是以便填补 AdSense 编码运作所花销的時间,大概两秒够了。

应用 Ajax 仿真模拟1个广告宣传编码载入恳求

大家了解 AdBlock 会阻拦广告宣传编码的载入,因而,大家能够根据尝试仿真模拟载入1个广告宣传编码 ads.js ,假如AdBlock 屏蔽了这次个人行为,能够开启其不成功的方式,做到检验的目地。

依靠 jQuery,大家能够这样写

$.ajax({
url: "ads.js",
dataType: "script"
}).fail(function () {
// Ads.js not loaded
// AdBlock detected
});

此计划方案的可行性很高,由于这戳中了 Adblock 的弱点。在其中 ads.js 自身能够是1个空文档,但它不可以不存在,不然会产生 404 不正确,致使误判。因此你必须在这个文件目录下放1个 ads.js 文档。你乃至能够把它叫做 adsbygoogle.js 文档。

如图所示,载入 ads.js 时,个人行为被 AdBlock 阻拦:

 

载入附加的 ads.js 协助分辨

大家了解 AdBlock 会屏蔽网页页面中相近名字为 adsbygoogle.js、ads.js 的脚本制作文档,因此大家能够运用这个特性来引进1个自身的 ads.js 来协助分辨。怎样完成呢?

最先建立1个 ads.js 文档,这个文档里仅有1句话:

var isAdEnabled = !!1;

随后,大家在网页页面网页页面上尝试引进这个脚本制作文档:

script src="ads.js" type="text/javascript" /script

假如存在 AdBlock,ads.js 会被屏蔽载入,因而 isAdEnabled 这个自变量就不容易被创建。

因而,大家这样来检验:

var isAdEnabled = isAdEnabled || !1;
if( !isAdEnabled ){
//Ads.js not loaded
// AdBlock detected
}

这样,假如 ads.js 被屏蔽了,isAdEnabled 就会被原始化为 false。这个计划方案的将会性也很高。

写在最终

不仅有上述的检验编码,也有人乃至做好了 js 软件、wordpress 软件能够立即现成的用,它们作用丰富多彩而且能够自定设定。你能够依据自身的状况挑选钟意的计划方案。但在此理应留意的是,广告宣传其实不一直坏的,相反,互联网上存在着许多有使用价值的广告宣传。假如自身的网站由于广告宣传的难题被客户抵触,那末广告宣传出示商和网站后台管理员都应当想一想如何下手去改进这1切,而不可该惹恼客户而让她们用上 AdBlock,最终彼此都不利于失。