昱感網頁設計.
← 回關於我

惜物網搶標助手

在結標前最後幾百毫秒自動出價,實戰兩次得標。

痛點

臺北惜物網是臺北市政府的二手拍賣平台,所有標案都在中午 12:00 整結標。規則是誰在結標那一刻出價最高誰得標,所以真正的勝負全擠在最後幾秒。

人手在這裡做不到三件事:

  • 時間抓不準。 網頁上的倒數跟伺服器時間有落差,手動按下去的那一刻,可能早了兩秒讓對手有時間反應,也可能晚了一點就結標了。
  • 只有一次機會。 截標前 5 秒內,同一個帳號只能出價一次。按錯、按早、算錯級距,都沒有重來。
  • 級距要現算。 加價幅度隨目前價格分六段(10 元到 2,000 元),最後一秒還得心算下一級是多少。

為什麼要寫這個

我在惜物網找二手電腦與 3C。好的標的不缺人看,價格一路平靜,到最後幾秒才有人出手——用手搶,比的是誰手快,不是誰願意出比較多錢。

我想要的是:我願意出到多少,就交給程式在最後一刻、照規則、只出一次地替我出價。

解決了我什麼需求

  • 不用守在電腦前。 設好上限、按下開始監控,中午 12 點前不必盯著倒數。
  • 不會超出預算。 設了最高出價,下一級距超過上限就直接放棄,不會在最後幾秒被氣氛帶著加價。
  • 不會違規。 截標前 5 秒只出一次的規則寫死在狀態機裡,出價後直接進入「已出價」狀態,不再重試。

實際功能展示

2026 年 10 月 1 日中午,兩個標案都在結標前不到 0.4 秒出價、兩次都得標:

得標紀錄:11:59:59.610 出價,標示得標
結標前 0.39 秒出價,得標。
得標紀錄:11:59:59.730 出價,標示得標
結標前 0.27 秒出價,得標。

搶標助手掛在惜物網的商品頁上,右下角是控制面板:

搶標助手 v2.3 控制面板,顯示標案 ID、目前出價、下級距出價、級距與設定欄位
v2.3 控制面板。目前出價、下一級距的價格、級距大小即時顯示;底部是毫秒級的執行紀錄。

面板上能設定的:

欄位 作用
最高出價 預算上限,0 是不設限
我的出價 已經手動出過價就填進來,程式只在被超越時才搶
結標前 結標前多少毫秒出價,預設 500
跳級數 最後一刻一次跳幾個級距,例如填 10 就直接加十級;超過預算時自動降到預算內能跳的最大級數

依「我的出價」有沒有填,自動切換兩種策略:

  • 已經出過價:監控自己是否被超越,被超越才以下一級距搶回來。
  • 還沒出價:一路不動聲色,到設定的那一刻直接狙擊。

技術做法

不寫死任何 API。 直接呼叫惜物網頁面上本來就有的 getJson()、webSocket_send_callback() 等函式,換到任何一個商品頁都能直接用。

以伺服器回應為唯一的資料來源。 攔截頁面的 onMessage,所有價格、時間、出價紀錄都以伺服器回傳為準,不去讀畫面上的數字——DOM 更新有延遲,最後幾百毫秒的決策不能建立在延遲過的資料上。

時間軸是排好的。 每 100 毫秒輪詢一次最新出價(加鎖防止請求重疊),每 50 毫秒檢查一次倒數;結標前 5 秒先取好 reCAPTCHA v3 的 token,前 3 秒校正一次伺服器時間——只校一次,避免在最關鍵的時刻多送不必要的請求。時間運算全程用毫秒,不用秒。

同一套邏輯有兩個版本:Tampermonkey 使用者腳本直接跑在瀏覽器裡、沿用已經登入的狀態,是平常用的版本;Node.js + Puppeteer 版本則適合排程自動執行。

使用技術

JavaScriptTampermonkeyNode.jsPuppeteerWebSocketreCAPTCHA v3
看原始碼