{"id":23486828,"url":"https://github.com/do1e/njulogin","last_synced_at":"2025-04-15T01:28:32.702Z","repository":{"id":62694059,"uuid":"561783422","full_name":"Do1e/NJUlogin","owner":"Do1e","description":"南京大学统一身份认证登录模块，可用于登录校园各种网站","archived":false,"fork":false,"pushed_at":"2024-11-20T02:51:51.000Z","size":6773,"stargazers_count":19,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-23T08:04:07.930Z","etag":null,"topics":["nanjing-university","nju"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Do1e.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-04T13:36:22.000Z","updated_at":"2025-02-26T06:09:56.000Z","dependencies_parsed_at":"2024-07-06T04:52:57.442Z","dependency_job_id":null,"html_url":"https://github.com/Do1e/NJUlogin","commit_stats":{"total_commits":32,"total_committers":1,"mean_commits":32.0,"dds":0.0,"last_synced_commit":"78234bf93803863a84dffb25b707c4eba42d3844"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Do1e%2FNJUlogin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Do1e%2FNJUlogin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Do1e%2FNJUlogin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Do1e%2FNJUlogin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Do1e","download_url":"https://codeload.github.com/Do1e/NJUlogin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248988333,"owners_count":21194403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nanjing-university","nju"],"created_at":"2024-12-24T22:17:25.200Z","updated_at":"2025-04-15T01:28:32.684Z","avatar_url":"https://github.com/Do1e.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NJUlogin\n\n* 南京大学统一身份认证登录模块，可用于登录校园各种网站，[Github link](https://github.com/Do1e/NJUlogin)，[PyPI link](https://pypi.org/project/NJUlogin/)。\n\n## 安装\n```bash\npip install NJUlogin -i https://mirror.nju.edu.cn/pypi/web/simple\n```\n\n注：由于使用了新的打包方式以及一些其他原因，自v3.3起，python依赖调整为`python\u003e=3.10,\u003c4.0`，并且在pypi上删除所有旧版包。安装旧版方法(二选一)：\n* 从[Github releases](https://github.com/Do1e/NJUlogin/releases)中下载对应版本的`.whl`文件并`pip install xxx.whl`\n* 克隆[Github仓库](https://github.com/Do1e/NJUlogin.git)并且checkout到对应tag的分支后使用`pip install .`安装。\n\n## 使用\n* 包含三种登录方法，**扫码登录**、**账号密码登录**、**加载cookies登录**，使用方法见[demos](demos/)文件夹\n\n\u003c/br\u003e\n\n* **扫码登录**：构造`QRlogin`对象即可调用`login`方法进行登录。会在终端打印统一身份验证的二维码，使用手机扫码登录即可。(未测试字体，若出问题请尝试更换终端字体，如`MesloLGS NF`、`Fira Code`，也会在当前目录保存图片文件作为备选方案)\n* **账号密码登录**：使用账号密码作为参数构造`pwdLogin`对象即可调用`login`方法进行登录。\n* **加载cookies登录**：构造`baseLogin`对象即可调用`load`方法加载cookies，cookies需要通过上述两种登录方式后使用`export`方法导出为文件。`load`和`export`方法可以设置保存文件的密码防止泄露。\n* `login`方法需要传入登录的目的网址，比如`http://p.nju.edu.cn/cas/\u0026renew=true`表示登录到校园网，返回的网页会保存在`self.response`中。目的网址也可以留空。\n* 目的网址获取方法（举一反三即可）：打开浏览器输入`p.nju.edu.cn`，会发现自动跳转到`https://authserver.nju.edu.cn/authserver/login?service=http%3A%2F%2Fp.nju.edu.cn%2Fcas%2F\u0026renew=true`，即为`service=`后面的内容，这里经过了编码，不解码直接作为目的地址传入也可以。\n* 返回值`session`记录了登录状态，之后即可使用`requests`中的方法进行进一步的操作，也可以使用构造出的对象调用`get`或`post`方法。（具体能有什么操作就看各位的创意了，也可以查看[我的示例](https://github.com/Do1e/p-dot-nju-login)）\n\n\n方法/属性列表：\n  * `login(self, dest: str = None)`：登录\n  * `get(self, url: str, **kwargs) -\u003e requests.Response`：重载了`requests.get`方法\n  * `post(self, url: str, data: dict, **kwargs) -\u003e requests.Response`：重载了`requests.post`方法\n  * `logout(self)`：退出登录\n  * `logout_all(self)`：退出所有设备的登录\n  * `available`：判断是否登录成功\n  * `export(self, filename: str, password: str = None)`：导出cookies\n  * `load(self, filename: str, password: str = None)`：加载cookies\n\n## 补充\n* 这个项目很难进行完整的测试，毕竟难以预测所有的网络情况，而且网站的登录方式也会有更新，因此欢迎大家提出issue，我会尽力解决（只要我还在南大）。\n\n## 致谢\n* 验证码识别代码来自[sml2h3/ddddocr](https://github.com/sml2h3/ddddocr)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdo1e%2Fnjulogin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdo1e%2Fnjulogin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdo1e%2Fnjulogin/lists"}