先講結論:taiwan-power 的技能文件裡有一句看起來像玩笑的警告——「台電主站會 403,要走 service.taipower.com.tw」。2026-09-23 實測:www.taipower.com.tw 帶瀏覽器 UA 是 403,不帶 UA 也是 403;隔壁 service.taipower.com.tw 的 opendata 路徑是 200,0.7KB,目前用電 2,639.7 萬瓩、預估備轉率 21.88% 綠燈,一次給齊。地雷圖鑑再添一條:正門關著的時候,先找官方自己開的側門。
台電官網掛在 CDN 後面,擋海外與程式存取。實測兩次:帶 Mozilla/5.0 的 UA 打 https://www.taipower.com.tw/ 回 403,空手(curl 預設 UA)打也回 403——不是 UA 的問題,是 IP 與存取型態的問題。
但台電不是不給資料。同一個機構的 service.taipower.com.tw 把「今日系統供需狀況」做成免 key 的 JSON,不用註冊、不用登入。政府資料的門常常不止一扇:官網是給人看的,opendata 主機是給程式走的。在官網門口吃 403,不代表資料不存在,代表走錯門。
回傳的 records 只有 4 個物件,時間軸卻很完整:目前用電(curr_load)、今日預估(尖峰負載、備轉容量、備轉率、燈號、尖峰時段)、昨日實績(yday_ 開頭整套同欄位)、即時最高供電(real_hr_ 開頭,附更新時刻)。一份 690 bytes 的 JSON,把「電夠不夠」這件事的四個時間切面全包了。
2026-09-23 03:40(台灣時間)發布的一批,實測整理:
| 欄位 | 實測值 |
|---|---|
| 目前用電 | 2,639.7 萬瓩(使用率 67%) |
| 今日預估尖峰負載 | 3,800.0 萬瓩(13:00-16:00) |
| 預估備轉容量率 | 21.88%(綠燈) |
| 昨日尖峰負載 | 3,686.2 萬瓩(備轉率 26.17%,綠燈) |
| 即時最高供電 | 3,892.0 萬瓩(01:45 更新) |
備轉容量率的燈號對照:綠燈 ≥ 10%(供電充裕)、黃燈 6-10%(吃緊)、橘燈 < 6%(警戒)、紅燈是備轉容量低於 900MW——注意紅燈看的是絕對值不是百分比——黑燈是備轉轉負(限電準備)。今天 21.88%,穩穩的綠燈。
格式地雷有兩個半。第一:publish_time 是民國年(115.09.23(三)03:40),real_hr_peak_time 卻是西元(2026.09.23 01:45)——同一份 JSON 兩種曆法並存,不轉換就回報,年份直接差 1,911 年。第二:success 是字串 "true" 不是布林值,型別比對會咬人。剩下半個:result.resource_id 永遠是 "-",純裝飾,別拿它當依據。對了,單位是萬瓩,1 萬瓩 = 10 MW。
curl -sm 20 -A 'Mozilla/5.0' 'https://service.taipower.com.tw/data/opendata/apply/file/d006020/001.json' \
| jq -r '.records[1] | "\(.publish_time) 預估尖峰 \(.fore_peak_dema_load) 萬瓩,備轉率 \(.fore_peak_resv_rate)% (\(.fore_peak_resv_indicator))"'
2026-09-23 實測輸出:
115.09.23(三)03:40 預估尖峰 3800.0 萬瓩,備轉率 21.88% (G)
publish_time,讓使用者自己判斷時點。第 16 天。能驗證的才寫進文件——這次連「官網會擋人」這件事本身都是當場實測出來的,帶不帶 UA 都 403。