2021-02-10

架設 Pi Hole 以 DNS 層級封鎖廣告

最近有朋友問在下,有沒有方法讓 YouTube 沒有廣告
在下指如果不想看廣告,可以購買 YouTube Pentium 否則 YouTube 沒有運作資金便無法再提供服務
當然理論歸理論,事實上有大量封鎖 YouTube 廣告的瀏覽器外掛程式
但如果在 Android 或 iOS 使用 YouTube應用程式 則沒有可能有外掛
Pi Hole 是其中一種方法可以封鎖廣告,而且 Pi Hole 可以在 DNS層級封鎖 ,將整個網絡的廣告都封鎖

Pi Hole 最初是為架設在 Raspberry Pi 的 ARM 架構上而設計,但現在 Pi Hole 已經支援 i386amd64 架構
即是一般其他 Linux發行版 都能夠運作,而且 Rapsberry Pi 亦釋出支援 i386 及 amd64 的 Raspberry Pi Desktop
即是可以在一般電腦,但不是所有 Linux發行版 都支援
(詳細資料可以到 https://docs.pi-hole.net/main/prerequisites/#supported-operating-systems 了解)
亦即是可以透過虛疑機安裝支援 Pi Hole 的 Linux發行版 運作,非常方便
在下此文章是在 VirtualBox 安裝 Ubuntu Mate 20.10 64 Bit 測試
亦在嘗試在可以在低硬件配置的 Lubuntu 20.10 64 Bit 及 Raspberry Pi Desktop 運行 Pi Hole 同樣成功

安裝 Pi Hole

Pi Hole 官方提供安裝腳本,除了提示訊息及選項內容,其餘過程都會自動化,不需要技術操作
見下文
在 Terminal 輸入
curl -sL "https://install.pi-hole.net/" | sudo bash
如果未安裝 CURL 則先輸入
sudo apt-get install curl
按此下載及安裝 CURL

見下文
安裝過程,會自行檢查相關軟件

見下文
Pi Hole 安裝程式下載後,會顯示 歡迎使用 的訊息
按 OK 到下一步

見下文
由於 Pi Hole 是由志願人士製作,需要運作資金繼續改善,覺得值得支持可以捐贈資金給 Pi Hole
按 OK 到下一步

見下文
準備安裝 Pi Hole
按 OK 到下一步

見下文
選擇 DNS提供者 ,使用 Google 已經足夠

見下文
選擇 廣告名單,預設使用 StevenBlack

見下文
選擇 協定類型,預設使用 IPv4 及 IPv6

見下文
指定 Pi Hole 伺服器的 IP地址預設閘道地址

見下文
提示建議使用 靜態IP ,不過現今 Router 都能使用 DHCP 處理,或指定保留 IP 給 Pi Hole 亦可

見下文
詢問是否安裝 網頁介面 方便管理 Pi Hole ,預設 是

見下文
詢問是否安裝 lighttpd
Pi Hole 使用較輕量的 lighttpd 作為網頁介面,亦需要使用 PHPPHP相關模組,預設 是

見下文
詢問是否保存 日誌資料 ,預設 是

見下文
詢問是否保存資料的等級,預設 所有資料

見下文
見下文
見下文
見下文
見下文
選擇所有設定資料後便會開始安裝 網頁伺服器PHP 等軟件

見下文
見下文
安裝完成後,會顯示伺服器的 密碼 ,讓使用者可以登入經 網頁介面 管理 Pi Hole
(密碼是隨機產生)

見下文
如果覺得隨機密碼無法記下,可以在 Terminal 輸入
sudo pihole -a -p
重設 Pi Hole 網頁介面管理密碼

設定 Pi Hole

見下文
見下文
開啟 網頁瀏覽器 網址列輸入 Pi Hole 的 IP地址 ,例如:http://129.168.0.2/admin 便可以到 Pi Hole 網頁介面

見下文
按 Login 到 登入頁面

見下文
輸入密碼並登入

設定 DNS伺服器

Linux
見下文
就以在下網誌,有廣告連結

見下文
到系統網絡設定,連線的 DNS 加入 Pi Hole 的 IP地址

見下文
重新整理後,廣告無法顯示

Android
見下文
見下文
見下文
Android 都可以,不過 Android 則比較麻煩
不能使用 DHCP ,必須使用 靜態IP 才能加入 DNS

iOS
見下文
見下文
見下文
iOS 都可以,在 更多資訊 中加入 DNS

Pi Hole 自訂封鎖

見下文
見下文
回到 Pi Hole 的 網頁介面 管理員頁面 可以顯示被封鎖的廣告連結,有需要亦可以加入

在下發現被封鎖的廣告都有不同效果,例如:
  • 廣告元素會完全消失,其他元素會順移
  • 廣告元素仍然佔據空間,但會顯示無法載入
  • 廣告元素仍然佔據空間,但會無法顯示
  • 廣告元素仍然佔據空間,但會顯示為空白內容,亦無法按下
另外廣告只會不變增加,因此仍然會有廣告未被封鎖,可以到 Pi Hole 增加更多廣告來源

見下文
實際上,網絡上的廣告都是一些網址,如果想封鎖某網站
只需要將該廣告的 文字連結圖片連結域名,自行加入到 黑名單 (Blacklist) 即可
黑名單 支援 星號 (wildcard)正規表達式 (Regular Expression) 寫法

見下文
如果內聯網有太多裝置,無法每個裝置設定 DNS ,可以在 Router 的 DNS 加入 Pi Hole 的 IP,便可以封鎖整個內聯網的廣告

總結

Pi Hole 安裝過程大部分都是自動化,手動處理的部分亦只閱讀清楚內容後選擇即可,非常簡單
只是在 Android 上設定 DNS伺服器 時,連同 IP地址 、 預設閘道 等網絡設定同時都要手動則比較麻煩
當設定 DNS伺服器 後,即使在觀看 YouTube 上的影片亦不會顯示廣告
若果仍然播放廣告,可以到 Pi Hole 尋找未有封鎖的 域名 ,並加入至 黑名單 ,操作亦很簡單
這個方法還可以讓 Android TV 等電視機,都能夠封鎖廣告,即使其他影片網頁的廣告都能夠封鎖

參考資料

沒有留言 :

張貼留言