这是一个使用Playwright + stealth插件模拟人类行为的自动预约脚本,专门用于中山大学体育馆的羽毛球场地预约。
- 🤖 智能反检测: 使用stealth插件和人类行为模拟,有效避免反脚本检测
- 🔍 自动验证码识别: 使用ddddocr自动识别验证码
- ⚡ 全自动化流程: 从登录到预约完成的全自动操作
- 🛡️ 防封机制: 模拟真实用户行为,降低被封禁风险
- 📝 详细日志: 完整的操作日志记录
- 🔧 灵活配置: 支持命令行参数和环境变量配置
git clone <your-repo-url>
cd sysu-gym-web./install.sh# 安装Python依赖
pip3 install -r requirements.txt
# 安装Playwright浏览器
python3 -m playwright install chromiumpython3 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- 创建
.env文件:
cp .env.example .env- 编辑
.env文件,填入你的配置:
USERNAME=你的用户名
PASSWORD=你的密码
CAMPUS_NAME=广州校区南校园
FACILITY_NAME=南校园新体育馆羽毛球场(学生)
DATE_NUMBER=9-17
TIME_SLOT=21:00-22:00- 运行脚本:
python3 gym_booking.py| 参数 | 说明 | 默认值 |
|---|---|---|
--username |
登录用户名 | 必填 |
--password |
登录密码 | 必填 |
--campus |
校区名称 | 广州校区南校园 |
--facility |
体育馆名称 | 南校园新体育馆羽毛球场(学生) |
--date |
预约日期 | 9-17 |
--time |
预约时间段 | 21:00-22:00 |
--debug |
调试模式(显示浏览器) | False |
脚本会自动执行以下步骤:
- 打开网站: 访问 gym.sysu.edu.cn 并等待人机验证
- 登录: 输入用户名和密码
- 验证码: 自动识别并输入验证码
- 点击登录: 点击登录按钮
- 关闭通知: 关闭登录后的悬浮窗通知
- 选择校区: 点击指定的校区
- 选择体育馆: 点击指定的体育馆
- 选择日期: 点击指定的日期
- 选择时间段: 查找并点击可预约的时间段
- 确认预约: 点击预约按钮
- 检查结果: 验证预约是否成功
- Stealth插件: 移除自动化标识,模拟真实浏览器
- 人类行为模拟: 随机延迟、鼠标移动、逐字符输入
- 真实User-Agent: 使用真实的浏览器标识
- 随机点击位置: 避免固定位置点击被检测
- 网络等待: 模拟真实用户的网络延迟
脚本运行时会生成 gym_booking.log 日志文件,记录详细的操作过程。
- 网络要求: 需要校园网环境才能访问体育馆预约网站
- 时间窗口: 建议在预约开放时间前运行脚本
- 账号安全: 请妥善保管你的登录凭据
- 使用频率: 避免过于频繁的使用,以免触发反爬虫机制
- 验证码: 如果验证码识别失败,脚本会自动重试
-
验证码识别失败
- 检查网络连接
- 尝试调试模式查看验证码图片
- 手动验证验证码识别准确性
-
元素找不到
- 网站结构可能发生变化
- 检查XPath配置是否正确
- 使用调试模式查看页面状态
-
登录失败
- 检查用户名密码是否正确
- 确认账号状态正常
- 检查是否需要人机验证
使用 --debug 参数可以打开浏览器窗口,实时查看脚本执行过程:
python3 gym_booking.py --username 你的用户名 --password 你的密码 --debug本脚本仅供学习和研究使用,请遵守相关网站的使用条款。使用者需自行承担使用风险,作者不承担任何责任。
MIT License