微信讀書自動打卡刷時長

微信讀書挑戰會員助手是一款幫助用戶以更低成本獲取微信讀書會員的工具,通過自動化閱讀和打卡功能,幫助用戶完成微信讀書的挑戰任務,從而獲得會員權益。該工具支持多平台、多瀏覽器,並提供豐富的配置選項和定時任務功能。

只為便宜一點買微信讀書會員.

本文檔可能已過時, 最新可以訪問開源地址: https://github.com/jqknono/weread-challenge-selenium

只為便宜一點買微信讀書會員

微信讀書規則

  • 離線閱讀計入總時長, 但需要聯網上報
  • 網頁版, 墨水屏, 小程序, 聽書, 有聲書收聽都計入總時長
  • 對單次自動閱讀或收聽時長過長的行為, 平台將結合用戶行為特徵判斷, 過長部分不計入總時長
  • 當日閱讀超過5 分鐘才算作有效閱讀天數
  • 付費 5 元立即獲得 2 天會員, 後續 30 日內打卡 29 天, 讀書時長超過 30 小時, 可獲得 30 天會員和 30 書幣
  • 付費 50 元立即獲得 30 天會員, 後續 365 日內打卡 360 天, 讀書時長超過 300 小時, 可獲得 365 天會員和 500 書幣

根據實際操作, 還有如下未明確說明的特點:

  • 第 29 日打卡後立即獲得讀書會員獎勵, 並可立即開始下一輪挑戰會員打卡, 無需等待第 31 日開始下一輪挑戰, 第 29 日的打卡既算上一輪的打卡, 也算下一輪的打卡.
  • 除第一輪需 29 日外, 後續每 28 日即可獲得 32 日會員, 1+28*13=365, 一年可完成 13 輪, 花費 65 元, 獲得 32*13=416 天會員和 390 書幣.
  • 更划算的仍然是年卡挑戰會員, 但週期更長, 風險更大.

工具特性

  • 使用有頭瀏覽器
  • 支持本地瀏覽器和遠程瀏覽器
  • 隨機瀏覽器寬度和高度
  • 支持等待登錄
  • 支持登錄二維碼刷新
  • 支持保存 cookies
  • 支持加載 cookies
  • 支持選擇最近閱讀的第 X 本書開始閱讀
  • 預設隨機選擇一本書開始閱讀
  • 支持自動閱讀
  • 支持跳到下一章
  • 支持讀完跳回第一章繼續閱讀
  • 支持選擇閱讀速度
  • 隨機單頁閱讀時間
  • 隨機翻頁時間
  • 每分鐘截圖當前界面
  • 支持日誌
  • 支持定時任務
  • 支持設置閱讀時間
  • 支持郵件通知
  • 多平台支持: linux | windows | macos
  • 支持瀏覽器: chrome | MicrosoftEdge | firefox
  • 支持多用戶
  • 異常時強制刷新
  • 使用統計

Linux

直接運行

# 安裝nodejs
sudo apt install nodejs
# 老舊版本的 nodejs 需要安裝 npm
sudo apt install npm
# 創建運行文件夾
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# 安裝依賴
npm install selenium-webdriver
# 下載腳本
wget https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -O weread-challenge.js
# 通過環境變量設置運行參數
export WEREAD_BROWSER="chrome"
# 運行
WEREAD_BROWSER="chrome" node weread-challenge.js

如需郵件通知, 需安裝 nodemailer: npm install nodemailer

Docker Compose 運行

services:
  app:
    image: jqknono/weread-challenge:latest
    pull_policy: always
    environment:
      - WEREAD_REMOTE_BROWSER=http://selenium:4444
      - WEREAD_DURATION=68
    volumes:
      - ./data:/app/data
    depends_on:
      selenium:
        condition: service_healthy

  selenium:
    image: selenium/standalone-chrome:4.26
    pull_policy: if_not_present
    shm_size: 2gb
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - SE_ENABLE_TRACING=false
      - SE_BIND_HOST=false
      - SE_JAVA_DISABLE_HOSTNAME_VERIFICATION=false
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4444/wd/hub/status"]
      interval: 5s
      timeout: 60s
      retries: 10

保存為 docker-compose.yml, 運行 docker compose up -d.
首次啟動後, 需微信掃描二維碼登錄, 二維碼保存在 ./data/login.png

Docker 運行

# run selenium standalone
docker run --restart always -d --name selenium-live \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --shm-size="2g" \
  -p 4444:4444 \
  -p 7900:7900 \
  -e SE_ENABLE_TRACING=false \
  -e SE_BIND_HOST=false \
  -e SE_JAVA_DISABLE_HOSTNAME_VERIFICATION=false \
  -e SE_NODE_MAX_INSTANCES=10 \
  -e SE_NODE_MAX_SESSIONS=10 \
  -e SE_NODE_OVERRIDE_MAX_SESSIONS=true \
  selenium/standalone-chrome:4.26

