Skip to content

Latest commit

 

History

History
229 lines (169 loc) · 6.01 KB

File metadata and controls

229 lines (169 loc) · 6.01 KB

什么值得买每日签到脚本

更新日志

  • 2024-xx-xx, 重构项目,使用 src layout 和 uv 管理依赖
  • 2023-04-23,更新抽奖功能
  • 2023-04-06, 新增企业微信BOT-WEBHOOK通知推送方式,仅需要ANDROID_COOKIE一个变量, SK改为可选变量
  • 2023-03-02, 新增每日抽奖
  • 2023-03-01, 支持青龙面板且支持多账号
  • 2023-02-25, 新增all_rewardextra_reward两个接口,本地支持多用户运行
  • 2023-02-18, 通过安卓端验证登录

1. 实现功能

  • 每日签到, 额外奖励,随机奖励
  • 多种运行方式: GitHub Action, 本地运行,docker, 青龙面板
  • 多种通知方式: pushplus, server酱,企业微信bot-webhook, telegram bot
  • 支持多账号(需配置config.toml)

2. 项目结构

smzdm_bot/
├── src/
│   └── smzdm_bot/
│       ├── __init__.py
│       ├── cli.py           # 命令行入口
│       ├── main.py          # 主逻辑
│       ├── scheduler.py     # 定时任务
│       ├── config/
│       │   └── config_example.toml
│       ├── notify/
│       │   └── notify.py    # 通知模块
│       └── utils/
│           ├── file_helper.py
│           ├── smzdm_bot.py
│           └── smzdm_tasks.py
├── pyproject.toml           # 项目配置 (uv/pip)
├── Dockerfile
├── docker-compose.yml
└── smzdm_ql.py             # 青龙面板脚本

3. 配置

支持两种读取配置的方法,从环境变量或者config.toml中读取

3.1 从环境变量中读取配置

# Cookie
ANDROID_COOKIE = ""
SK = "" # 可选,如果抓包抓到最好设置

# Notification
PUSH_PLUS_TOKEN = ""
SC_KEY = ""
WECOM_BOT_WEBHOOK = ""
TG_BOT_TOKEN = ""
TG_USER_ID = ""

# 用于自定义反代的Telegram Bot API(按需设置)
TG_BOT_API = ""

# 用于docker运行的定时设定(可选),未设定则随机定时执行
SCH_HOUR=
SCH_MINUTE=

3.2 从config.toml中读取

参考模板 src/smzdm_bot/config/config_example.toml

[user.A]
ANDROID_COOKIE = ""
SK = "" # 可选,如果抓包抓到最好设置

[user.B]
# Disable userB的签到. 不配置此参数默认启用该用户
Disable = true
ANDROID_COOKIE = ""
SK = "" # 可选,如果抓包抓到最好设置

[notify]
PUSH_PLUS_TOKEN = ""
SC_KEY = ""
WECOM_BOT_WEBHOOK = ""
TG_BOT_TOKEN = ""
TG_USER_ID = ""
TG_BOT_API = ""

4. 使用

4.1 青龙面板

ql repo https://github.com/Chasing66/smzdm_bot.git "smzdm_ql.py"

默认情况下从环境变量读取配置,仅支持单用户.

如果需要支持多用户,推荐使用config.toml, 配置参考 3.2 从config.toml中读取. 配置完成后, 拷贝config.toml到青龙容器内的/ql/data/repo/Chasing66_smzdm_bot/src/smzdm_bot/config

docker cp config.toml <你的青龙容器名称>:/ql/data/repo/Chasing66_smzdm_bot/src/smzdm_bot/config

4.2 本地直接运行 (推荐使用 uv)

克隆本项目到本地, 按照需求配置

使用 uv (推荐)

# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# 克隆并安装
git clone https://github.com/Chasing66/smzdm_bot.git
cd smzdm_bot
uv sync

# 配置
cp src/smzdm_bot/config/config_example.toml src/smzdm_bot/config/config.toml
# 编辑 config.toml 填入你的配置

# 运行一次
uv run smzdm-bot

# 或者运行定时任务
uv run smzdm-scheduler

使用 pip

git clone https://github.com/Chasing66/smzdm_bot.git
cd smzdm_bot
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

# 配置
cp src/smzdm_bot/config/config_example.toml src/smzdm_bot/config/config.toml
# 编辑 config.toml

# 运行
smzdm-bot

4.3 本地 docker-compose 运行

配置参考 3.2 从config.toml中读取

使用环境变量

创建 .env 文件:

ANDROID_COOKIE=your_cookie_here
SK=your_sk_here
PUSH_PLUS_TOKEN=your_token

运行:

docker-compose up -d

使用 config.toml

修改 docker-compose.yml, 取消 volumes 注释:

services:
  smzdm_bot:
    image: enwaiax/smzdm_bot
    container_name: smzdm_bot
    restart: on-failure
    volumes:
      - ./config.toml:/smzdm_bot/config/config.toml

4.4 GitHub Action 运行

GitHub Action 禁止对于 Action 资源的滥用,请尽可能使用其他方式

GitHub Action 仅支持env配置方式, 务必自行更改为随机时间

  1. Fork此仓库项目>, 欢迎star~
  2. 修改 .github/workflows/checkin.yml里的下面部分, 取消schedule两行的注释,自行设定时间
# UTC时间,对应Beijing时间 9:30
schedule:
  - cron: "30 1 * * *"
  1. 在仓库 Settings -> Secrets 中添加环境变量

5. 其它

5.1 手机抓包

抓包有一定门槛,请自行尝试! 如果实在解决不了,请我喝瓶可乐可以帮忙

抓包工具可使用 HttpCanary,教程参考HttpCanary 抓包

  1. 按照上述教程配置好 HttpCanary
  2. 开始抓包,并打开什么值得买 APP
  3. 过滤https://user-api.smzdm.com/checkinpost请求并查看
  4. 点击右上角分享,分享 cURL,复制保存该命令
  5. 将复制的 curl 命令转换为 python 格式,方法
  6. 填入转换后的Cookiessk. Cookiesheaders里,skdata里, sk是可选项

6. Stargazers over time

Stargazers over time