Skip to content
This repository has been archived by the owner on Jul 8, 2023. It is now read-only.
/ vikacg-checkin Public archive

基于 systemd/Docker 的维咔 VikACG 自动签到

License

Notifications You must be signed in to change notification settings

myl7/vikacg-checkin

Repository files navigation

vikacg-checkin

基于 systemd/Docker 的维咔 VikACG 自动签到

部署

首先获取 Authorization token:打开 VikACG 签到界面,按 F12 键打开浏览器控制台并切换到 Network 标签页,然后在浏览页面中签到一次,再在控制台页面中 Network 标签页内的网络流量列表中找到发往 /wp-json/b2/v1/userMission 的请求,然后复制右侧 Request Headers 中 authorization 字段的值即可,后续我们把此值记作 <AUTH>

然后从以下两种方案中选一种进行部署:

Docker

首先安装好 Docker,然后获取并使用 myl7/vikacg-checkin 这个镜像:

docker pull myl7/vikacg-checkin
docker run -d \
  --name=vikacg-checkin \
  --restart=unless-stopped \
  -e AUTH=<AUTH>
  -v vikacg-checkin.log:/var/log/vikacg-checkin.log:ro \
  myl7/vikacg-checkin

Log 在容器内 /var/log/vikacg-checkin.log 中,可以 read-only mount 出来方便阅读

systemd

首先 git clone 这个 repo,然后把各文件移至对应位置,并在 system level 安装需要的 Python 包:

git clone https://github.com/myl7/vikacg-checkin && cd vikacg-checkin
sudo mv run.py /usr/local/bin/vikacg-checkin
sudo mv vikacg-checkin.{service,timer} /etc/systemd/system
# 暂时只要 requests:
sudo pip3 install -r requirements.txt
# 或者
sudo apt install python3-requests

然后创建配置文件 /etc/default/vikacg-checkin 并写入配置,格式和 dotenv/env 的格式一样:

sudo touch /etc/default/vikacg-checkin
echo 'AUTH=<AUTH>' | sudo tee /etc/default/vikacg-checkin

最后启用这个 systemd 定时器:

sudo systemctl daemon-reload
sudo systemctl start vikacg-checkin.timer
sudo systemctl enable vikacg-checkin.timer

Log 可以通过 systemd 的 log 查询方式来查询:

sudo systemctl status vikacg-checkin.timer
sudo systemctl status vikacg-checkin.service

配置

AUTH 必需 Authorization token,用于身份认证,可以可选地略去开头的 Bearer 及随后的一个空格
UA 可选 User Agent,默认使用 requests 包的默认值

自定义

run.py 文件中留有成功 hook 和失败 hook,方便实现如出错后发送邮件进行通知等功能

以发送邮件为例,Python 发送邮件可以参考这个的 Python 发送邮件实现,将其中的代码填在需要的 hook 中即可

默认签到周期配置在 crontab.txtvikacg-checkin.timer 中,如需在部署后修改也可以通过修改容器中 /etc/crontab 并重载 crontab 或是修改 /etc/systemd/system/vikacg-checkin.timer 并重载 systemd 实现

特别地,受益于 systemd timer 的机制,systemd 部署的此应用将会在 3h 的时间段内的随机一个时刻进行签到

致谢

License

Copyright (c) 2022 myl7

SPDX-License-Identifier: Apache-2.0