廣告科技 - Ad Blocker
很多人都有裝Ad Blocker,但你可能會好奇到底Ad Blocker的原理是什麼。
Ad Blocker 最簡單的實作方式有兩種,一種是阻擋Ad Request,另一種是從頁面上移除廣告框。兩種都屬於pattern matching。
Blacklist
以Ad Blocker Plus為例,裡面的blacklist用是easylist,一個開源的廣告黑名單。長的是下面這樣子。
&ad_channel=
&ad_classid=
&ad_code=
&ad_height=
&ad_ids=
&ad_keyword=
...
凡是match到這個lsit裡面的request都會被擋掉,實際擋的方式應該是直接用chrome extension API。
移除頁面廣告
基本上原理與blcklist一樣,不過他match的是webpage elements。比如說
<ad><iframe/></ad>
這會移除掉所有在 <ad>
tag裡的iframe。
結論
說起來簡單,但做起來卻是困難的,最主要的困難點便是效能,頁面上有數百數千的element,每一個網站的request同樣至少數十數百,你要最match blacklist的話最簡單的方法是O(n^2),但這很明顯的不夠快,有興趣的話可以看看這篇文章,Adblock Plus and (a little) more, Investigating filter matching algorithms。