project.case-study
CouponTracker
銀行優惠自動登錄器
自動化台灣信用卡優惠登錄 CLI 工具,採 config-driven 架構:每家銀行一份 JSON config,差異收斂在 selector / 重試規則 / 成功失敗 pattern。目前支援 7 家銀行(中信、國泰、玉山、台新、永豐、凱基、聯邦),驗證碼採 Tesseract.js → Google Vision REST → 2Captcha 三層降級。
01 問題
台灣信用卡每月有大量限時活動需要人工登錄,銀行網站介面不一、難維護自動化腳本,且使用者常因為忘記登錄錯過權益。
02 解法
Node.js + Playwright 抽象出可重用的銀行操作流程,採 config-driven 設計:每家銀行一份 JSON config,包含 selector / 重試規則 / 成功失敗 pattern 與瀏覽器步驟。activityTarget 支援 directUrl / code / exactText / keyword / urlContains 五種定位模式(同一 task 只允許一種以避免歧義),驗證碼採 Tesseract.js → Google Vision REST → 2Captcha 三層降級,node-cron 排程自動執行,GitHub Actions 在 push / PR 自動跑 config validator。
03 成果
開源於 GitHub,已支援 7 家主要銀行;玉山可用一份 config 同時支援活動直達網址(ESUN_CAMPAIGN_URL)與活動清單名稱(ESUN_CAMPAIGN_NAME)兩種定位,runtime 在執行前驗證 target 並對 hostname 做白名單檢查。
04 功能特色
- ▸ 7 家銀行自動登錄(中信 / 國泰 / 玉山 / 台新 / 永豐 / 凱基 / 聯邦)
- ▸ activityTarget 5 種定位模式(directUrl / code / exactText / keyword / urlContains)
- ▸ 驗證碼三層降級鏈(Tesseract.js → Google Vision REST → 2Captcha)
- ▸ config-driven:每家銀行一份 JSON config
- ▸ 玉山雙模式(活動直達 URL / 活動清單精準挑選)
- ▸ node-cron 排程自動執行
- ▸ GitHub Actions 自動跑 config validator + node --check