JS判断网站广告是否被拦截

作者:小鱼干 发布时间: 2020-07-13 文章热度: 42 本文共7878个字,预计阅读时间需要20分钟。

前言

很多草根站长,为了维持服务器的费用,会在网站上加入一些广告牟利!然后好景不长,现在的广告拦截手段是越来越厉害了,以至于威胁到了我们草根级别的中小站长了,这里也收集了一些关于如何判断网页广告是否被拦截过滤教程(反广告屏蔽教程),我们需要调用的事js代码!

JS判断网站广告是否被拦截插图

面对广告被拦截,让浏览器把你的网站加入白名单,不可能!让浏览器取消广告拦截功能更不实际。我们只能是尽量减少损失了,下面写了个JS判断网页广告是否被浏览器拦截过滤的代码,经过使用多款浏览器测试,基本上都能准确判断。这样我们可以通过判断,然后提示用户关闭广告拦截功能,或者用自定义广告替换原来的广告,再或者来个狠点的直接让用户无法访问(不建议这样做)。这里是本站关于页面广告屏蔽检测,隐藏下载地址的教程!

教程如下:

<style>
.k7692b{
    font-size: 18px;
}
.close-btn{
    position: absolute;
    right: 5px;
    top:-15px;
    background: #333;
    border-radius:50%;
    height: 25px;
    width: 25px;
    text-align: center;
    cursor: pointer;
}
.k7692b-hide{
    display: none;
}
.k7692b-1{
    width: 100%;
    background: #e84206;
    color: #fff;
    text-align: center;
    position: fixed;
    bottom: 0px;
    padding: 10px;
    z-index: 100000;
}
/** Full Screen Style **/
.k7692b-2{
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, .95);
    z-index: 100000;
    position: fixed;
    top: 0;
    right: 0;
}
.k7692b-2 .k7692b-body,.k7692b-3 .k7692b-body{
    background: #fff;
    color: #666;
    text-align: center;
    position: fixed;
    margin: auto;
    top: 200px;
    right: 10%;
    width: 80%;
    padding: 20px;
    z-index: 100001;
    border-radius: 10px;
}
.k7692b-2 .close-btn,.k7692b-3 .close-btn{
    background: #e84206;
    color: #fff;
}
/**  Flying Box Style **/
.k7692b-3 .k7692b-body{
    box-shadow: 2px 2px 2px #333;
}