# run weread-challenge
docker run --rm --name user-read \
  -v $HOME/weread-challenge/user/data:/app/data \
  -e WEREAD_REMOTE_BROWSER=http://172.17.0.2:4444 \
  -e WEREAD_DURATION=68 \
  weread-challenge:latest

# add another user
docker run --rm --name user2-read \
  -v $HOME/weread-challenge/user2/data:/app/data \
  -e WEREAD_REMOTE_BROWSER=http://172.17.0.2:4444 \
  -e WEREAD_DURATION=68 \
  weread-challenge:latest

首次啟動後, 需微信掃描二維碼登錄, 二維碼保存在 ./data/login.png

創建定時任務

docker-compose 方式

WORKDIR=$HOME/weread-challenge
mkdir -p $WORKDIR
cd $WORKDIR
cat > $WORKDIR/docker-compose.yml <<EOF
services:
  app:
    image: jqknono/weread-challenge:latest
    pull_policy: always
    environment:
      - WEREAD_REMOTE_BROWSER=http://selenium:4444
      - WEREAD_DURATION=68
    volumes:
      - ./data:/app/data
    depends_on:
      selenium:
        condition: service_healthy

  selenium:
    image: selenium/standalone-chrome:4.26
    pull_policy: if_not_present
    shm_size: 2gb
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - SE_ENABLE_TRACING=false
      - SE_BIND_HOST=false
      - SE_JAVA_DISABLE_HOSTNAME_VERIFICATION=false
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4444/wd/hub/status"]
      interval: 5s
      timeout: 60s
      retries: 10
EOF
# 首次啟動後, 需微信掃描二維碼登錄, 二維碼保存在 $HOME/weread-challenge/data/login.png
# 每天早上 7 點啟動, 閱讀68分鐘
(crontab -l 2>/dev/null; echo "00 07 * * *  cd $WORKDIR && docker compose up -d") | crontab -

docker 方式

# 啟動瀏覽器
docker run --restart always -d --name selenium-live \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --shm-size="2g" \
  -p 4444:4444 \
  -p 7900:7900 \
  -e SE_ENABLE_TRACING=false \
  -e SE_BIND_HOST=false \
  -e SE_JAVA_DISABLE_HOSTNAME_VERIFICATION=false \
  -e SE_NODE_MAX_INSTANCES=3 \
  -e SE_NODE_MAX_SESSIONS=3 \
  -e SE_NODE_OVERRIDE_MAX_SESSIONS=true \
  -e SE_SESSION_REQUEST_TIMEOUT=10 \
  -e SE_SESSION_RETRY_INTERVAL=3 \
  selenium/standalone-chrome:4.26

WEREAD_USER="user"
mkdir -p $HOME/weread-challenge/$WEREAD_USER/data

# Get container IP
Selenium_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' selenium-live)

# 首次啟動後, 需微信掃描二維碼登錄, 二維碼保存在 $HOME/weread-challenge/$WEREAD_USER/data/login.png
# 每天早上 7 點啟動, 閱讀68分鐘
(crontab -l 2>/dev/null; echo "00 07 * * * docker run --rm --name ${WEREAD_USER}-read -v $HOME/weread-challenge/${WEREAD_USER}/data:/app/data -e WEREAD_REMOTE_BROWSER=http://${Selenium_IP}:4444 -e WEREAD_DURATION=68 -e WEREAD_USER=${WEREAD_USER} jqknono/weread-challenge:latest") | crontab -

Windows

# 安裝nodejs
winget install -e --id Node.js.Node.js
# 創建運行文件夾
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# 安裝依賴
npm install selenium-webdriver
# 下載腳本powershell
Invoke-WebRequest -Uri https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -OutFile weread-challenge.js
# 通過環境變量設置運行參數
$env:WEREAD_BROWSER="MicrosoftEdge"
# 運行
node weread-challenge.js

Docker 運行同 Linux.

MacOS

# 安裝nodejs
brew install node
# 創建運行文件夾
mkdir -p $HOME/Documents/weread-challenge
cd $HOME/Documents/weread-challenge
# 安裝依賴
npm install selenium-webdriver
# 下載腳本
wget https://storage1.techfetch.dev/weread-challenge/weread-challenge.js -O weread-challenge.js
# 通過環境變量設置運行參數
export WEREAD_BROWSER="chrome"
# 運行
node weread-challenge.js

