跳轉到

把匿名網路畫成一顆地球:互動區上線,以及我們在開放資料上撞到的牆

Tor 中繼地球儀

文件站新增了互動與呈現區,目前放了三件作品,都以 Tor 為題。其中資料量最大的是 Tor 中繼地球儀,把全球近萬台運作中的中繼標到球面上,超過六成集中在美國、德國、荷蘭三個國家。

做這顆地球儀的過程中,我們查了二十幾份公開資料,最後能用的只有六份。卡住的原因幾乎都跟技術無關。API 大多打得通,資料格式也乾淨,擋下來的是條款不給我們把它再發出去。

為什麼要做成畫面

匿名網路的基礎建設很難用文字描述清楚,難在兩件事上:順序,還有規模。

順序的部分,Tor 是最好的例子。封包在三個中繼之間依序前進,每經過一跳剝除一層加密,到出口才還原成原本的請求。哪一層在哪一跳剝掉、每一站看得到什麼,都由這個順序決定。文字寫得再仔細,讀者腦中仍然要自行補上動起來的那一段,而每個人補出來的版本未必相同。

規模則更難傳達。「近萬台中繼,高度集中在少數國家」是一句讀過即忘的敘述。把每一台實際標記到地球上,北美與西歐連成一片光帶,其餘地區僅零星數點。同一份數字換成畫面,讀者不必信任我們的形容詞,可以自己看。

地球儀用到的六份資料

最後進到畫面上的有這幾份:

資料 來源 授權
中繼分布 Onionoo CC0 1.0
使用者與橋接人數 Tor Metrics CC0 1.0
連線受阻的觀測 OONI CC BY-NC-SA 4.0
斷網事件 Access Now KeepItOn CC BY 4.0
海底電纜 OpenStreetMap 貢獻者 ODbL 1.0
國界與海岸線 Natural Earth public domain

Onionoo 的中繼快照經過蒸餾,只保留國家層級的聚合,內容不含 fingerprint、nickname、IP 或聯絡資訊。ASN 的登記名稱另外過濾過,因為個人申請的 AS 在 RIR 上登記的就是持有人本名。對於在審查嚴格的地區跑中繼的人來說,那等於把「這台中繼是誰的」跟身分證上的名字綁在一起公開。

陸地亮度可以切換四種指標。中繼台數最直觀。共識權重(consensus weight)反映該國實際承擔的流量比重,與台數常有明顯落差。單一業者集中度是最大一家托管商佔該國的比例,數字愈高代表該國的匿名流量愈依賴同一個機房的存續與配合。使用者估計則是需求端的數字,跟前三個供給端指標並列時,落差本身就是資訊。

資料的呈現刻意克制

OONI 的資料最能說明我們的取捨。它提供各國 Tor 測試的異常率(anomaly rate),數字看起來足以畫一張全球審查地圖,但中段是量測雜訊。實測瑞士 22.2%、加拿大 21.2%、紐西蘭 41.1%,這些國家沒有審查疑慮。把中段畫成色階,等於用雜訊指控特定國家。

最後畫面只標示異常率達 85% 以上且樣本足夠的少數國家,中段數值一律不上色,措辭也停在「沒有照預期完成」。85% 這個門檻沒有推導公式,是看過分布之後訂的。雜訊最高落在四成上下,拉到 85% 才有足夠的距離,寧可漏掉幾個真的受阻的國家,也不要把沒問題的國家標紅。

Access Now 的斷網事件則相反,每一筆都經過人工查證,成因清楚,所以可以明確說明此處發生過人為斷網。即使如此,武裝衝突與族群衝突造成的中斷未必出自政府決策,可能是戰事破壞了基礎設施,畫面上與資訊管制類分開說明。

同樣的理由讓我們放棄了 V-Dem 的數位社會指標。那份資料的授權技術上可用,我們仍然決定不碰。它是每個國家每年由約五位專家評分,經統計模型轉成連續量表。把專家評分畫成地圖色塊,等於用我們的畫面替某個機構的政治判斷背書。

撞到的牆

海底電纜

一開始想用 TeleGeography 的 Submarine Cable Map,那是這個領域最權威的資料集。查下去才發現他們現在把座標資料當成正式商品在賣,License TeleGeography's Map Data 是年費授權,GeoJSON 經 Amazon S3 或 API 交付,每次更新自動推送。GeoJSON 就是他們的商品本體。

台灣的海纜動態地圖的做法值得記下來,也是授權不明朗時最務實的選擇:程式碼採 MIT 開源,但幾何資料放在另一個 repo,對外是 404。主 repo 的 README 直接寫「You can leave the folder empty」。

那顆地球儀上的海纜最後取自 OpenStreetMap 貢獻者標註的路徑,228 段。覆蓋以歐洲、地中海與大西洋較完整,太平洋中段幾乎是空的。翻出 OSM 社群 2011 年的討論串,當年有人提議把 TeleGeography 的資料併進 OSM,社群成員的判斷是那份授權禁止商業使用與改作,跟 ODbL 不相容,那則提議沒有下文。十五年過去,太平洋還是空的。

