範圍說明:這篇文章解釋地區限制背後的機制,以及它們為什麼會產生前後不一的結果。它不是繞過存取控制的教學 —— 那通常違反你同意過的服務條款,在某些司法管轄區還會違反其他規定。

一般描述地區封鎖時會說「網站檢查你的 IP 位址」,那大概只講了三分之一。實務上,一條限制可以在好幾個不同的點被判定 —— 解析器、CDN 節點、應用程式、金流處理商、App 商店 —— 而這每一個點讀的都是不同的訊號,用來決定你屬於哪個國家。當這些訊號互相矛盾,出來的就是多數人實際遇到的那種零碎又令人困惑的行為。

哪些訊號決定了你「看起來」在哪個國家?

至少九個,由不同的當事方在不同的層讀取。

訊號 誰在讀 一般準確度 常見的失效
經地理位置資料庫查出的 IP 位址 CDN、應用程式 國家層級通常不錯,城市層級弱得多 位址區段被重新配發、資料過期
CDN 節點位置 CDN 自己 反映的是網路拓樸,不是地理 最近的節點可能在另一個國家
Accept-Language 標頭 應用程式 語言偏好,不是位置 設定成英國的瀏覽器人在國外
瀏覽器時區與地區設定 用戶端腳本 裝置設定 輕易就會和 IP 對不起來
帳號註冊國別 應用程式 註冊當下填了什麼就是什麼 你搬家了它也不會更新
信用卡發卡國(BIN) 金流處理商 對這張卡而言可靠 和使用者所在地分歧
帳單地址 金流處理商 對這個帳號而言可靠 同樣的分歧
App 商店地區 App 平台 綁在商店帳號上 與裝置位置無關
SIM/電信商代碼 行動 App 對這張 SIM 而言可靠 漫遊與 eSIM 讓事情變複雜

結構上的重點是:沒有任何單一方會把這些全部評估一遍。CDN 看得到 IP,看不到你的卡。金流處理商看得到卡,看不到是哪個節點送出了頁面。沒有人去調和這些答案,所以同一個服務可以在兩個子系統裡同時把你當成在兩個國家。

IP 地理定位到底是怎麼判定國家的?

靠從註冊與路由資料推論,不是靠量測。

地理位置資料庫是把區域網路註冊機構的配發紀錄、自治系統的所有權、BGP 路由通告、量測點之間的延遲三角定位,以及網路業者與使用者送交的更正,組合起來建成的。結果是一個定期更新的最佳估計值。

它的建構方式就解釋了它的失效模式:

  • 位址區段會在業者與國家之間被重新配發,而資料庫落後這個變動好幾週甚至更久。
  • 行動網路上的電信級 NAT 把數以千計的用戶塞在一小群位址背後,而這些位址註冊在電信商挑的任何地方。
  • 企業網路把流量從一個中央閘道送出去,所以每一間分公司看起來都在總部。
  • IPv4 與 IPv6 在同一條連線上可能對應到不同結果,所以答案會隨著這次請求用了哪個協定而改變。
  • 衛星與某些商用連線註冊的是一個和終端實際位置無關的行政地址。

國家層級的準確度一般不錯,城市層級則差得多 —— 這也是為什麼區域限制通常畫在國界上,即使底下的授權其實更細。

封鎖發生在請求路徑的哪一段?

比多數人想像的更早,這也是為什麼封鎖的反應又快又一致。

由誰執行 你看到什麼
DNS 解析 解析器,或國家強制的過濾器 網域解析不出來,或解析到一個公告頁
網路路徑 ISP 過濾,通常針對 IP 或 TLS 的伺服器名稱 連線逾時或被重設
CDN 節點 站台的 CDN,在接觸來源伺服器之前 立刻跳出「你的地區無法使用」
應用程式 站台自己的邏輯,在通過驗證之後 片庫不一樣,或某項功能被停用
付款 金流處理商與發卡行的規則 瀏覽正常,訂閱失敗
App 發布 App 商店的地區規則 你的帳號看不到這個 App

CDN 節點這一種在商業服務上最常見。因為判斷發生在離你很近的接取點,而不是在來源伺服器,所以封鎖套用得很一致、也沒有延遲 —— 這也是為什麼同一個網址,在相隔幾百公里的兩個地方,一邊回傳正常頁面、一邊回傳拒絕。

這些限制一開始為什麼會存在?

三個不同的理由,產生三種不同的行為。

授權。 發行權是按地區賣的。與其說服務在封鎖你,不如說它沒有權利在你所在的地方提供那部作品。典型症狀是片庫變了,不是站台被擋。

法規遵循。 某個司法管轄區加上了義務 —— 年齡驗證、內容規定、申報 —— 而業者認為做這個市場不值得付出遵循成本。典型症狀是一份退出公告,或一道驗證關卡。

國家強制的過濾。 這個限制是加在網路上的,不是服務自己選的。典型症狀是這個站台連不上、其他站台都正常,而服務本身根本不知道你來過。

把它們分辨清楚是真的有用,因為它們該歸咎的對象不同。片庫的差異是你和服務之間的權利問題;網域連不上則是服務控制範圍以外的網路問題。

為什麼這些訊號那麼常互相矛盾?

因為它們從來就不是為了保持一致而設計的,而且每一個都由不同的當事方、為了不同的目的在維護。

你的 IP 反映的是你的流量從哪裡離開網路。你的卡反映的是你的銀行在哪裡。你的 App 商店帳號反映的是你當初辦它的時候人在哪裡。你的帳號國別反映的是你註冊時打了什麼,可能是好幾年前的事。其中任何一個變動時,其他都不會跟著更新,也沒有任何協定會去調和它們。

對使用者來說,實用的讀法是診斷,而不是行動:當某件事只成功一半,就去辨認失敗的那一步在讀哪個訊號。瀏覽失敗指向 IP 或網路;訂閱失敗指向信用卡;App 找不到指向商店地區;片庫變了指向授權。這會告訴你該去問哪一方,以及這個問題到底有沒有得解。

相關問題