煩人的網頁廣告,讨厭的頁面彈窗,想必大家都見過,對于這些亂七八糟的東西,我是最不能忍的,是以每次裝浏覽器後的第一件事就是安裝浏覽器插件去廣告,基本能屏蔽所有網頁廣告和彈窗(對于大部分使用者,中國主流視訊網站播放前、播放中插的視訊廣告最讨厭,特别是播放中插廣告,簡直變态,非要套路使用者去沖會員),而這方面的浏覽器插件也是比較多的,比如adblack等,作用基本一樣,根據一些寫好的正則去判定廣告然後幹掉,給使用者一個原始、相對清爽的頁面;相信很多知道浏覽器有這功能的會選擇使用,有些浏覽器還會自帶廣告屏蔽功能,不用安裝插件;然而有些站點會偵測這些插件并反對這些插件,為什麼那,下面就慢慢道來;
今年年初的時候在Youtube投稿了一份原創視訊,注意到視訊有關投送廣告的資訊,其實在這之前就知道頁面廣告,什麼百度聯盟啥的,不過也就是知道,沒啥特别的看法,Youtube給我的資訊讓我了解投放廣告對于網站意味着什麼,Youtube上有專門的視訊科普教學如何投送廣告,視訊投送廣告的收益等問題,大家有興趣可以去科普下,當然國内應該也有這樣的教程什麼的,過程大同小異,工作原理也相似,大緻的運作流程是以一個身份去申請廣告聯盟的連結代碼,放置到站點頁面中,類似代碼如下:
<script async src="//x.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
在頁面上就會展現相應的廣告内容,出現一些js變量,可以設定出現的位置數量自動填充等:

并且這些廣告的内容不是固定的,會根據使用者的搜尋關鍵字、關注熱點來推薦相應的廣告,也就是說會抓取使用者在浏覽器上的行為曆史資訊(廣告代碼:說的好像其他的不抓一樣,别黑我一個),是以也建議在使用浏覽器的時候使用者資料在退出的時候清掉,避免這些基本沒啥好事的抓取;
看一下頁面填充的dom,也還保留着很濃重的google色彩,一看就知道是google廣告的内容,是以相應的前端方面也會有這樣的要求,要求頁面上的id、class等不能用ad、adver等來命名,在不同的爬蟲規則下可能會被認為是廣告而不收錄;
值得注意的是,相關屏蔽廣告的插件是将廣告代碼隐藏,不是清除,恩就是一個display:none,這個關系到下面的檢測:
頁面投送廣告基本說完了,回到title,網站頁面廣告屏蔽監測,對于很多站點來說,廣告的贊助是一筆不小的支援,是以不希望站點廣告被屏蔽,或者就那麼簡單的被屏蔽,要“抵抗”屏蔽廣告插件,呵呵隻對小白管用,什麼意思,就是這個:
網站廣告被屏蔽的話,就會提示使用者關掉插件,以便他們能推送廣告,以便你會點廣告連結,以便你為廣告連結增加流量進而廣告商會付錢給這個網站,咳咳,也許你會懷疑這能有多少刀,流量大的網站威力不容小觑;是以原理需求情況都理清楚了,如果你有個站點不想被屏蔽廣告可以這樣做:
jQuery(document).ready(function($) {
//文檔加載完後檢查廣告聯盟代碼設定有沒有起效,或者簡單粗暴檢測廣告位置有沒有被"display:none"
setTimeout(function() {
//typeof(window.google_jobrunner) === "undefined"
// document.getElementById("div").css("display")===\'none\'
if ( $("#AD").is(":hidden") ) {
//如果是就加載遮罩層提示
jQuery("body").html(\'<div class="san_wrapper"> \
<div class="san_inner"> \
<h2>We do not like AdBlock.</h2> \
</div>\');
}
}, 10000);
});
簡單粗暴簡單粗暴有木有,相對于adblack裡對廣告的驗證正則,檢測廣告代碼是否被屏蔽非常簡單粗暴,就能達到目的,admin可以根據自身需求定制相關的代碼提示,友好一點,留住使用者,保護流量;
原版2016-12-08釋出于xuechenlei.com