網路基礎建設

網路基礎建設這一類查了一輪,幾乎全軍覆沒,卡住的理由還很像。

RIPE Atlas 佈署在各地的量測節點(probe)資料很漂亮,2026 年 7 月查詢時全球有近六萬個節點,含經緯度與 ASN,API 直接回得出來。但服務條款寫明商業使用需另外取得 RIPE NCC 許可,沒有開放授權宣告。PeeringDB 的 API 一樣打得通,但可接受使用政策寫明不可整批轉散布給第三方。Packet Clearing House 的 IXP 目錄是 CC BY-NC-SA 3.0,Cloudflare Radar 是 CC BY-NC 4.0,兩者的非商業條款都會傳染到我們的內容上。

IODA 是這裡面最可惜的一份。它以 BGP 路由撤除、主動探測與 darknet 流量異常偵測各國的網路中斷,是真量測,主題跟這個站高度吻合。API 回得出資料,但回應本身就帶著一行 Copyright (c) 2021-2025 Georgia Tech Research Corporation. All Rights Reserved.

還有一類更麻煩:條款完全不存在。各 RIR 的 delegated stats 檔案下載得到,開頭只有免責聲明,沒有一個字提到授權。root-servers.org 的節點清單有 JSON 端點,整站找不到授權宣告。沉默無法解讀成允許,比明文禁止更難處理,因為連判斷的依據都沒有。這一節的每一份都是同樣的組合,端點開放、資料拿得到、授權不給再散布。

指數類資料

Freedom House 的 Freedom on the Net 與無國界記者的新聞自由指數,這兩份最常被引用,也都不能用。RSF 的授權是 CC BY-ND,禁止改作,把它轉成 JSON 重新呈現就違反了。Freedom House 官方頁面查不到授權聲明,取得資料要寫信申請。

我們沒有寫信去問

上面幾個機構,開放資料圈的常規做法是讀完條款之後再去信問一次,通常有機會拿到非營利或研究用途的例外。我們刻意沒有這麼做。

整個專案想知道的正是一個下游再利用者實際會撞到什麼。如果每一份卡住的資料都靠個別協商解決,我們得到的會是幾封友善的回信,而不是「這個生態系對想接手的人有多友善」的答案。條款寫成什麼樣子,就是絕大多數人實際會遇到的樣子。沒有人脈、沒有機構背景、只是想做點東西的人,看到的就是那一頁條款,所以這篇記錄的是條款,不是協商結果。

我們學到的

最大的落差是開放 API 不等於開放資料。原本以為困難會在技術面,結果多數端點都打得通、資料格式也乾淨,卡住的全在條款。RIR、CAIDA、RIPE NCC、PeeringDB 這些機構的預設立場是可以看、可以研究,但不能整批搬走,那跟 Tor Metrics、OONI、Natural Earth 是完全不同的文化。連完全沒寫授權的沉默狀態也算在內,那種資料集實務上等同不可用。業界確實有很多工具在用那些檔案,但那是各自承擔風險,公開發布的文件站不能比照辦理。

我們的架構也不容許「應該沒問題」的僥倖。文件站是靜態網站,資料檔會直接發出去,而且會推上 IPFS。內容定址意味著發出去就收不回來,鏡像可能長期存在。

反過來看,地球儀能做出來,很大程度是因為 Tor Project 把 Onionoo 與 Tor Metrics 都放成 CC0,Natural Earth 放成公有領域。當年那可能只是一行設定,卻讓十幾年後一個不相干的社群能夠直接拿去用,不必寫信談授權,也不必擔心哪天被要求下架。

有一個技術細節值得另外記下來。OONI 那份是 CC BY-NC-SA 4.0,其中的相同方式分享(ShareAlike)跟站台的 CC BY 4.0 互不相容。處理方式是讓 ooni.json 保持獨立的一份,不把它的內容併進其他資料檔,畫面上也只跟其他來源並列,讓整體屬於 CC 定義的「集合」,相同方式分享的範圍停在那一份檔案身上。前提已經寫進 NOTICE,否則哪天有人把 OONI 的欄位併進中繼快照,整份衍生物就落入相同方式分享了。

其他兩件作品

Tor 路由解謎讓你自己挑三個中繼組成 guard、middle、exit 路徑,過程中要避開被監聽的節點、把三跳分散到不同 ASN,遇到封鎖改走橋接。看著電路因為三跳擠在同一個 ASN 而失敗,比讀十次「要分散」有效。

Tor 連線流量用發光粒子呈現兩種路徑的差異。連線 .onion 服務時雙方各建一條三跳電路,在隨機挑出的會合點相遇。連線明網網站則走三跳到出口後原路往返。

三件作品都以 three.js 在瀏覽器中執行,免安裝,支援正體中文、簡體中文與英文。原始碼在 anoni-net/docsdocs/zh-TW/games/ 底下,沒有建置流程,改完存檔重新整理就看得到。

有想法或想一起做,歡迎到社群找我們。