</style>
<script>
    
    (function(window) {
        var KillAdBlock = function(options) {
            this._options = {
                checkOnLoad:        false,
                resetOnEnd:         false,
                loopCheckTime:      50,
                loopMaxNumber:      5,
                baitClass:          'pub_300x250 pub_300x250m pub_728x90 text-ad textAd text_ad text_ads text-ads text-ad-links',
                baitStyle:          'width: 1px !important; height: 1px !important; position: absolute !important; left: -10000px !important; top: -1000px !important;',
                debug:              false
            };
            this._var = {
                version:            '1.2.0',
                bait:               null,
                checking:           false,
                loop:               null,
                loopNumber:         0,
                event:              { detected: [], notDetected: [] }
            };
            if(options !== undefined) {
                this.setOption(options);
            }
            var self = this;
            var eventCallback = function() {
                setTimeout(function() {
                    if(self._options.checkOnLoad === true) {
                        if(self._options.debug === true) {
                            self._log('onload->eventCallback', 'A check loading is launched');
                        }
                        if(self._var.bait === null) {
                            self._creatBait();
                        }
                        setTimeout(function() {
                            self.check();
                        }, 1);
                    }
                }, 1);
            };
            if(window.addEventListener !== undefined) {
                window.addEventListener('load', eventCallback, false);
            } else {
                window.attachEvent('onload', eventCallback);
            }
        };
        KillAdBlock.prototype._options = null;
        KillAdBlock.prototype._var = null;
        KillAdBlock.prototype._bait = null;
        
        KillAdBlock.prototype._log = function(method, message) {
            console.log('[KillAdBlock]['+method+'] '+message);
        };
        
        KillAdBlock.prototype.setOption = function(options, value) {
            if(value !== undefined) {
                var key = options;
                options = {};
                options[key] = value;
            }
            for(var option in options) {
                this._options[option] = options[option];
                if(this._options.debug === true) {
                    this._log('setOption', 'The option "'+option+'" he was assigned to "'+options[option]+'"');
                }
            }
            return this;
        };
        
        KillAdBlock.prototype._creatBait = function() {
            var bait = document.createElement('div');
                bait.setAttribute('class', this._options.baitClass);
                bait.setAttribute('style', this._options.baitStyle);
            this._var.bait = window.document.body.appendChild(bait);
            
            this._var.bait.offsetParent;
            this._var.bait.offsetHeight;
            this._var.bait.offsetLeft;
            this._var.bait.offsetTop;
            this._var.bait.offsetWidth;
            this._var.bait.clientHeight;
            this._var.bait.clientWidth;
            
            if(this._options.debug === true) {
                this._log('_creatBait', 'Bait has been created');
            }
        };
        KillAdBlock.prototype._destroyBait = function() {
            window.document.body.removeChild(this._var.bait);
            this._var.bait = null;
            
            if(this._options.debug === true) {
                this._log('_destroyBait', 'Bait has been removed');
            }
        };
        
        KillAdBlock.prototype.check = function(loop) {
            if(loop === undefined) {
                loop = true;
            }
            
            if(this._options.debug === true) {
                this._log('check', 'An audit was requested '+(loop===true?'with a':'without')+' loop');
            }
            
            if(this._var.checking === true) {
                if(this._options.debug === true) {
                    this._log('check', 'A check was canceled because there is already an ongoing');
                }
                return false;
            }
            this._var.checking = true;
            
            if(this._var.bait === null) {
                this._creatBait();
            }
            
            var self = this;
            this._var.loopNumber = 0;
            if(loop === true) {
                this._var.loop = setInterval(function() {
                    self._checkBait(loop);
                }, this._options.loopCheckTime);
            }
            setTimeout(function() {
                self._checkBait(loop);
            }, 1);
            if(this._options.debug === true) {
                this._log('check', 'A check is in progress ...');
            }
            
            return true;
        };
        KillAdBlock.prototype._checkBait = function(loop) {
            var detected = false;
            
            if(this._var.bait === null) {
                this._creatBait();
            }
            
            if(window.document.body.getAttribute('abp') !== null
            || this._var.bait.offsetParent === null
            || this._var.bait.offsetHeight == 0
            || this._var.bait.offsetLeft == 0
            || this._var.bait.offsetTop == 0
            || this._var.bait.offsetWidth == 0
            || this._var.bait.clientHeight == 0
            || this._var.bait.clientWidth == 0) {
                detected = true;
            }
            if(window.getComputedStyle !== undefined) {
                var baitTemp = window.getComputedStyle(this._var.bait, null);
                if(baitTemp.getPropertyValue('display') == 'none'
                || baitTemp.getPropertyValue('visibility') == 'hidden') {
                    detected = true;
                }
            }
            
            if(this._options.debug === true) {
                this._log('_checkBait', 'A check ('+(this._var.loopNumber+1)+'/'+this._options.loopMaxNumber+' ~'+(1+this._var.loopNumber*this._options.loopCheckTime)+'ms) was conducted and detection is '+(detected===true?'positive':'negative'));
            }
            
            if(loop === true) {
                this._var.loopNumber++;
                if(this._var.loopNumber >= this._options.loopMaxNumber) {
                    this._stopLoop();
                }
            }
            
            if(detected === true) {
                this._stopLoop();
                this._destroyBait();
                this.emitEvent(true);
                if(loop === true) {
                    this._var.checking = false;
                }
            } else if(this._var.loop === null || loop === false) {
                this._destroyBait();
                this.emitEvent(false);
                if(loop === true) {
                    this._var.checking = false;
                }
            }
        };
        KillAdBlock.prototype._stopLoop = function(detected) {
            clearInterval(this._var.loop);
            this._var.loop = null;
            this._var.loopNumber = 0;
            
            if(this._options.debug === true) {
                this._log('_stopLoop', 'A loop has been stopped');
            }
        };
        
        KillAdBlock.prototype.emitEvent = function(detected) {
            if(this._options.debug === true) {
                this._log('emitEvent', 'An event with a '+(detected===true?'positive':'negative')+' detection was called');
            }
            
            var fns = this._var.event[(detected===true?'detected':'notDetected')];
            for(var i in fns) {
                if(this._options.debug === true) {
                    this._log('emitEvent', 'Call function '+(parseInt(i)+1)+'/'+fns.length);
                }
                if(fns.hasOwnProperty(i)) {
                    fns[i]();
                }
            }
            if(this._options.resetOnEnd === true) {
                this.clearEvent();
            }
            return this;
        };
        KillAdBlock.prototype.clearEvent = function() {
            this._var.event.detected = [];
            this._var.event.notDetected = [];
            
            if(this._options.debug === true) {
                this._log('clearEvent', 'The event list has been cleared');
            }
        };
        
        KillAdBlock.prototype.on = function(detected, fn) {
            this._var.event[(detected===true?'detected':'notDetected')].push(fn);
            if(this._options.debug === true) {
                this._log('on', 'A type of event "'+(detected===true?'detected':'notDetected')+'" was added');
            }
            
            return this;
        };
        KillAdBlock.prototype.onDetected = function(fn) {
            return this.on(true, fn);
        };
        KillAdBlock.prototype.onNotDetected = function(fn) {
            return this.on(false, fn);
        };
        
        window.KillAdBlock = KillAdBlock;
        
        if(window.killAdBlock === undefined) {
            window.killAdBlock = new KillAdBlock({
                checkOnLoad: true,
                resetOnEnd: true
            });
        }
    })(window);
    function show_message()
    {
        kill_adBlock_message_delay = kill_adBlock_message_delay * 1000;
        kill_adBlock_close_automatically_delay = kill_adBlock_close_automatically_delay * 1000;
        setTimeout(function(){
            jQuery('.k0c925').html(kill_adBlock_message);
            jQuery('.k0c925-container').fadeIn();
         }, kill_adBlock_message_delay);
        if(kill_adBlock_close_automatically_delay>0 && kill_adBlock_close_automatically==1)
        {
            setTimeout(function(){
                jQuery('.close-btn').trigger('click');
             }, kill_adBlock_close_automatically_delay);
        }
    }
    function adBlockNotDetected(){}
    jQuery(document).ready(function(){
        jQuery('.close-btn').click(function(){
            jQuery('.k0c925-container').fadeOut('k0c925-hide');
        });
    });
    var kill_adBlock_status = 1;
    var kill_adBlock_message = '</br><h4>你似乎拦截了本站的收入来源,请关闭广告拦截以便正常浏览网站内容!</h4></br>';
    var kill_adBlock_message_delay = 1;
    var kill_adBlock_close_btn = 0;
    var kill_adBlock_close_automatically = 1;
    var kill_adBlock_close_automatically_delay = 1;
    var kill_adBlock_message_type = 2;
    function adBlockDetected() {
      show_message();
    }
    
    if(typeof killAdBlock === 'undefined') {
        adBlockDetected();
    } else {
        killAdBlock.onDetected(adBlockDetected).onNotDetected(adBlockNotDetected);
    }
