路由器(軟路由)屏蔽廣告原理介紹

很多用戶發現,很多網站的廣告簡直是喪心病狂,一半的網頁都是廣告,更有的是閃屏廣告、跟隨廣告、彈窗廣告、強制觀看、隱私竊取類的惡性廣告;本文就簡單介紹下直接在路由器(軟路由)里進行廣告攔截(屏蔽),從而家裡的電腦、手機、平板等設備都可以有效的去廣告,還用戶一個清爽的閱讀、瀏覽效果。

PS:友好的、美觀的、合適的廣告不會對用戶造成瀏覽的不便;相反,廣告是一個網站、應用的大部分收入來源。

去廣告常見技術實現方式

  • DNS過濾(典型:AdGuardHome)
    • 把廣告相關的DNS請求禁止,只允許非廣告請求通信
    • 攔截發生在網絡請求開始之前
    • 適合於路由器等設備,一次設置,全家庭內網生效
    • 無需對接入家庭內網設備有特殊設置
    • 僅能通過域名進行廣告識別,對於廣告域名與內容域名相同的無能為力,無法針對頁面內容過濾
  • 瀏覽器插件(典型:AdBlock)
    • 根據瀏覽器發出的請求地址、返回頁面內容過濾廣告
    • 攔截發生在網絡請求開始之前與請求結束之後
    • 僅適用於網頁瀏覽器,其他非瀏覽器應用無效
    • 每個設備,每種瀏覽器都需要額外安裝插件
    • 可以對域名,請求,網頁內容進行廣告識別
  • 流量過濾(典型:KoolProxyR)
    • 類似一個全局過濾器,全網流量都通過這個過濾器。針對加密請求(如https等),需要採用類似中間人攻擊(MIMT)方式進行攔截。
    • 攔截發生在請求開始之前、之後
    • 適合於路由器等設備,一次設置,全家庭內網生效
    • 需要為客戶端安裝假證書(實現MIMT解密流量)
    • 可以對域名、請求,頁面內容進行廣告識別

 

以上所有技術方式,攔截時機及識別點越多,理論效果越好。但還有一個最為重要的內容沒有提到——規則庫

類似於殺毒軟體,殺毒效果依賴於核心病毒庫的質量,去廣告效果也依賴於其規則庫的質量。

維護去廣告規則庫,其難度相比於病毒庫難度高很多,病毒產生速度相對穩定,但廣告不是。全球幾千萬站點,每天上百億次廣告展現,頻繁變更的廣告植入方式,規則庫維護難度是十分巨大的。

另外,網際網路的核心思路是羊毛出在豬身上。站點運營需要成本,不在用戶身上收錢,站點只能依靠其他方向獲取收入,廣告就是其中的主要來源。因此,對於去廣告技術,幾乎所有站點都是抵制的(典型地,KoolShare論壇就是禁止類似技術討論的)。

為了保證收益,它們會根據去廣告技術的發展不斷變更廣告插入方式,從而規避去廣告軟體的運作。所以,廣告與去廣告一直是在不斷鬥爭中發展的。因為廣告植入方式發生變化,一個有效的屏蔽規則很可能在一夜之間完全失效,或者某些站點可以讓你即使屏蔽了廣告展示,仍然要等待固定時間才能獲取內容(典型視頻站點)。

從長遠來說,廣告有利於現在網際網路站點的生存,對用戶是有利的(如果所有站點都賺不到錢,最終只能關門,利益受損的還是最終用戶)。對於筆者自己,我認為需要屏蔽的實際上是惡意的,帶有強迫,誘導性質的廣告,木馬釣魚鏈接,隱私收集類的垃圾信息。對那些對日常生活,娛樂,學習幫助很大的站點,能出資支持,或者主動點擊廣告表達支持,幫助站點發展更好,才是雙贏的做法。

去廣告技術原理

​ 上網過程,從技術上來說是瀏覽器通過HTTP協議從遠程服務器傳回內容並顯示的過程。瀏覽器需要建立TCP連接與服務器相連,連接通常有很多。廣告請求與我們普通請求在傳輸方式上並沒有區別,混雜在正常請求中。

​ 如何攔截廣告?分兩步

  1. 識別
  2. 攔截

​ 識別就是從HTTP請求中識別出那些是廣告請求。目前我們還不能很簡單的通過返回內容來判斷,這個HTTP請求是不是一個廣告(AI成熟後應該有可能)。現行的技術只能從請求地址上做文章。上網請求URL(地址)中包含域名及具體訪問資源的路徑,現在可以比較容易的通過域名及訪問資源路徑判斷這個請求的性質,目前可見的類似方式都是走這個識別思路。

​ 識別出來了,接下來就是攔截了。攔截分兩種:

