整頁被攔,代表你啟用的過濾清單裡有一條規則比對到網頁位址本身,攔截器在連上伺服器之前就把它擋下了。本文教你怎麼讀懂攔截頁面並安全處理。
你點開一個連結,看到的卻不是網頁,而是廣告攔截器跳出的警告:該頁面因符合 EasyList 等清單中的某條過濾規則而被攔截。什麼都沒載入,網站也根本沒機會給你看任何內容。這和「頁面裡的某個廣告被隱藏」完全不同:攔截器拒絕的是整個文件。
重點整理
- **這是你自己的擴充功能在作用,不是網站。**你啟用的某個過濾清單裡有一條規則比對到頁面位址本身,所以攔截器在瀏覽器連上伺服器之前就把頁面擋下了。
- **攔截頁面不等於判定網站有害。**uBlock Origin 的文件明確指出,嚴格攔截(strict blocking)的警告不一定代表網站有害,只代表你選用的清單中存在相符的過濾規則。
- **真正有用的是「哪條規則相符」。**僅含網域的規則預設會攔截根文件;其他模式只有帶
document或all選項時才會。知道規則,就能判斷這是刻意收錄,還是寬泛的模式誤傷了正常頁面。 - **解法要「窄」,而不是「把攔截器關掉」。**返回上一頁、對可信頁面暫時放行、新增依網站設定的例外,或向清單維護者回報誤判。
- **本文談的是使用者這一側。**網站如何偵測你在用攔截器另有專文;這裡也不提供任何規避網站防護的建議。
「整頁被攔」到底是什麼意思
廣告攔截器做的大部分事情你都看不見:隱藏一個廣告版位、丟掉一個追蹤腳本的請求,你要看的頁面照常載入,只是少了一塊。嚴格攔截是例外:過濾規則比對到的是你想開啟的文件本身,已經沒有什麼可以「繞開」載入了。
依 uBlock Origin 自己的說法,嚴格攔截會攔下整個頁面:根文件被攔截,瀏覽器不會與代管該頁面的伺服器建立任何連線。Wiki 還提到,Adblock Plus 等其他攔截器只過濾次要資源,uBlock Origin 在 0.9.3.0 版之前也是如此,之後才開始過濾網頁本身。不同攔截器的提示頁用字各異,你看到的確切句子取決於產品;它們共通的是背後的機制,下文就談這個機制。
為什麼過濾規則會比對到頁面位址
靜態網路過濾規則本質上是針對 URL 的比對模式,由兩件事決定:模式長什麼樣,以及適用於哪些請求類型。依 uBlock Origin 的嚴格攔截文件,「這條規則會不會攔下頁面本身」取決於兩種情況:
- 僅含網域的規則,例如
||example.com^,預設就會觸發嚴格攔截。Wiki 說明這個預設值是為了減少誤判:直接點名整個主機的規則,是對該主機的明確表態。 - 其他模式比對規則,只有使用
document選項(別名doc)或all選項時才會觸發。
靜態過濾語法文件介紹了這些組件。document 選項比對主框架,也就是根頁面,只給出主機名稱的規則會自動包含它。all 選項是所有網路請求類型加上彈出視窗、文件、內嵌字型與內嵌腳本的簡寫。在 uBlock Origin 中,單純的主機名稱模式代表「該網站及其所有子網域」,同樣涵蓋主文件。
這些規則從哪來?主要來自攔截器訂閱的社群維護清單。EasyList 是最知名的一個,它的儲存庫同時也是回報問題的地方。一條規則出現在清單裡,可能因為這個網域確實提供廣告或追蹤,可能因為它是被清單視為追蹤跳轉的重新導向或短網址服務,也可能因為原本想攔截某一類東西的寬泛模式誤傷了別的。網域易主後,也可能還留著為舊主人寫的收錄規則。
怎麼讀攔截頁面
攔截頁面的資訊量比看起來大。依這個順序讀:
- **找到清單與規則。**uBlock Origin 的攔截頁會寫明相符的過濾規則。規則是單純的主機名稱,還是帶
$document或$all的較長模式,能說明這次收錄有多「刻意」。 - **看位址。**Wiki 指出,被攔截的 URL 帶有查詢字串時,uBlock Origin 可以把它拆成參數。對於重新導向連結,真正的目的地往往就在某個參數裡。如果是這樣,被收錄的是重新導向服務,最終頁面本身可能沒問題。
- **想想你是否本來就要造訪這個網站。**一個你從沒聽過、經由陌生連結到達的主機被攔,是過濾清單在正常運作;你天天造訪的頁面被攔,更可能是誤判。
攔截頁面上的幾個選項
uBlock Origin 的攔截頁提供一小組選擇:
- **返回(Go back)**回到上一頁。如果你本來就不想來這裡,這是正確選擇。
- **繼續(暫時)**會在一段時間內停用嚴格攔截。預設是 120 秒,可透過進階設定
strictblockingbypassduration調整。適用於你信任、且只需要開一次的頁面。 - **繼續(永久)**的做法是按下「繼續」前勾選「不要再針對此網站警告我」。之後該網站將依嚴格攔截出現之前的方式過濾:其資源仍可能被攔,但頁面本身允許開啟。
Wiki 還記錄了一個全域開關:在「我的規則」面板新增 no-strict-blocking: * true 並按下提交,即可在所有網站停用嚴格攔截。對通常遇到的問題來說,這個槓桿太大了——為了一個網站而關閉所有網站的保護,所以優先使用上面依網站的選項。
誤判的排查清單
如果這是你信任的頁面,而且攔截看起來不對,就把它當作一次錯誤回報,而不是和攔截器的較量:
- 確認相符的規則及其所在清單。不要猜,攔截頁會告訴你。
- **檢查清單是否為最新。**清單會定期更新,過期的副本可能保留著維護者已修正的條目。更新清單後重新載入。
- **向清單維護者回報誤判。**EasyList 專案在 github.com/easylist/easylist 追蹤問題。在那裡回報能讓所有人受益,而擴充功能廠商並不擁有清單內容。
- **使用最窄的有效例外。**例外規則(
@@)會放行相符的請求,並且可以限定到單一網站,這比完全停用攔截器好得多。 - **只對信任的頁面暫時放行。**警告之所以出現,是因為確實有規則相符;幾秒鐘的麻煩,比載入一個未知頁面划算得多。
範圍說明:本文談的是在正常頁面上誤撞到攔截時怎麼處理,不是繞過網站防護或任何人存取控制的指南。
所有瀏覽器的表現都一樣嗎?
不完全一樣。經典版 uBlock Origin 以腳本逐一檢查請求,並顯示自己的攔截頁;它在 Firefox 上仍受完整支援,而 Chrome 已逐步淘汰了它所依賴的 Manifest V2 擴充功能平台。在 Chrome 的 Manifest V3 下,攔截網路請求的擴充功能需要透過 declarativeNetRequest 向瀏覽器提交編譯好的規則集,而不是用腳本逐一檢查請求,所以「被攔頁面」如何呈現、有哪些規則選項,會因攔截器而異。但思路是相通的:過濾清單中的一條規則比對到文件 URL,攔截器在頁面載入前就採取了行動。
確認到底是哪個瀏覽器開著攔截器
如果你不確定是哪個瀏覽器設定檔在攔截,BrowserInsight 的外掛與擴充偵測會執行網站同款的誘餌元素測試,顯示你目前使用的瀏覽器裡是否有內容攔截器在運作。它是外觀層面的測試,所以過濾型 DNS 服務這類網路層攔截不會出現在結果裡。想了解網站一側的視角,請看網站如何偵測你的廣告攔截器;想知道過濾類擴充功能能看到你造訪的頁面裡的什麼,請讀瀏覽器擴充功能的隱私風險。如果被攔的網域看起來像第一方、實際卻不是,CNAME 偽裝解釋了為什麼清單也會針對偽裝成子網域的追蹤主機。
常見問題
頁面被攔的警告是否代表網站有危險?
不是。它只代表你選用的某個清單中有一條過濾規則比對到這個位址。可能是真正的廣告或追蹤主機,也可能是寬泛模式或過期條目,所以先看相符的規則再下結論。
是網站在攔我,還是我的廣告攔截器在攔網站?
是你的廣告攔截器。嚴格攔截時瀏覽器根本不會連線到伺服器,網站看不到這次請求,也就不可能拒絕你。
uBlock Origin 裡的「繼續」能持續多久?
暫時放行預設持續 120 秒,可透過進階設定 strictblockingbypassduration 調整。繼續之前勾選「不要再針對此網站警告我」,則對該網站永久生效。
誤攔了正常頁面的規則該向誰回報?
向包含這條規則的清單的維護者。EasyList 的話就是它在 GitHub 上的問題追蹤頁。擴充功能本身只是讀取清單。