</script>
<div class="k7692b-container k7692b-2 k7692b-hide">
    <div class="k7692b-body">
                        <img src="/logo.png">
                <div class="k7692b"></div>
    </div>
</div>

 

免责声明

0、网站资源均通过网络等合法渠道获取,该资料仅作为学习交流,其版权归出版社或者原作者所有,本网站不对所涉及的版权问题负责。网站售卖的价格绝对不是商品价格,而是整理资料的成本,如原作者认为侵权,请联系我们,我们立即删除文章,谢谢!
本站保证原原本本的完整性下载原始文件,并不保证资料的准确性,可靠性,对此产生的问题不做任何解释

1、博主在此发文(包括但不限于汉字、拼音、拉丁字母)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人局部或全部同意、支持或者反对观点。如需要详查请直接与键盘生产厂商法人代表联系。挖井挑水无水表,不会网购无快递。

2、网站资源均通过网络等合法渠道获取,该资料仅作为学习交流,其版权归出版社或者原作者所有,下载后请于24小时内删除,如有真实需要请支持正版!因下载本站任何资源造成的损失,全部责任由使用者本人承担!本网站不对所涉及的版权问题负责。网站售卖的价格绝对不是商品价格,而是整理资料的成本。

3、如果你是版权方,认为本文内容对您的权益有所侵犯,请联系博主,并参照 侵删联系 的说明提交相应的证明材料,待博主进行严格地审查和背景调查后,情况属实的将在三天内将本文删除或修正。

