中国科学院大学每日健康打卡脚本 Headless Browsers 版,中科大学生请勿使用。
国科大每日健康打卡系统的字段经常变动,采用手动 POST 的思路时可能需要频繁更改代码,而采用 headless browsers 模拟前端操作的思路,当字段发生变化时,手动打卡一次即可,无需更改代码。
- 仅用于中国科学院大学每日健康打卡,其他高校(如中科大)学生请勿使用;
- 本脚本仅用于辅助使用者减少重复工作量(如连续多天信息没有变动时避免需每天手动打卡),使用者需对本脚本所做的所有操作负责。当使用者的健康打卡信息发生变动时应主动及时在健康打卡系统中手动更新信息。
- 一个 24 小时开机的 Linux 操作系统(需要支持 systemd,如 Ubuntu 16.04, Debian Jessie, CentOS 7, Fedora 等)
- Python 3.6+
- 如果
/usr/bin/python3 --version
命令显示的 Python 3 版本号低于 3.6,请额外安装 Python 3.6 或以上版本,并将本 README 的命令中、ucas-checkin.service
中出现的/usr/bin/python3
全部换成/usr/bin/python3.X
(如您安装了 Python 3.8,则将/usr/bin/python3
换成/usr/bin/python3.8
) - Python 3.6+ 的要求是为了安装 torch 用于验证码的识别
- 如果
以普通用户身份运行以下命令:
sudo loginctl enable-linger $USER # 普通用户免登录运行 systemd 服务
/usr/bin/python3 -m pip install selenium easyocr
sudo apt-get install chromium-chromedriver # 非 Ubuntu/Debian 系统自行使用合适的包管理器安装
cd ~
git clone https://github.com/yusanshi/ucas-checkin && cd ucas-checkin && git checkout main
cp config.sample.py config.py
vim config.py
cp notify.sample.py notify.py
vim notify.py
mkdir -p ~/.config/systemd/user
cp ucas-checkin.{service,timer} ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now ucas-checkin.timer
如果在运行
systemctl --user daemon-reload
命令时,显示Failed to connect to bus: No such file or directory
的错误信息,请检查echo $XDG_RUNTIME_DIR
的输出是否为空,如果为空,在.bashrc
中添加export XDG_RUNTIME_DIR=/run/user/$(id -u)
,参考问题。
使用 /usr/bin/python3 ~/ucas-checkin/main.py
命令来测试打卡。首次运行需要下载用于 OCR 的模型文件,请耐心等待。如您的下载速度过慢或无法下载,请使用以下命令手动下载:
wget https://storage.yusanshi.com/easyocr.tar.gz
rm -rfv ~/.EasyOCR
tar -xzvf easyocr.tar.gz -C ~
rm easyocr.tar.gz
初步测试成功后,使用 systemctl --user start ucas-checkin.service
进一步测试作为 systemd service 时的运行情况。使用 systemctl --user status ucas-checkin.service
查看打卡日志,使用 systemctl --user list-timers ucas-checkin.timer
来查看上次和下次打卡时间。
本脚本默认在每天 6:00 至 7:00 之间随机选择一个时间打卡一次,请确保你的系统时钟和时区设置是正确的,或者自行编辑 ucas-checkin.timer
文件设置打卡时间。
systemd 的配置文件和本 README 中的 开始
部分借鉴于 iBug/thu-checkin 项目。