Skip to main content

The Nanjing University login module, which can be used to login to the various campus web sites

Project description

NJUlogin

  • 南京大学统一身份认证登录模块,可用于登录校园各种网站。

GitHub PyPI License: MIT

安装

注:由于使用了新的打包方式以及一些其他原因,自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 NFFira Code,也会在当前目录保存图片文件作为备选方案)
  • 账号密码登录:使用账号密码作为参数构造pwdLogin对象即可调用login方法进行登录。
  • 加载cookies登录:构造baseLogin对象即可调用load方法加载cookies,cookies需要通过上述两种登录方式后使用export方法导出为文件。loadexport方法可以设置保存文件的密码防止泄露。
  • 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中的方法进行进一步的操作,也可以使用构造出的对象调用getpost方法。(具体能有什么操作就看各位的创意了,也可以查看我的示例

方法/属性列表:

  • 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,我会尽力解决(只要我还在南大)。

致谢

开源许可

本项目采用 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)

Uploaded Source

Built Distribution

njulogin-3.4.3-py3-none-any.whl (6.9 MB view details)

Uploaded Python 3

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

Hashes for njulogin-3.4.3.tar.gz
Algorithm Hash digest
SHA256 e0f4cbcfe08be62ad0a88832ac5506fb35418f73f131d6c1c7c592615ca696c1
MD5 a9d2280893a29db09e37c6cc6eb08d37
BLAKE2b-256 6ad4d81e0299b5b645492d1e33746794436f04a5f52cdeb7708c8a4cd73e568f

See more details on using hashes here.

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

Hashes for njulogin-3.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a5d95145774d527696a9e3236712d037df850d1e2fb77c5973949b4b983a6bb4
MD5 218cbf16935eeca3878bb05756b1440b
BLAKE2b-256 422f64f9152d952efd8816164860889fd693ea8c0e101ba8344ee87f96475c09

See more details on using hashes here.

Supported by

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