4、博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。

5、博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章,请原谅博主成为一个无耻的文档搬运工!

6、博主只是一名普通的互联网从业者,不懂修电脑,不会卖电脑,不会帮你盗号,不会破解开机密码,找不回你丢失的手机等,如有这样的想法请绕道!

7、另外还有部分家里有矿的用户就希望我帮他服务,对于这种有钱人变态的需求,我一般都不会拒绝的。

8、本站虚拟货币充值或数字资源购买后,均不可以任何理由退换!购买前(请慎重考虑)

9、附注:根据二○○二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。

10、数字千年版权法案(DMCA)
琼鲸网网站接受受版权保护的内容DMCA侵权通知。


琼鲸网络 » JS判断网站广告是否被拦截

常见问题FAQ

免费下载或者SVIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 SVIP介绍。
充值&SVIP会员需知

SVIP会员请遵守以下规则:

1.凡是来转载倒卖资源的会员请不要加入SVIP否则你会得不偿失!一经查出不退余额!
2.SVIP会员仅限注册人一人使用,若本站发现共享SVIP会员行为,将立即停用对应账号的SVIP会员权限。。
3.SVIP会员和充值属于虚拟服务,付款后不能够申请退款。如付钱前有任何疑问,联系站长处理
4.SVIP资源仅限SVIP会员下载学习使用,不能够通过其他网站分享资源,若本站发现分享SVIP资源到其他网站,将立即停用对应账号的SVIP会员权限。

问:免费下载或者SVIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。

问:购买了SVIP会员服务后,能否申请退款?
在购买SVIP会员前,请阁下充分考虑清楚。一旦成功开通SVIP会员资格后,均不能以任何理由申请退款,请知悉。

问:为什么付款了未开通SVIP会员?
我们已经与支付宝和微信实现了支付对接,付款未能正常开通SVIP会员,可能是由于支付数据回传失败导致。若您已经确定支付但未开通SVIP,点击这里,提交人工审核开通SVIP会员。

问:SVIP会员剩余时间查询?
您可以登录琼鲸网络网站,访问会员中心查看SVIP到期时间。

问:网站货币充值后是否可退?
网站货币是虚拟货币只能在本站使用购买SVIP或资源,一旦充值均不能以任何理由申请退款,(请慎重充值)

问:购买资源是否可退换?
数字资源具有可复制黏贴功能一旦购买均不能以任何理由申请退换(购买前请慎重考虑)

提示下载完但解压或打开不了?
最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或 联络我们.。
网站所有素材99%都是采用百度网盘、天翼云盘、蓝奏云网盘存储
购买前请确定您可以正常打开所采用的网盘链接(如百度网盘)再进行充值!如因区域限制或自身软硬件设备等原因而打不开或下载不了,本站概不负责。百度云的速度,请自行测试,由于不可控的原因,本站不对百度云产生的下载慢做任何解释。总之不能使用百度网盘的地区,请自己想办法解决!。

发表评论

296+

用户总数

760+

资源总数

0+

24小时内更新

2020年7月13日

最后更新时间