​ (1)域名方式。上網請求實際分兩步,第一步,通過DNS解析域名返回目標服務器IP,第二步,通過IP建立到遠程服務器的TCP連接,使用HTTP傳送內容。域名方式就是在DNS做文章,發現請求是廣告請求就直接返回域名不存在或者一個無效IP,阻止TCP連接建立。這種方式優點在於簡便,快速,不介入正常TCP連接。缺點是DNS只能獲得域名,卻不能獲得完整的URL地址,因此無法對一些URL特徵進行過濾。好在現在廣告普遍都是植入式,也就是普通站點嵌入一個指向廣告的鏈接,通常廣告都有相對清晰的域名(通常廣告域名與訪問站點域名不通),所以可以取得不錯的效果。這也是現在絕大多數方案的原理。

​ (2)流量過濾方式。典型的如著名的koolProxyR。相當建立了一個TCP代理,所有流量走代理,代理可以拿到所有請求的URL,根據規則決定是否放行這些請求。 優點是這種方式有可能獲取完整請求,可以進行超過域名的過濾,甚至等AI成熟後識別內容。但也有缺陷,性能損失是一個,但絕對不是大問題。最大問題是現在網站基本上都是HTTPS請求,瀏覽器會校驗目標網站證書,判斷是否連接到了真正的地址。這也使得傳統的HTTP劫持幾乎沒有生存餘地了,即使強行讓瀏覽器連接到假網站地址,但假網站也造不出真網站的證書,瀏覽器也會報警。目前日益普及的HTTPS嚴重影響了koolProxyR類似過濾方案,因為它代理了瀏覽器發起的請求,它只是一個到真正服務器的中轉,因為連接內容完全是加密的,它無法看懂,甚至連網址都無法獲得,導致它無法進行攔截。

​ 當然,koolProxyR類似方案可以通過為每個目標網站製造一個假證書的方式,偽裝成瀏覽器想訪問的真網站,從而對URL及內容進行過濾,但這裡會造成額外問題。

  • 需要為所有網站偽造證書,偽造證書的根證書比如放到每個瀏覽器的信任根里。通常家裡會有很多設備上網,PC還好,平板,手機,家用攝像頭、PS4、XBOX等等就麻煩了。當然,還可以為這些設備設置白名單,就是不過濾,但無形中還是增加了維護難度。
  • 某些應用不接受偽造證書。典型金融類應用,各種支付,網銀,銀行應用,部分電商,它們會嚴格校驗服務器的證書鏈,偽造證書根本不被接受。這類應用在koolProxyR之類環境下是無法工作的。

​ 所以,流量過濾方式不再是一個去廣告的優選方式了,基於域名的方案已經成為主流。

​ 當然,還有一些基於瀏覽器插件的方案,也很有效,瀏覽器插件可以做到對域名,URL,甚至頁面內容精細化過濾。但問題是只能適用於瀏覽器,通常還是PC端,並不能像DNS方案一樣,應用於整個家庭網絡。

​ HomeLede固件採用AdGuardHome作為去廣告方案,基於DNS技術實現。DNS技術特徵是對請求的域名進行過濾,過濾的核心是規則文件。類似於殺毒軟體的病毒庫,AdGuardHome中可以掛載各類廣告規則庫。其準確度取決於規則庫。

​ 現在回顧一下開篇的問題。

  • 為什麼啟動了去廣告還是可以看到廣告

​ 規則庫中沒有屏蔽你看到的廣告,或者這個廣告和站點正文域名相同,AdGuardHome根本無法去掉。

​ 廣告升級了,目前規則庫中並沒有收錄,無法屏蔽。

  • 為什麼有些站點顯示不了了

規則庫誤傷了一些"正常站點",或者是規則庫認為你訪問的是廣告,而你自己不認為(其實你之前一直認為是正常內容其實是廣告鏈接)

  • 現在都是https了,去廣告技術沒用了

基於DNS去廣告方案,與使用協議無關。即使其他協議只要涉及到DNS解析也可以工作。

遇到訪問不正常時怎麼辦

如果遇到站點訪問不正常,想確認是否和去廣告有關,怎麼做?

http://192.168.1.1:3000 打開AdGuardHome管理界面(路由IP請根據實際情況修改)

用戶密碼都是root

首頁,左上角接近Logo處,有」禁用保護「字樣,點擊即可禁用廣告過濾,再次點擊開始。

另外DNS緩存也可能會影響站點訪問,任何人都可以勝任的清除方法:斷開網絡接口重連,重啟電腦,重啟路由。

水星路由器登錄設置網址melogin.cn指南

本指南將教會你如何使用默認登錄地址melogin.cn登錄水星路由器,從而管理你的無線路由器網絡。

華三(H3C)無線路由器組網方案

一、選用三種典型戶型進行測試