Google
 

星期二, 2月 28, 2017

擋掉惱人的廣告

網路上的廣告已經變成許多人的重要收入, 但也愈來愈猖獗, 愈來愈惹人厭。
之前最讓我厭煩的就是在看網頁時, 突然一個廣告大剌剌地跳出來擋在網頁上面, 逼得你得把它按掉才能繼續看你本來要看的東西。
現在有一種更過份的, 出現在Android手機的app上, 影片式的廣告, 一播就要播三四十秒, 關都關不掉。
這些, 根本是一種流氓的行徑!

要擋掉廣告, 方法很多。
最常見的是在手機或電腦上裝一個軟體攔截廣告, 如Adblock plus。或是用這篇介紹的方式改掉手機的DNS
但這種方式有兩個缺點: 一來是每支手機都要裝, 二來, 這些軟體會影響手機的效能, 也增加耗電量。

接下來提的這個方式, 是從家裡的路由器著手, 不會影響手機效能, 也不需在手機或電腦上安裝額外的軟體, 只要裝置連上家裡的路由器即可。當然如果是用4G, 那就得靠你的電信商幫你擋(電信商通常不會這麼做), 或是靠加裝app來解決了。

只要用自己的DNS server, 將廣告伺服器的IP改掉, 就可以擋掉這些惱人的廣告。
因為家裡有一台Synology的NAS, 可以當做DNS server。如果沒有, 就得用其它機器做, 但概念基本上是一樣的。

以下的步驟來自這個網頁, 這邊說明的是對應中文界面的法做:
https://synologytweaks.wordpress.com/2015/08/23/use-synology-as-an-ad-blocker/

以下設定需登入你NAS的設定網頁操作:

  1. 在Synology NAS上安裝DNS Server.
  2. 在 “轄區管理(Zones)”, 新增一個 “Master轄區(Master zone)”
  3. 網域類型(Domain type) 選 “正向轄區(Forward Zone)”
  4. 完整網域名稱設為 “null.zone.file”
  5. 主DNS伺服器(Master DNS Server)設為你的Synology NAS的IP (如: “192.168.1.2”)
  6. 序號格式選 “日期 (YYYYMMDDNN)”
  7. 在解析服器中啟動解析服器, 設定轉寄站, 以確保當你的DNS查不到IP時, 轉由其它DNS查詢

以下設定需透過Telnet /SSH設定, 記得先啟動你NAS的Telnet或SSH服務:

  1. 下載ad-blocker.sh腳本: https://www.dropbox.com/s/xz1i7hxb9sfug36/ad-blocker.sh?dl=0
  2. 將腳本複製到NAS的這個目錄: /var/packages/DNSServer/target/script/ad-blocker.sh
  3. 賦予腳本執行權限: chmod +x /var/packages/DNSServer/target/script/ad-blocker.sh
  4. 執行角本: sh /var/packages/DNSServer/target/script/ad-blocker.sh

至此, 你NAS上的DNS已經可以攔截廣告黑名單的伺服器, 它的方法是將這些伺服器的IP直接改寫成127.0.0.1。

你可以將你的手機、電腦, 都改用這個DNS。不過, 最快的方法還是在你的路由器上直接指定使用這個DNS, 這樣你家裡的所有設備只要連上Wifi, 就是用這個DNS。

接下來, 教大家怎麼找出惱人的廣告伺服器, 將它加入黑名單中。

1. 在Android裝置上安裝Filter Proxy。你可以利用這個軟體找出你的裝置到底都連到什麼地方去了?

2. 啟動Filter Proxy後, 在Android網路設定裡將Proxy指向localhost, port: 8000

3. 開始操作你的軟體, 這時所有連線都會被Filter Proxy記錄起來

4. 從log裡找出可疑的廣告伺服器, 長按將它加入URL Filter。在URL Filter裡的伺服器都會被Filter Proxy攔截起來。

5. 你可以反覆操作, 或在google上查詢你懷疑的domain name, 確認它是不是廣告伺服器。這裡我列出幾個超討厭的黑名單:



透過這種方式, 你可以找出你想到屏蔽的廣告伺服器。
我把這份黑名單放在一個叫temp.db的文檔中。
然後, 將這份黑名單和網上所公佈的黑名單合併起來, 當成我自己的DNS的黑名單。
這個步驟, 我寫成一個腳本自動執行。


張貼留言