跳至主要內容
project.case-study

CouponTracker

銀行優惠自動登錄器

自動化台灣信用卡優惠登錄 CLI 工具,採 config-driven 架構:每家銀行一份 JSON config,差異收斂在 selector / 重試規則 / 成功失敗 pattern。目前支援 7 家銀行(中信、國泰、玉山、台新、永豐、凱基、聯邦),驗證碼採 Tesseract.js → Google Vision REST → 2Captcha 三層降級。

Node.jsPlaywrightTesseract.js OCRGoogle Vision REST2Captchanode-cron

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