The Nanjing University login module, which can be used to login to the various campus web sites
Project description
NJUlogin
- 南京大学统一身份认证登录模块,可用于登录校园各种网站。
安装
注:由于使用了新的打包方式以及一些其他原因,自v3.3起,python依赖调整为python>=3.10,<4.0
,并且在pypi上删除所有旧版包。安装旧版方法(二选一):
- 从Github releases中下载对应版本的
.whl
文件并pip install xxx.whl
- 克隆Github仓库并且checkout到对应tag的分支后使用
pip install .
安装。
从 PyPI 安装(推荐)
pip install NJUlogin
从源码安装
git clone https://github.com/Do1e/NJUlogin.git
cd NJUlogin
pip install .
# Or `pip install -e .` for editable mode
或者使用 poetry:
poetry install
aur
如果你使用 Arch Linux 或基于 Arch 的发行版,可以通过 AUR 安装:
yay -S python-njulogin
使用
- 包含三种登录方法,扫码登录、账号密码登录、加载cookies登录,使用方法见demos文件夹
- 扫码登录:构造
QRlogin
对象即可调用login
方法进行登录。会在终端打印统一身份验证的二维码,使用手机扫码登录即可。(未测试字体,若出问题请尝试更换终端字体,如MesloLGS NF
、Fira Code
,也会在当前目录保存图片文件作为备选方案) - 账号密码登录:使用账号密码作为参数构造
pwdLogin
对象即可调用login
方法进行登录。 - 加载cookies登录:构造
baseLogin
对象即可调用load
方法加载cookies,cookies需要通过上述两种登录方式后使用export
方法导出为文件。load
和export
方法可以设置保存文件的密码防止泄露。 login
方法需要传入登录的目的网址,比如https://p.nju.edu.cn/api/cas/getinfo
表示登录到校园网,返回的网页会保存在self.response
中。目的网址也可以留空。- 目的网址获取方法(举一反三即可):打开浏览器输入
p.nju.edu.cn
,会发现自动跳转到https://authserver.nju.edu.cn/authserver/login?service=https://p.nju.edu.cn/api/cas/getinfo
,即为service=
后面的内容。 - 返回值
session
记录了登录状态,之后即可使用requests
中的方法进行进一步的操作,也可以使用构造出的对象调用get
或post
方法。(具体能有什么操作就看各位的创意了,也可以查看我的示例)
方法/属性列表:
login(self, dest: str = None)
:登录get(self, url: str, **kwargs) -> requests.Response
:重载了requests.get
方法post(self, url: str, data: dict, **kwargs) -> requests.Response
:重载了requests.post
方法logout(self)
:退出登录logout_all(self)
:退出所有设备的登录available
:判断是否登录成功export(self, filename: str, password: str = None)
:导出cookies,推荐在公用机器上使用环境变量设置文件密码load(self, filename: str, password: str = None)
:加载cookies,推荐在公用机器上使用环境变量设置文件密码
v3.4起集成了 https://p.nju.edu.cn 的登录客户端,使用方法如下:
# 安装后
NJUlogin -h
# 或者
uvx NJUlogin -h
usage: NJUlogin [-h] [-l loginlib] [-i] [-o] [-k online_id] [-p] [-a name] [-d device_id]
options:
-h, --help show this help message and exit
-l, --loginlib loginlib
登录库,QRlogin或pwdLogin,默认为QRlogin
-i, --login 登录
-o, --logout 登出
-k, --kick online_id 登出指定在线设备,使用`-p`可获取online_id
-p, --printinfo 打印信息
-a, --add name 添加当前设备为无感认证设备,name为设备名称
-d, --delete device_id
删除无感认证设备,指定设备ID,使用`-p`可获取device_id
补充
- 这个项目很难进行完整的测试,毕竟难以预测所有的网络情况,而且网站的登录方式也会有更新,因此欢迎大家提出issue,我会尽力解决(只要我还在南大)。
致谢
- 验证码识别代码来自sml2h3/ddddocr
开源许可
本项目采用 MIT 开源许可证。
免责声明
- 本项目仅供学习交流使用,不得用于商业用途,如有侵权请联系删除
- 用户使用本项目所产生的任何后果,需自行承担风险
- 开发者不对使用本项目产生的任何直接或间接损失负责
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
njulogin-3.4.3.tar.gz
(6.8 MB
view details)
Built Distribution
File details
Details for the file njulogin-3.4.3.tar.gz
.
File metadata
- Download URL: njulogin-3.4.3.tar.gz
- Upload date:
- Size: 6.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.5 Linux/6.15.4-arch2-1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
e0f4cbcfe08be62ad0a88832ac5506fb35418f73f131d6c1c7c592615ca696c1
|
|
MD5 |
a9d2280893a29db09e37c6cc6eb08d37
|
|
BLAKE2b-256 |
6ad4d81e0299b5b645492d1e33746794436f04a5f52cdeb7708c8a4cd73e568f
|
File details
Details for the file njulogin-3.4.3-py3-none-any.whl
.
File metadata
- Download URL: njulogin-3.4.3-py3-none-any.whl
- Upload date:
- Size: 6.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.5 Linux/6.15.4-arch2-1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
a5d95145774d527696a9e3236712d037df850d1e2fb77c5973949b4b983a6bb4
|
|
MD5 |
218cbf16935eeca3878bb05756b1440b
|
|
BLAKE2b-256 |
422f64f9152d952efd8816164860889fd693ea8c0e101ba8344ee87f96475c09
|