- 确保已安装 Python 3.6+
- 安装必要的依赖库:
pip install requests beautifulsoup4 pycryptodome
在 myData.json 文件中配置你的个人信息:
{
"username": "你的学号",
"password": "你的密码",
"courseType": "跨专业课程体系", // 默认就是跨专业
"selectedCourseIds": "需要抢的课程id" // 一开始保持这个不变
}选课类型可选值:
- "限选"
- "必修"
- "跨专业课程体系"
- "文理通识"
- "MOOC"
Warning
一定要在开始抢课前 30 分钟这样先跑一次获取课程 id,因为学校就是在获取课程 id 上加载不出来,否则没有提前跑的话还是抢不到
如果你不知道课程 ID,可以先运行程序获取课程列表,此时selectedCourseIds中填写"需要抢的课程id",程序会自动保存课程信息后退出。
python main.py运行后,将在当前目录生成两个文件:
allCourseInfo.json:包含完整的课程详细信息keyCourseInfo.json:包含简化的课程关键信息(课程 ID、名称、教师等)
从 keyCourseInfo.json 中找到你想要选的课程 ID,更新到 myData.json 文件中,然后再次运行程序:
python main.py系统将自动尝试为你选课。每门课程会尝试 5 次,如遇到冲突课程会自动跳过。
如果你想自定义抢课流程,可以直接使用 FuckCourse 类的 API:
from FuckCourse import FuckCourse
# 初始化FuckCourse对象
fuckCourse = FuckCourse(
username="你的学号",
password="你的密码",
courseType="选课类型" # 限选/必修/跨专业课程体系/文理通识/MOOC
)- 获取课程信息
# 保存所有可选课程信息到json文件
fuckCourse.saveCourseInfo()- 选择单门课程
# 通过课程ID选择单门课程
fuckCourse.postCourseById("课程ID")- 批量选择课程
# 通过课程ID列表批量选择课程
fuckCourse.postCourseByIds(["课程ID1", "课程ID2", "课程ID3"])- 获取登录会话
# 获取已登录的session对象,可用于自定义请求
session = fuckCourse.getloginedSession()currentSemester: 当前学期,格式为"学年-学年学期" (例如: "2024-20251")currentSemesterYear: 当前学年,格式为"起始年-结束年" (例如: "2024-2025")currentSemesterNumber: 当前学期数字,1/2/3 分别对应第一/二/三学期postCourseSemester: 选课目标学期postCourseSemesterYear: 选课目标学年postCourseSemesterNumber: 选课目标学期数字
from FuckCourse import FuckCourse
import json
# 从配置文件读取信息
with open("myData.json", "r", encoding="utf-8") as f:
myData = json.load(f)
username = myData["username"]
password = myData["password"]
courseType = myData["courseType"]
selectedCourseIds = myData["selectedCourseIds"]
# 创建FuckCourse实例
fuckCourse = FuckCourse(
username=username,
password=password,
courseType=courseType
)
# 如果没有提供课程ID,则保存课程信息后退出
if selectedCourseIds[0] == "需要抢的课程id":
print("正在获取课程信息...")
fuckCourse.saveCourseInfo()
print("课程信息已保存,请查看keyCourseInfo.json获取课程ID")
else:
# 进行选课
print("开始抢课...")
fuckCourse.postCourseByIds(selectedCourseIds)- 请勿频繁运行程序,以免触发学校系统的防护机制
- 课程冲突会自动跳过,不会继续尝试
- 每门课程默认尝试 5 次,每次间隔 3 秒
- 请确保网络连接稳定
- 如遇登录验证码,程序可能会失效,需手动登录一次后再运行
- 请合理使用,遵守学校相关规定
本工具仅用于学习和研究目的,使用者需自行承担一切因使用本工具而产生的后果和责任。