/shopee-product-buy-scheduler

Schedule your buy action at Shopee

Primary LanguageJavaScript

Introduction

  • 設定排程時間來執行 Shopee 購買商品的動作,用來省去人工購買商品的等待時間與操作

Screenshot

alt text

Usage

Tell your product and login

  • Step1: 貼上要執行產品 URL,點選直接開始
  • Step2: 選澤產品規格,讓系統記錄下來
  • Step3: 設定排程日期與時間,可以設定至秒 (YYYY-MM-DDT:hh:mm:ss)

設定商品 URL、紀錄 Cookie 與指定時間

Execute manually

手動執行排程

Development

cd ./packages/shopee-get-ui && yarn

node index.js

Notice

  • 開發目前只在 MAC OS Mojave 上用過

  • 使用者操作 chromium 登入後會將 browser's cookie 存成檔名為 cookie 檔案

  • Chromium 有 headerless=true (不開啟 browser 背景執行),headerless=false 開啟 browser ui 進行動作

  • 目前在tell your product and login 中使用 headerless=false,讓 使用者 可以操作 browser 進行登入

  • Execute manually 或 schedule execute 中 不開啟 browser,來達到快速執行的目的,但缺點是使用者無法中途介入操作

TODOs

  • 增加小米網站的支援
  • 打包成各平台的 distribution (windows/mac)
  • 介面上增加headless與否的選項,區分人在與不在電腦前的兩種使用情境
  • Solve known issues ..
  • 執行期間的 log
  • 多開 browser 與 多分頁(同一 browser) 在搶購上是否會有速度上的影響 目前已知 單一 chrome browser 有 max concurrrent connection 為 6 的限制,但若 browser 不同 會有每個都要先設置 cookie 的前置操作時間

Known Issues

  • 開啟 browser 的操作,似乎沒有非常快速,可能是 waitForXXX 的原因

  • 有時即便倒入 cookie 後 還會要求使用者登入

  • 一分鐘內秒殺的商品很常出現 Timeout ErrorExecution Context was destoyed 前者可能是找不到 下訂單的按扭,或是點選直接購買沒有反應 (按鈕為 disabled)

    TimeoutError: waiting for selector ".cart-page-footer__checkout-text" failed: timeout 30000ms exceeded

    `Error: Execution context was destroyed, most likely because of a navigation

Used Libraries

node-cron 用在排程任務

carlo 提供 nodejs GUI 的 Framework

puppteer UI 測試的自動化框架 用在操作 browser

lowdb 記錄排成資料的輕便 db

Thanks

Inspired by Shopee flash sale