invoice-winning-numberslisted
Install: claude install-skill tahodev/baodao-skill
# invoice-winning-numbers
> 實測日:2026-09-26(最近一次端對端實測;數值基準日各自標於內文)
從財政部電子發票整合服務平台(https://invoice.etax.nat.gov.tw)的公開頁面取得統一發票中獎號碼,並用手上的發票號碼對獎。不需要 API 金鑰或登入,`curl` 即可。支援:最新期對獎、批次對獎、雲端發票專屬獎(PDF 清單)、歷史期別、每期自動對獎流程。
## 基本流程
1. 下載最新中獎號碼頁
2. 移除 HTML 標籤後解析期別與各獎號碼
3. 用使用者的 8 位發票號碼對獎
### 1. 下載頁面
```bash
curl -sm 30 https://invoice.etax.nat.gov.tw/lastNumber.html -o /tmp/lastNumber.html
```
2026-09-09 實測:HTTP 200、約 20KB、不需特殊 User-Agent。頁面含最新一期的「中獎號碼單」(當日為 115年05-06月,特別獎 19531471、特獎 85941329、頭獎 07225810 / 20231230 / 83518781,無增開六獎),以及特別獎、特獎中獎清冊連結。雲端發票專屬獎在 `cloudNowNumber.html`(見下文專節)。
2026-09-26 實測(115年07-08月期,9/25 開獎次日):特別獎 `38548029`、特獎 `10138845`、頭獎 `24121106` / `28589937` / `83663333` 三組,無增開六獎。頁面殘留的「領獎期間自115年08月06日起至115年11月05日止」是上一期(115年05-06月)的,陷阱仍存在;本期領獎期間依規則推算為 115年10月6日至116年1月5日(開獎日 9/25 次月 6 日起 3 個月),引用時註明請向官方確認。**分頁連結陷阱**:頁首/頁尾的「115年05-06月特別獎、特獎中獎清冊」連結含獎項字樣,從期別標籤直接往後掃會把「特獎」對到清冊連結、讀出錯誤號碼(2026-09-26 實測重現);解析務必從期別標籤後第一個「獎別」表格起點開始(見下方解析範例)。
**領獎期間陷阱:** 頁面上的「領獎期間」文字只屬於它所在區塊的期別。2026-09-09 實測時,最新號碼單已是 115年05-06月,頁面殘留的「領獎期間自115年06月06日起至115年09月07日止」卻是上一期(115年03-04月)的,直接配對會讓使用者錯過領獎。領獎期間只能引用與期別標籤同一區塊的文字;取不到對應區塊時,依規則說明「開獎日(單月 25 日)次月 6 日起算 3 個月」(例:115年05-06月期,115年7月25日開獎,領獎期間為115年8月6日至11月5日),並請使用者到 https://invoice.etax.nat.gov.tw 確認實際期限。
### 2. 解析
**務必先把 HTML 標籤「整個刪掉」(取代成空字串)再取數字。** 號碼會被標籤切開(例如頭獎 07225810 在原始碼中被拆成 `072</span><span ...>25810` 兩段)。如果把標籤取代成空白,數字會斷成 3 碼碎片(`072`、`258`、`10`),對獎會全錯;直接對原始 HTML 下正則也會漏。
```bash
python3 - <<'PY'
import re
h = open('/tmp/lastNumber.html', e