Skip to main content

北京理工大学统一身份验证登录模块

Project description

bit-login 北京理工大学统一身份认证登录库

为北理工设计的统一身份认证登录模块,只需要账号密码,即可获取各个平台鉴权,直接提供 session 供使用。支持 Python 库调用和 RESTful API 服务两种方式。

📥 安装

git clone https://github.com/yht0511/bit-login.git
cd bit-login
pip install -r requirements.txt

🚀 快速开始 (Python SDK)

基础登录

import 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.jwb(jwb_login.get_session()).get_all_score()

# 3. 登录教学中心/一站式大厅 (JXZXEHALL)
hall_login = bit_login.jxzxehall_login().login(username, password)
hall_service = bit_login.jxzxehall.jxzxehall(hall_login.get_session())
# 获取学分信息
credits = hall_service.get_credit()
# 获取课程表
courses = hall_service.get_courses()

# 4. 其他服务支持
# - bit_login.ibit_login()      # iBIT
# - bit_login.yanhekt_login()   # 延河课堂
# - bit_login.library_login()   # 图书馆

🌐 RESTful API 服务

本项目提供了一个基于 FastAPI 的高性能 RESTful API 服务,支持连接池复用和自动重试,适合生产环境使用。

启动服务

# 启动服务器 (默认端口 8000)
bash start.sh

# 或者手动启动
gunicorn server:app --workers 4 --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000

🐳 Docker 部署

如果你更喜欢使用 Docker,我们也提供了 Dockerfile 支持一键构建和部署。

1. 构建镜像

在项目根目录下执行以下命令:

docker build -t bit-login-server -f server/Dockerfile .

2. 启动容器

docker run -d -p 16384:16384 --name bit-login-server bit-login-server

服务启动后,可以通过 http://localhost:16384 访问服务。

3. 环境变量配置

支持通过环境变量调整服务配置:

  • 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"
}

1. 教务系统 - 获取成绩 (全部)

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": "..."}'

2. 教务系统 - 获取成绩 (指定学期)

URL: /api/jwb/score 参数:

  • kksj (string, 可选): 开课时间(学期),如 "2023-2024-1"

3. 教学中心 - 获取个人信息

URL: /api/jxzxehall/student_data

4. 教学中心 - 获取学分信息

URL: /api/jxzxehall/credit

5. 教学中心 - 获取课程表

URL: /api/jxzxehall/courses 参数:

  • kksj (string, 可选): 学期代码

🛠️ 项目结构

  • bit_login/: 核心 SDK 代码
    • login.py: 基础登录逻辑 (SSO)
    • service.py: 各个服务的登录封装
    • services/: 具体业务逻辑 (如教务查分、课程表)
  • server.py: FastAPI 服务端入口
  • test.py: SDK 测试脚本

🔗 参考仓库

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bit_login-3.2.0-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file bit_login-3.2.0-py3-none-any.whl.

File metadata

  • Download URL: bit_login-3.2.0-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for bit_login-3.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bb90a741578b9c56a0149854f9bdb328306c16826289613aa05505ec8008f1e4
MD5 28fff0d815c1ced19ed633d41ac6e1da
BLAKE2b-256 452fcaa906adad8e5fa7ccf6447561b4f28c802ff4eb23802827999250dcf768

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page