撤回自己寫過的話:近兩週更正了哪些內容¶

近兩週有幾頁的內容被改掉,改法多半是把先前寫過的整段撤回。香港的入境查機風險由中升到高、日本境外 eSIM 的例外拿掉、推薦過的 2FA app 換了經營者、台灣封鎖判定的分布從 40 筆抽樣換成 22,105 筆全量重算。7/27 到 8/10 之間文件站併入 50 個 PR,相當比例花在這類更正上。以下按頁介紹改了什麼、依據在哪裡,中段有一份清單,寫給照著舊版做過準備的人。
出差與研討會那頁,撤回了三處敘述¶
出差與研討會的數位準備在八月初做過一次全頁查證,六個方向獨立核對來源,結果撤回三處查不到實據的敘述。
- 香港自 3/30 起的邊境解鎖權「不以國安嫌疑為前提」。撤回的是「不以國安嫌疑為前提」這個範圍描述。該說法只出現在旅遊資訊聚合網站,各家對生效日(3/28 或 3/30)與罰則(6 個月或 1 年)互相矛盾,政府憲報、律政司資料與第一線報導都查不到對應文本。3/23 的國安法修訂(
Legal Notice 27 of 2026)本身查得到,涉國安調查時可要求交出密碼,拒絕即構成刑事罪,只在香港機場轉機並通關的旅客同樣適用。 - 日本境外購買的 eSIM 不受新規範。森・濱田松本法律事務所對此點明確標註「文書に明記されていません」,文件原本把它寫成一條可以依賴的建議。頁面現在寫的是境外供應商是否納管留待後續省令釐清,出發前不要把「境外買的 eSIM 一定不受規範」當成確定前提。
- 馬來西亞 ONSA 首週處理 1,500 則以上貼文。原始來源的 1,583 是 2025/1/1 至 11/30 的仇恨內容下架請求總數,時間早於 ONSA 生效。錯的是數字,法本身仍在運作,頁面保留《線上安全法》2026 年 1 月生效、規範對象為平台業者、實際影響落在內容被移除速度變快的敘述。
同一次更新替換了南韓段落的來源。原本引用的 Cybernews 無署名、無引用,且該站與 VPN 聯盟有利益衝突,改用 Lumen Database #73101162 與韓國時報,過期的「20 萬件」也更新為 2024 年審議 356,945 件。
香港的入境查機風險層級由中升到高,依據就是上面那條查得到的國安裝置解密義務。撤回一條被誇大的敘述與調升風險層級同時發生,方向看似相反,實際指向同一件事:解密義務為真,被誇大的只是它的適用範圍。
推薦過的 2FA app 已經易主¶
怎麼維持多個網路身分原本推薦 Raivo 作為 Authy 的替代品,而 Raivo 在 2023 年 7 月被 Mobime 收購,收購方的隱私政策納入廣告追蹤器與 log 收集。同一行還寫著 Authy 桌面版停止維護因此需要更換,前後自相矛盾。現在的版本只保留 Aegis 與 2FAS,並以開源、可匯出備份、經營者未換手三個判斷標準取代品牌清單。
同一頁的「在現有 Gmail 開一個全新帳號(不綁手機)」實際上無法達成,改為說明主流免費信箱在註冊階段就要求手機驗證,同裝置同 IP 開的帳號也可能被服務商自行關聯。虛擬門號那段原本只警告 WhatsApp 封鎖,現在補上兩個關鍵風險,付費刷卡會把兩層身分重新接上,號碼會被回收再配發給下一個人,對方之後能用簡訊重設你的帳號。
社群平台怎麼收集你的資料寫「大規模研究沒有找到偷錄音的證據」,容易被讀成已經證明沒有,補上「沒有找到證據跟證明不存在是兩回事」,並加入 2024 年 Cox Media Group 的 Active Listening 推銷簡報事件(Google 隨後將 Cox Media Group 移出廣告合作夥伴計畫,該公司否認實際聆聽)。
另外兩處是跨頁之間的衝突,社運行動者的數位準備的「預付卡購買時不要用實名身分證辦」與出差頁新增的十四地實名對照直接矛盾,而新章節還兩次把讀者導向出差頁。記者保護消息來源把市話與簡訊的取捨寫得像許可,補上案件隨時可能升級到能調閱通聯紀錄的層級,而通聯紀錄的保存期限通常比案件週期長。
以上六項出自七月底到八月初新增的八頁讀者提問內容,上線後分別從結構、逐句、目標讀者三個角度各審一次才查出來。
照著舊版做過準備,要補的五件事¶
上面兩節有五項會改變讀者已經做過的準備,逐條列出現況與該補的動作。
- 香港行程。入境查機由中風險升到高風險,涉國安調查時拒絕交出密碼本身就是刑事罪。照中風險準備過的人,準備等級要拉到乾淨機這一層,行程只是經香港轉機同樣適用。
- 日本的境外 eSIM。「境外買的一定不受規範」這個前提要拿掉。納管純數據 SIM 與 eSIM 的法律已經公布,施行日由政令另訂、最遲 2027 年 5 月,境外供應商是否納入尚未明確。
- 已經在用 Raivo。建議轉到 Aegis 或 2FAS。TOTP 沒有辦法直接搬,需逐一到各服務的兩階段驗證設定裡重新綁定。過程中先留著舊 app,直到新 app 能產生正確驗證碼為止,並確認備援碼還在手上。
- 預付卡。實名這一層避不掉,台灣的預付卡同樣要實名登記。能做的是不要登記在跟主門號同一個人名下,再據此決定那支門號拿來做什麼。
- 用虛擬門號註冊過的帳號。值得逐一檢查那些帳號的簡訊復原設定,把已經停用的號碼移除,改用 TOTP 或備援碼。
台灣的封鎖判定改用全量資料重算¶
OONI 怎麼判定一個網站被封鎖引用的是 OONI(全球網路審查的公開量測計畫,各地志願者執行測試、結果全部公開)的觀測資料,原本寫著抽查 40 筆異常測量,dns 31 筆、tcp_ip 6 筆、http-failure 3 筆、http-diff 0 筆,並據此說台灣沒有出現重導向到封鎖告示頁的樣態。改用 2026-08-05 往前 24 小時的全量資料(22,105 筆)重算之後,那份分布與支撐它的抽樣方法都不成立:
| 判定 | 筆數 | 佔比 |
|---|---|---|
false |
21,029 | 95.13% |
none |
512 | 2.32% |
tcp_ip |
312 | 1.41% |
dns |
150 | 0.68% |
http-failure |
67 | 0.30% |
http-diff |
35 | 0.16% |
tcp_ip 是 dns 的兩倍以上,http-diff 也確實存在 35 筆,問題出在那 40 筆的來源:它取自 measurements API 的異常清單,該清單有自己的排序,當成隨機樣本使用會失準。頁面上補了一則警示記錄這次更正,因為同樣的陷阱其他人也可能遇到。
被推翻的是分布數字與抽樣方法,「台灣沒有封鎖告示頁」這個結論本身反而站得住。那 35 筆 http-diff 抽查了 4 小時內的 15 筆,body_proportion(Probe 取到的內容與對照組相符的比例)全部落在 0.004 到 0.21 之間,內容遠短於對照組(control),與告示頁逼近 1 的樣態相反。成因需要逐筆查驗證據層(evidence layer),文件因此只陳述觀察到的樣態,不下結論。
能重算的原因是欄位統計終於補上。OONI 測量資料結構導覽上線時就寫著,最小的一步是在逐行解析時多取 test_keys.blocking,統計就能從測量筆數延伸到各 ASN(自治系統編號,網路上一個業者或組織所管的一群 IP)的異常分布。程式一直沒有做,是文件與程式之間唯一一處只寫在紙上的規劃,八月初補上之後,新資料一產出就推翻了上面那段敘述。
互動作品總覽頁的七處更正¶
互動與呈現區的總覽頁上線隔天就查核出七處問題,四處是事實錯誤,三處是寫得過度絕對。
四處事實錯誤裡有兩處是文件與自身敘述矛盾。文中寫地球儀畫面上有流星,原始碼裡的 buildSky() 只畫靜態星空與銀河帶,搜尋 meteor、流星、comet 都沒有命中,帶亮頭的彗星屬於另一件作品 onion-rendezvous,文件把兩件混在一起寫。另一處把「兩條電路在中途某台中繼相遇」當成 Tor 通則,該敘述只適用於連線 .onion 服務,而同一頁的作品卡片寫的是正確版本。
其餘兩處是文件與資料不一致,「每份資料檔都帶有四個欄位」的說法在 cables.json 上就不成立,該檔沒有 sourceUrl 與 licenseUrl,處理方式是把資料補齊,一併修改 tools/gen_cables.py,而非把文件說法改弱。另一處「tools/ 只使用 Python 標準庫加上 curl」遺漏了 fix_trunk_land.mjs 是 Node、publish_games_data.sh 是 shell。
寫得過度絕對的地方有三處:
- 「任何一步錯位,匿名性就不成立」。匿名性會因為流量關聯、出口監控這類與順序無關的因素被打破,而 Tor 的順序錯亂通常只導致連線失敗。原句把匿名性的失效條件窄化成順序一項,已改為保守敘述。
- ASN「由一家業者掌管」。該說法與同一個專案產生快照的腳本註解互相矛盾,註解寫明 ASN 可能由個人申請。
- 「八十個國家」。直接寫入精確整數,快照重新產生就會過時,改為約八十個並標明數字取自最近一次快照。
英文讀者點進來,多半沒讀到文章¶
Cloudflare 近 90 天的資料(排除子網域與 bot)顯示英文版佔文件站流量 25.9%,440 次瀏覽裡只有 70 次(16%)落在真正的文章,290 次落在分類目錄頁,80 次是 404。
追查後有三個成因,兩個出在轉址設定,一個出在更早的導覽重構。轉址設定裡有四條規則,來源路徑就是現存的英文頁,建站工具遇到這種情形會在該網址產生一頁只有轉址動作的空殼(redirect stub),把真正的文章蓋掉,線上實測那四頁全部只剩轉址畫面。另有三條轉址在英文內容存在的情況下指向目錄頁。最後是 2026-05-09 的導覽重構,該次 commit 從 docs/en/ 刪除 17 個檔案、新增 0 個,約 11.5 萬字元,設定檔註解寫明「dropped pages redirect to the nearest live section index」。
依實測流量還原了五篇,落在真正文章的比例由 16% 提升到 64%。被空殼蓋掉的四頁只佔問題的一小塊,目錄頁與 404 才是大宗,剩下 12 篇被刪的英文內容與 18% 的 404 尚未處理。
寫作規範多了六條自動檢查¶
前面幾節的錯誤有一個共同的上游,規範寫了但沒有工具擋著,內容就會持續偏離,直到有人讀到為止。貢獻者百科寫著口語詞改書面語,而 docs_style_lint.py 只針對其中一個字實作了規則。全站掃描出 605 處那個字以外的口語詞,站台自己的工具對現況回報 0 error、0 warn。
七月底那次清掃連同原本就攔得到的那個字,總共處理 669 處、158 個檔案,同時補上六條 linter 規則,全部列為 warn,因為替換詞取決於語境,不該讓機器直接替換。清掃過程中機械取代造成兩處實質損害,都已修復並補進例外清單:
- 「主講」被換成「主提到」,破壞了議程頁兩個語系共 20 處介紹。原因是排除清單只擋後面的字,沒擋前面的「主」。
- 「沒搞清楚」被換成「沒處理清楚」,理解與處理屬於兩回事。
同一週另一支 PR 收尾時發現,比對規則只涵蓋正體字,簡體對應字完全沒有被檢查,zh-CN 等於沒有這條規則。掃過全站之後待處理的項目比預期少,需要檢視的只有 3 處,查證之後都是正當用法。真正的收穫是補上了首套回歸測試,因為 linter 是全站寫作規範唯一的自動檢查點,卻沒有任何測試。覆蓋不全的問題人工抽樣無法察覺,抽到的樣本恰好都在覆蓋範圍內。
更早一次的全站清理已經逐段改寫過 99 個檔案裡的 266 段「這」字堆疊。八月初再補上密度標準,起因是校稿時實際使用的判準只留在 commit 訊息裡,下次寫新頁不會生效,於是把判準寫進貢獻者百科,並把可機器判斷的部分實作成 zhe-repeat 規則。距離門檻 8 個字是對全站 429 篇校準而得,放寬到 10 會開始收進正當用法,全文密度需要語意判斷,刻意留給人工。
兩頁的敘述已經對不上現況¶
個人隱私指引在 8/6 補上「相關文章」索引時,下方的進度段落沒有跟著改,同一頁出現兩種說法。上面列了概念層八篇,下面寫著「概念層五篇上線」並只列原本那五篇。各層索引也累積落後了一段時間,工具層實際 18 篇只列 7 篇、場景層 10 篇只列 5 篇、進階層 5 篇只列 2 篇,這次補進 14 篇。
同一頁的「常見誤區整理」列了四項,讀起來像整條還沒動工。實際盤點後有兩項早已寫完,只是沒被連到,「VPN ≠ 匿名」在 VPN 指南有整篇,「去中心化 ≠ 匿名」在被誤認為匿名的技術完整涵蓋 IPFS、Yggdrasil、DN42 與 I2P。另外兩項確實還沒動工,改後分別標明現況。
幫忙 pin 文件站的 IPFS 鏡像有三處對不上現況,其中兩處是讀者實際操作後才發現的。
macOS 那段寫著 brew install ipfs,Homebrew 的 formula 已經改名為 kubo。舊名仍然裝得起來,可是 brew services 認的是實際名字,依舊文安裝之後再設定常駐服務就會對不上。常駐做法原本只寫「可以用 brew services 或 launchd」,沒有給指令,實際上 formula 本身已定義 service,一行 brew services start kubo 就會常駐並在登入時自動啟動。
第二處是有夥伴想把社群節點設成固定節點,把頁面上的 IPNS 名稱填進 kubo 的 Peering.Peers,工具直接報錯。原因是頁面只解釋了 CID 與 IPNS 名稱,沒有提到節點自己的 Peer ID。三串識別碼長相接近,節點 Peer ID 的 base36 形式與文件站 IPNS 名稱前 12 個字元完全相同,兩者都是公鑰指紋、同一套編碼,差別在一個指向會更新的內容,一個指向一台機器。頁面補上三者的對照表,以及一節選用的 peering 設定。
第三處是導言寫著「目前只有社群自己的節點在 pin」。查 DHT 時發現另有一個第三方節點也在提供文件站內容,可能是別人自架的鏡像,也可能是公開 gateway 取得之後 announce,無論哪一種,原本那句都已經不成立,改為「目前提供文件站內容的節點很少,社群自己那台是主力」。沒有寫出確切數字,因為 findprovs 是盡力而為的查詢,回傳的是逾時前找得到的節點,不保證窮舉,寫出「只有 N 個」會是另一種不準確。
窄螢幕的白邊查到了語言切換選單¶
讀者回報置頂公告右邊會出現一段空白。實際量測後,公告不是原因,把公告整個隱藏,documentElement.scrollWidth 仍然比視窗寬 14px。逐一隱藏候選元素後定位到 header 的語言切換選單,三個語言標籤的中文字面讓收合狀態的選單有 177px 寬,窄螢幕時按鈕貼近視窗右緣,選單就把版面往右頂出去。置頂公告的黑底與 header 的藍底都只有視窗寬,往右滑就露出白邊。斷點正好落在 960px,也就是 header 換成桌面排版的那一刻。改法是在該斷點以下讓選單靠按鈕右緣展開,桌面維持置中。同一次也提高了置頂公告連結在淺色主題的對比,原本只有 2.79:1,幾乎融進黑底。
另外兩個 GitHub Action 還停在 Node 20 runtime,runner 每次執行都會輸出 deprecation 警告。actions/cache 由 v4 升到 v6、actions/setup-node 由 v4 升到 v7,升級前逐版讀過 release notes,確認兩者的破壞性變更都打不到本專案的用法。
兩位社群夥伴的貢獻¶
近兩週的 50 個 PR 裡有兩個來自社群夥伴。
wu858430049 補上了 BECOME_ANONI 協定的簡中版,正本放在 repo 根目錄,位置比照 zh-TW,文件頁用 snippets 嵌入以維持單一來源,同一個 PR 一併修正兩個會讓頁面無法顯示的設定問題。翻譯是站上長期缺人的一條路線,簡中與英文都還有大量頁面沒有對應版本。
ChihChengLiang 更新了 COSCUP 2026 隱私支付實作工作坊的介紹。原本寫著不需自備電腦,在旁觀看即可,有意參與實作的人依此準備會不足。實際上現場已備妥模擬網路與模擬鏈,鼓勵參加者攜帶電腦實際操作。這一項不需要碰任何程式,需要的是知道現場實況並願意把那段文字改掉。
兩個 PR 都移除了會讓讀者做出錯誤判斷的內容。最低的一步是開一個 issue,指出哪一句不對並附上你查到的來源。想直接修改內容,如何參與與認領主題說明怎麼選題與認領,貢獻者百科的「第一週的入門路徑」則依寫作、翻譯、技術維運、活動籌備分成四條線。
你沒有辦法自己驗證的那部分¶
站台的主題是隱私與安全,讀者依照文件的建議調整自己的行為,一句錯的敘述成本落在讀者身上。更難處理的是讀者沒有辦法自己驗證,抽樣得到的分布寫成通則,讀起來跟全量算出來的一模一樣,讀者無從分辨那是 40 筆還是 22,105 筆。更正的過程與依據因此一併寫出來,包含被撤回敘述的原文與不予採信的理由。
同一段時間新增的內容包括互動與呈現區的台灣基礎設施圖層、四篇 OONI 技術文件,以及納入 CI 的 .onion 版建置。若讀到與事實不符的內容,歡迎到 GitHub 開一個 issue 或直接送 PR,我們會查證後更新。
相關閱讀¶
- OONI 怎麼判定一個網站被封鎖:被全量資料推翻的那一頁,警示區記著這次更正
- OONI 測量資料結構導覽:欄位統計補完之後的版本
- 出差與研討會的數位準備:三處撤回與香港風險升等後的現況
- 怎麼維持多個網路身分:TOTP app 的判斷標準已改為看條件不看品牌
- 幫忙 pin 文件站的 IPFS 鏡像:三串識別碼的對照表與新增的 peering 設定