为北理工设计的统一身份认证登录模块,只需要账号密码,即可获取各个平台鉴权,直接提供 session 供使用。支持 Python 库调用和 RESTful API 服务两种方式。
git clone https://github.com/yht0511/bit-login.git
cd bit-login
pip install -r requirements.txtimport bit_login
username = "your_username"
password = "your_password"
# 1. 登录 WebVPN
webvpn = bit_login.webvpn_login().login(username, password)
session = webvpn.get_session()
# 使用 session 访问校内资源
response = session.get("https://webvpn.bit.edu.cn/...")
# 2. 登录教务系统 (JWB)
jwb_login = bit_login.jwb_login().login(username, password)
# 获取成绩
scores = bit_login.jwb.score(jwb_login.get_session()).get_all_score()
# 3. 登录教学中心/一站式大厅 (JXZXEHALL)
hall_login = bit_login.jxzxehall_login().login(username, password)
# 获取学分信息
credits = bit_login.jxzxehall.credit(hall_login.get_session()).get_credit()
# 获取课程表
courses = bit_login.jxzxehall.courses(hall_login.get_session()).get_courses()
# 4. 其他服务支持
# - bit_login.ibit_login() # iBIT
# - bit_login.yanhekt_login() # 延河课堂
# - bit_login.library_login() # 图书馆本项目提供了一个基于 FastAPI 的高性能 RESTful API 服务,支持连接池复用和自动重试,适合生产环境使用。
# 启动服务器 (默认端口 8000)
bash start.sh
# 或者手动启动
gunicorn server:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000如果你更喜欢使用 Docker,我们也提供了 Dockerfile 支持一键构建和部署。
在项目根目录下执行以下命令:
docker build -t bit-login-server -f server/Dockerfile .docker run -d -p 16384:16384 --name bit-login-server bit-login-server服务启动后,可以通过 http://localhost:16384 访问服务。
支持通过环境变量调整服务配置:
WORKERS: Gunicorn 工作进程数 (默认: 4)PORT: 服务端口 (默认: 16384)HOST: 监听地址 (默认: 0.0.0.0)
示例:修改端口为 8080 并设置 8 个工作进程
docker run -d -p 8080:8080 \
-e PORT=8080 \
-e WORKERS=8 \
bit-login-server所有接口均为 POST 请求,Content-Type 为 application/json。
接口都需要携带用户的账号密码用于认证。
{
"username": "your_username",
"password": "your_password"
}URL: /api/jwb/all_score
参数:
detailed(bool, 可选): 是否获取详细信息
示例:
curl -X POST "http://localhost:8000/api/jwb/all_score" \
-H "Content-Type: application/json" \
-d '{"username": "...", "password": "..."}'URL: /api/jwb/score
参数:
kksj(string, 可选): 开课时间(学期),如 "2023-2024-1"
URL: /api/jxzxehall/student_data
URL: /api/jxzxehall/credit
URL: /api/jxzxehall/courses
参数:
kksj(string, 可选): 学期代码
bit_login/: 核心 SDK 代码login.py: 基础登录逻辑 (SSO)service.py: 各个服务的登录封装services/: 具体业务逻辑 (如教务查分、课程表)
server.py: FastAPI 服务端入口test.py: SDK 测试脚本