Skip to content

cherryamme/sysu-gym-book

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

中山大学体育馆自动预约脚本

这是一个使用Playwright + stealth插件模拟人类行为的自动预约脚本,专门用于中山大学体育馆的羽毛球场地预约。

功能特点

  • 🤖 智能反检测: 使用stealth插件和人类行为模拟,有效避免反脚本检测
  • 🔍 自动验证码识别: 使用ddddocr自动识别验证码
  • 全自动化流程: 从登录到预约完成的全自动操作
  • 🛡️ 防封机制: 模拟真实用户行为,降低被封禁风险
  • 📝 详细日志: 完整的操作日志记录
  • 🔧 灵活配置: 支持命令行参数和环境变量配置

安装步骤

1. 克隆项目

git clone <your-repo-url>
cd sysu-gym-web

2. 运行安装脚本

./install.sh

3. 手动安装(如果自动安装失败)

# 安装Python依赖
pip3 install -r requirements.txt

# 安装Playwright浏览器
python3 -m playwright install chromium

使用方法

基本用法

python3 gym_booking.py --username 你的用户名 --password 你的密码

自定义参数

python3 gym_booking.py \
  --username 你的用户名 \
  --password 你的密码 \
  --campus "广州校区南校园" \
  --facility "南校园新体育馆羽毛球场(学生)" \
  --date "9-17" \
  --time "21:00-22:00"

调试模式

python3 gym_booking.py --username 你的用户名 --password 你的密码 --debug

使用环境变量

  1. 创建 .env 文件:
cp .env.example .env
  1. 编辑 .env 文件,填入你的配置:
USERNAME=你的用户名
PASSWORD=你的密码
CAMPUS_NAME=广州校区南校园
FACILITY_NAME=南校园新体育馆羽毛球场(学生)
DATE_NUMBER=9-17
TIME_SLOT=21:00-22:00
  1. 运行脚本:
python3 gym_booking.py

参数说明

参数 说明 默认值
--username 登录用户名 必填
--password 登录密码 必填
--campus 校区名称 广州校区南校园
--facility 体育馆名称 南校园新体育馆羽毛球场(学生)
--date 预约日期 9-17
--time 预约时间段 21:00-22:00
--debug 调试模式(显示浏览器) False

预约流程

脚本会自动执行以下步骤:

  1. 打开网站: 访问 gym.sysu.edu.cn 并等待人机验证
  2. 登录: 输入用户名和密码
  3. 验证码: 自动识别并输入验证码
  4. 点击登录: 点击登录按钮
  5. 关闭通知: 关闭登录后的悬浮窗通知
  6. 选择校区: 点击指定的校区
  7. 选择体育馆: 点击指定的体育馆
  8. 选择日期: 点击指定的日期
  9. 选择时间段: 查找并点击可预约的时间段
  10. 确认预约: 点击预约按钮
  11. 检查结果: 验证预约是否成功

防封机制

  • Stealth插件: 移除自动化标识,模拟真实浏览器
  • 人类行为模拟: 随机延迟、鼠标移动、逐字符输入
  • 真实User-Agent: 使用真实的浏览器标识
  • 随机点击位置: 避免固定位置点击被检测
  • 网络等待: 模拟真实用户的网络延迟

日志文件

脚本运行时会生成 gym_booking.log 日志文件,记录详细的操作过程。

注意事项

  1. 网络要求: 需要校园网环境才能访问体育馆预约网站
  2. 时间窗口: 建议在预约开放时间前运行脚本
  3. 账号安全: 请妥善保管你的登录凭据
  4. 使用频率: 避免过于频繁的使用,以免触发反爬虫机制
  5. 验证码: 如果验证码识别失败,脚本会自动重试

故障排除

常见问题

  1. 验证码识别失败

    • 检查网络连接
    • 尝试调试模式查看验证码图片
    • 手动验证验证码识别准确性
  2. 元素找不到

    • 网站结构可能发生变化
    • 检查XPath配置是否正确
    • 使用调试模式查看页面状态
  3. 登录失败

    • 检查用户名密码是否正确
    • 确认账号状态正常
    • 检查是否需要人机验证

调试模式

使用 --debug 参数可以打开浏览器窗口,实时查看脚本执行过程:

python3 gym_booking.py --username 你的用户名 --password 你的密码 --debug

免责声明

本脚本仅供学习和研究使用,请遵守相关网站的使用条款。使用者需自行承担使用风险,作者不承担任何责任。

许可证

MIT License

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published