# 三步驟，自己驗錨點

## 1. 這是什麼？

錨點帳本是一張可追查的清單。每筆記下原始網頁位置（`source_url`）、歷史快照位置（`wayback`），以及一串內容指紋（`sha256`）。這些資料放在 `anchors.json` 的 `record` 清單裡。

SHA-256 可以把檔案的原始內容算成 64 位十六進位字元。相同的位元組每次都會得到相同指紋；網頁看起來一樣，背後的程式碼不同，指紋也可能不同。Wayback 是另一個查看歷史版本的入口，欄位空白代表帳本未提供快照。

## 2. 怎麼跑？

先確認電腦已有 Python 3，再開啟「終端機」，切換到專案資料夾：

```bash
cd /Users/tkair/TKair/tkfb-analysis
python3 build-cx/verify/verify_anchors.py
```

這一步不用網路。每筆都會印出來源網址、Wayback 網址、指紋與格式判斷，最後列出總筆數及格式正確筆數。**格式正確，表示指紋寫法正確；這一步尚未下載內容或重算內容指紋。**

要真的下載來源重新計算，電腦還需要 Bash、curl、shasum，並在可連網環境執行：

```bash
# 需連網執行；本次離線交付未測試實際下載。
bash build-cx/verify/verify_anchors.sh --fetch
```

腳本會逐筆下載原始網址的回應本文，以 `shasum -a 256` 計算下載檔，再跟帳本比較。每次都新建一個 `anchor-check.*` 資料夾，保留下載內容、HTTP 資訊及 `results.tsv` 對帳表，不覆蓋帳本。省略 `--fetch` 只顯示用法，不會連網。

若你是另外下載腳本和帳本，把帳本路徑放在命令最後即可：

```bash
python3 verify_anchors.py /你的資料夾/anchors.json
# 需連網執行
bash verify_anchors.sh --fetch /你的資料夾/anchors.json
```

Python 結束碼：`0`＝全部指紋格式正確，`1`＝至少一筆格式錯誤，`2`＝帳本讀取或結構錯誤（含空清單）。Bash 結束碼：`0`＝全部下載指紋相符，`1`＝有不相符或下載／計算失敗，`2`＝輸入或工具有問題；顯示用法成功也會回傳 `0`。

## 3. 為什麼可以自己重算、不用相信我？

你拿得到網址、帳本指紋與計算方式，也能檢查腳本、下載檔案，或自己用 `shasum -a 256 檔案路徑` 計算。結果相符，支持本次檔案與帳本指紋所對應的內容一致；結果不相符，就留下差異並追查原因。

網頁更新、廣告、登入狀態、編碼或下載方法不同，都可能改變位元組。不相符本身不能推論有人造假。帳本沒有記載當初完整的擷取與前處理方法，因此本腳本不能保證今天直接下載的頁面會與舊指紋一致。

Wayback 可用來看當時內容，但快照時間可能與帳本的擷取時間不同，回放頁面也可能加入工具列或改寫連結；不能直接假設它和原始下載檔有相同指紋。這次沒有測試網址或快照是否可存取。

**指紋驗證檔案的一致性，不會自動證明文章內容正確，也不會證明帳本本身未遭修改。** 若要核對當時留下的內容，仍需要保存下來的原始檔案與其取得方式。
