瀏覽器廣告攔截插件是如何判斷有廣告的?


就是通過代碼判斷的,大部分網站比較有節操,會使用穩定的代碼……如果隨便弄個廣告圖片,隨便命名隨便塞個地方,那麼瀏覽器也沒法判斷……


首先這裡一個非常重要的角色就是屏蔽規則,屏蔽這個事情本來很簡單,重要和複雜的事情都是規則,目前這個規則由社區進行專門的維護與發布。

屏蔽的流程是這樣的,先從遠程下載一份的匹配規則,格式和語法有很多種,但最後都會拼組成正則表達式,與當前訪問的網頁的源代碼進行逐一比對和匹配,如果匹配到,就給予隱藏或者刪除,或者攔截事件。

執行引擎是javascript,而現在一般廣告規則還是比較多的,所以效率其實並不怎麼高,而且是比較浪費內存。但是現在大家的電腦配置都上去了,可能不會在意這些細節。

規避被屏蔽的方法也比較簡單,就是不要取一些常見的類名,而用一些看似是內容的類名。比如:

&**用品批發&

另外就是用js延時執行檢測廣告,發現被隱藏或者被刪除就彈出警告或者賣萌,或者重新載入廣告。

但一般的大型網站不會如此沒有節操的。


不是插件,而是擴展。

根據廣告過濾規則來屏蔽的,而規則又是人寫的。

比如中國區的廣告過濾規則EasyList China(Adblock Plus官方規則Easylist China說明與反饋貼(2015.1.14))是cjx在維護,在那之前還有chinalist/chinalist · GitHub ,不過在2014/03/26停止維護了,相關文章:

ChinaList 卒

Adblock Plus 已替換掉默認的 ChinaList,Chinalist 決定終止項目

chinalist停止維護了_Firefox_瀏覽器討論區 卡飯論壇

還有個小眾點的規則xwhyc的tw6過濾規則(2015年1月23日更新,完善中)

能夠這麼精確的屏蔽廣告要感謝上面這些人還有目前的維護者CJX以及廣大反饋規則錯誤的網友。

其他國家的維護者可以看這個 已知的 Adblock Plus 訂閱組

ps:The_skills_needed_to_join_ChinaList · chinalist/chinalist Wiki · GitHub 據我所知維護chinalist是沒有報酬的,沒有問過CJX不知道他是否有報酬什麼的。


以Chrome的AdBlock插件為例。

首先最簡單的就是CSS規則咯。如圖所示,在AdBlock里配置了CSS規則之後,訪問網站將會自動根據規則將命中的元素display: none。這就是將廣告隱藏。如圖所示:

相關代碼如圖:

其次,還是規則。根據規則,阻止廣告聯盟AD等js的下載,如圖,AdBlock阻止Chrome下載這些文件,這樣廣告聯盟的代碼就不會顯示出來。

相關代碼(注釋: When a request starts, perhaps block it.):

接著,是彈窗廣告過濾:AdBlock當檢測到彈窗(opener不為空,即通過window.open打開的頁面),且匹配到規則,就直接關閉該頁面。代碼如圖:

另外,AdBlock還有一些函數,使得被屏蔽的地方不會太醜陋。

這個函數使得一個元素被屏蔽後不會導致頁面錯位。

嗯。

大概就是這樣(我猜的?


個人猜想。

廣告是可以點擊的,會鏈接到廣告目標頁面,而這個鏈接一般由廣告聯盟進行標準化。

根據廣告的鏈接、文字、圖片規則進行判定,選取網頁的目標代碼,刪除該目標廣告代碼。

比如下圖,是瀏覽器中聚划算廣告的代碼,鏈接到http://tanx.com,http://tanx.com是阿里媽媽旗下的營銷平台,根據該鏈接判定,在瀏覽器展現頁面時不展現該代碼段,廣告攔截成功。


主要有幾種方法:

2、阻塞載入

就是阻止該網頁載入某種特徵的廣告,如來自百度或谷歌的廣告。這種方法主要針對於網站插入來自第三方的廣告,比如經常碰到網頁某個位置插入百度或者谷歌等廣告商的廣告,廣告內容不是網站自己決定的;

3、加cookies

對於有些廣告,比如網站的app推廣,第一次進入網站時會彈出來,然後叉掉後加入cookie,第二次訪問就不會出現了。對於這種廣告可以通過瀏覽器主動添加到cookie的方式,這樣用戶第一次訪問也不會跳出廣告;

4、模擬點擊

對於有些可以叉掉的廣告,而又沒有cookie,每次訪問都會出現,瀏覽器可以幫你進行網頁模擬點擊,直接幫點擊那個叉,但碰到網速不好,特別是移動端很可能出現廣告出現一下就消失的效果,用戶體驗不是很好;


技術說, adblock插件里的elemhide.css里的樣式規則將帶有ad的關鍵詞的元素給隱藏了 ,所以,直接修改類名,避免激發adb生效即可。


黑名單鏈接。廣告聯盟都在黑名單里。帶有ad字樣的js,且js里是輸出html代碼。在具體我就不知道了。


和AD相關的class標籤都被屏蔽掉。

相關的廣告聯盟鏈接沒給錢的都給屏蔽掉


推薦閱讀:

為什麼中國有那麼多人用360瀏覽器?
使用 Chrome 时为什么右下角会出现广告弹窗,怎么来的?
為什麼網頁保存軟體或插件都需要重新排版?
為什麼在 OS X 下 Chrome 的流暢度比 Safari 差很多?

TAG:GoogleChrome | 網頁瀏覽器 | 廣告 | Chrome擴展程序 |