Python自动登陆、登出南京理工大学NJUST校园网程序

本文程序针对南京理工大学NJUST和NJUST-FREE校园网开发,其他学校无法使用。

文章目录

  • 开发目的
  • 使用说明
  • 参考资料


开发目的

今天突然想要用代码实现一下自动登陆校园网,上网搜寻了一下。知乎有一些教程,CSDN也有一些完整的代码,但是我跟随教程或者直接运行现有代码都没有能够成功登陆,且NJUST校园网付费,我想要一个“登出”功能,借助Kimi自己写了一下。本人技术不精,以实现功能为主。


使用说明

请确保连接上校园网后运行程序,根据提示输入数字序号,例如“1”,“2”。

本人使用Python 3.10.15,Requests==2.32.3环境运行正常。使用请填写自己的账号和密码。

Python代码如下:

import requests

# 登录 API URL
login_api_url = "http://m.njust.edu.cn/api/portal/v1/login"

# 退出 API URL
logout_api_url = "http://m.njust.edu.cn/api/portal/v1/logout"

# 登录数据
data = {
    "username": "xxxxxxxxxxxx", #【替换为自己的账号】
    "password": "xxxxxx"        #【替换为自己的密码】
}

# 请求头
headers = {
    "Content-Type": "application/json",
    "Accept": "application/json",
    "Referer": "http://m.njust.edu.cn/portal/index.html?v=202011022108",
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36 Edg/134.0.0.0",
    "X-Requested-With": "XMLHttpRequest"
}

def login():
    try:
        # 发送 POST 请求
        response = requests.post(login_api_url, json=data, headers=headers)
        response.raise_for_status()  # 检查 HTTP 错误

        # 解析响应的 JSON 数据
        response_json = response.json()

        # 检查 "reply_code" 是否等于 0
        if response_json.get("reply_code") == 0:
            print("登录成功!")
        else:
            print("登录失败。")

    except Exception:
        print("登陆出错,请检查网络连接。")

def logout():
    try:
        response = requests.post(logout_api_url, json=data, headers=headers)
        response.raise_for_status() # 检查 HTTP 错误
        print("登出成功!")
    except Exception:
        print("登出失败,原因未知。")

def main():
    while True:
        action = input("进行什么操作?(1.登陆/2.登出/0.停止程序): ").strip().lower()
        if action == "1":
            login()
            break
        elif action == "2":
            logout()
            break
        elif action == "0":
            break
        else:
            print("错误的输入,请重新输入[序号]。")

if __name__ == "__main__":
    main()

自认为的几个优势是,目前这个程序是肯定可以用的,只需要填写账号和密码,且可以登出。运行程序不用打开浏览器。如果需要打包、自动运行、持久化等功能,可以参考下方链接自行开发。

如果无法使用此程序,可以自行根据下方教程修改headers和login_api_url、logout_api_url的值。

参考资料

知乎教程: 自动登录校园网脚本(Python实现)
CSDN代码: njust校园网自动认证

你可能感兴趣的:(python,开发语言)