Docker 運行同 Linux.

多用戶支持

# 啟動瀏覽器
docker run --restart always -d --name selenium-live \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --shm-size="2g" \
  -p 4444:4444 \
  -p 7900:7900 \
  -e SE_ENABLE_TRACING=false \
  -e SE_BIND_HOST=false \
  -e SE_JAVA_DISABLE_HOSTNAME_VERIFICATION=false \
  -e SE_NODE_MAX_INSTANCES=10 \
  -e SE_NODE_MAX_SESSIONS=10 \
  -e SE_NODE_OVERRIDE_MAX_SESSIONS=true \
  selenium/standalone-chrome:4.26

WEREAD_USER1="user1"
WEREAD_USER2="user2"
mkdir -p $HOME/weread-challenge/$WEREAD_USER1/data
mkdir -p $HOME/weread-challenge/$WEREAD_USER2/data

# Get container IP
Selenium_IP=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' selenium-live)

# 首次啟動後, 需微信掃描二維碼登錄, 二維碼保存在:
# /$HOME/weread-challenge/${WEREAD_USER1}/data/login.png
# /$HOME/weread-challenge/${WEREAD_USER2}/data/login.png
# 每天早上 7 點啟動, 閱讀68分鐘
(crontab -l 2>/dev/null; echo "00 07 * * * docker run --rm --name ${WEREAD_USER1}-read -v $HOME/weread-challenge/${WEREAD_USER1}/data:/app/data -e WEREAD_REMOTE_BROWSER=http://${Selenium_IP}:4444 -e WEREAD_DURATION=68 -e WEREAD_USER=${WEREAD_USER1} jqknono/weread-challenge:latest") | crontab -
(crontab -l 2>/dev/null; echo "00 07 * * * docker run --rm --name ${WEREAD_USER2}-read -v $HOME/weread-challenge/${WEREAD_USER2}/data:/app/data -e WEREAD_REMOTE_BROWSER=http://${Selenium_IP}:4444 -e WEREAD_DURATION=68 -e WEREAD_USER=${WEREAD_USER2} jqknono/weread-challenge:latest") | crontab -

可配置項

環境變量 預設值 可選值 說明
WEREAD_USER weread-default - 用戶標識
WEREAD_REMOTE_BROWSER "" - 遠程瀏覽器地址
WEREAD_DURATION 10 - 閱讀時長
WEREAD_SPEED slow slow,normal,fast 閱讀速度
WEREAD_SELECTION random [0-4] 選擇閱讀的書籍
WEREAD_BROWSER chrome chrome,MicrosoftEdge,firefox 瀏覽器
ENABLE_EMAIL false true,false 郵件通知
EMAIL_SMTP "" - 郵箱 SMTP 伺服器
EMAIL_USER "" - 郵箱用戶名
EMAIL_PASS "" - 郵箱密碼
EMAIL_TO "" - 收件人
WEREAD_AGREE_TERMS true true,false 隱私同意條款

注意事項

  • 28 日刷滿 30 小時, 需每日至少 65 分鐘, 而不是每日 60 分鐘.
  • 微信讀書統計可能會漏數分鐘, 期望每日獲得 65 分鐘, 建議調整閱讀時長到 68 分鐘
  • 網頁掃碼登錄 cookies 有效期為 30 天, 30 天後需重新掃碼登錄, 適合月挑戰會員
  • 郵件通知可能被識別為垃圾郵件, 建議在收件方添加白名單
  • 本項目僅供學習交流使用, 請勿用於商業用途, 請勿用於違法用途
  • 如存在可能的侵權, 請聯繫 [email protected], 本項目會立即刪除

隱私政策

  • 隱私獲取
    • 本項目搜集使用者的 cookies 部分資訊, 以用於使用者統計和展示.
    • 搜集使用者的使用資訊, 包含: 用戶名稱 | 首次使用時間 | 最近使用時間 | 總使用次數 | 瀏覽器類型 | 作業系統類別 | 閱讀時長設置 | 異常退出原因
    • 如不希望被搜集任何資訊, 可設置啟動參數WEREAD_AGREE_TERMS=false
  • 風險提示
    • cookies 可用於微信讀書網頁登錄, 登錄後可以執行書架操作, 但本工具不會使用搜集的資訊進行登錄操作.
    • 騰訊保護機制確保異常登錄時, 手機客戶端將收到風險提示, 可在手機客戶端設置->登錄設備中確認登錄設備.
    • 本工具純 js 實現, 容易反混淆和擴展, 第三方可以繼續開發. 即使信任本工具, 也應在使用自動化工具時, 經常確認登錄設備, 避免書架被惡意操作.

參考