Phát hiện plugin chặn quảng cáo trình duyệt khi khách truy cập Blog

Ngày nay có rất nhiều plugin hoặc phần mềm hỗ trợ chặn quảng cáo trên trình duyệt. Điều này gây thiệt hại rất lớn cho publisher những nhà xuất bản có website đang chạy quảng cáo adsense của Google hay các mạng quảng cáo khác. Nếu lượng khách truy cập vào Blog nhiều mà quảng cáo không được hiển thị do bị chặn sẽ làm giảm đáng kể đến giá và mất đi cơ hội thu nhập.

Trên mạng cũng chia sẽ nhiều cách vô hiệu quảng cáo, nay mình cũng đưa ra 2 phương pháp tự phát hiện và đưa ra nhắc nhở tắt khi khách truy cập Blog đang sử dụng adblock. Cả 2 cách mình đưa ra đều chặn khách truy cập nếu không vô hiệu adblock.

Cách 1: Sử dụng Style và Javascript


Cách này chỉ phát hiện nếu đang chạy quảng cáo Adsense của Google

Bước 1: Chèn style trước </b:skin>


#unblocker{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#fff;opacity:0.980000019073486328125;display:block;z-index:9999;overflow:hidden}

#unblocker p{color:#666;text-align:center;margin:15% auto;font-size:1.5rem;max-width:750px;display:table;line-height:1.5}

#unblocker p:before{font-family:fontawesome;text-align:center;padding:0;font-weight:400}

#unblocker p:before{content:'\f023';background:#1DBF69;color:#fff;display:block;width:2em;height:2em;line-height:2em;font-size:2.5rem;clear:both;border-radius:100%;margin:0 auto 3%}

#unblocker p:hover:before{content:'\f13e'}#unblocker p a,#unblocker p i{font-size:15px}

#unblocker p a,#unblocker p i{font-size:15px}

#unblocker ~ *{display:none}


Bước 2: Chèn javascript trước thẻ đóng </body>


<script>

//<![CDATA[

var mql = window.matchMedia('screen and (min-width: 60em)');if (mql.matches){

(function(w,u){var d=w.document,z=typeof u;function unblocker(){function c(c,i){var e=d.createElement('div'),b=d.body,s=b.style,l=b.childNodes.length;if(typeof i!=z){e.setAttribute('id',i);s.margin=s.padding=0;s.height='100%';l=Math.floor(Math.random()*l)+1}e.innerHTML=c;b.insertBefore(e,b.childNodes[l-1])}function g(i,t){return !t?d.getElementById(i):d.getElementsByTagName(t)};function f(v){if(!g('unblocker')){c('<p>Vui lòng tắt plugin chặn quảng cáo và tải lại trang! Xin cảm ơn.<br/>Please disable your Adblocker to access this site! Thanks.</p>','unblocker')}};(function(){var a=['ad','ads','adsense'],l=a.length,i,s='',e;for(i=0;i<l;i++){if(!g(a[i])){s+='<a id="'+a[i]+'"></a>'}}c(s);l=a.length;setTimeout(function(){for(i=0;i<l;i++){e=g(a[i]);if(e.offsetParent==null||(w.getComputedStyle?d.defaultView.getComputedStyle(e,null).getPropertyValue('display'):e.currentStyle.display)=='none'){return f('#'+a[i])}}},250)}());(function(){var t=g(0,'img'),a=['/adsales/ad','/adsenceSearch.','/adtools2.','/adv2.','/partner_ads_','_ads.html','.468x60-'],i;if(typeof t[0]!=z&&typeof t[0].src!=z){i=new Image();i.onload=function(){this.onload=z;this.onerror=function(){f(this.src)};this.src=t[0].src+'#'+a.join('')};i.src=t[0].src}}());(function(){var o={'http://pagead2.googlesyndication.com/pagead/show_ads.js':'google_ad_client'},S=g(0,'script'),l=S.length-1,n,r,i,v,s;d.write=null;for(i=l;i>=0;--i){s=S[i];if(typeof o[s.src]!=z){n=d.createElement('script');n.type='text/javascript';n.src=s.src;v=o[s.src];w[v]=u;r=S[0];n.onload=n.onreadystatechange=function(){if(typeof w[v]==z&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){n.onload=n.onreadystatechange=null;r.parentNode.removeChild(n);w[v]=null}};r.parentNode.insertBefore(n,r);setTimeout(function(){if(w[v]===u){f(n.src)}},2000);break}}}())}if(d.addEventListener){w.addEventListener('load',unblocker,false)}else{w.attachEvent('onload',unblocker)}})(window);};

//]]>

</script>


Bước 3: Chèn đoạn html ngay dưới <body>


<div><a id='ad'/><a id='ads'/><a id='adsense'/></div>


Lưu template

Cách 2: Chỉ sử dụng Javascript


Cách này đơn giản và có thể phát hiện nếu khách sử dụng chặn quảng cáo trình duyệt chỉ cần chèn link sau trước thẻ đóng </body> là xong


<script src='//cdn.rawgit.com/blogthuthuatwin10/adblocker/master/adblocker.min.js'></script>


Nếu sau này mình tìm được cách nào hay hơn sẽ bổ sung vào bài sau.