华南师范大学校园网自动登录脚本逆向分析:从F12抓包到Python requests模拟POST请求全解析

发布时间:2026/5/16 19:05:29

华南师范大学校园网自动登录脚本逆向分析:从F12抓包到Python requests模拟POST请求全解析 华南师范大学校园网认证机制深度解析与自动化实践校园网络认证系统是高校信息化建设的重要组成部分其背后的技术实现往往涉及多种网络协议和安全机制。本文将以华南师范大学校园网为例深入剖析其认证流程的技术细节并探讨如何通过Python实现自动化登录的全过程。1. 校园网认证技术基础现代校园网认证系统通常采用Portal认证方式这是一种基于Web的认证技术。当用户设备连接到校园网络时会被重定向到一个特定的认证页面只有通过身份验证后才能访问互联网资源。关键认证技术对比认证类型工作原理安全性实现复杂度Portal认证基于HTTP/HTTPS的Web重定向中等较低802.1X认证基于EAP协议的链路层认证高较高PPPoE认证基于PPP协议的拨号认证中等中等华南师范大学校园网采用的是典型的Portal认证方案其技术实现具有以下特点认证流程用户设备获取IP地址发起HTTP请求被拦截重定向至认证页面提交凭证进行验证认证成功后开放网络访问会话保持依赖Cookie和Session机制通常设置有效期为数小时断网后需要重新认证# 基础认证请求示例 import requests session requests.Session() login_url https://wifi.scnu.edu.cn:8443/eportal/InterFace.do?methodlogin response session.post(login_url, data{ userId: your_username, password: encrypted_password, service: , queryString: encoded_network_info })2. 认证流程逆向工程实践要实现对校园网认证系统的自动化操作首先需要完整理解其认证流程。通过浏览器开发者工具可以清晰地观察到整个认证过程的数据交互。2.1 网络请求捕获与分析使用Chrome开发者工具的Network面板我们可以捕获到认证过程中的关键请求初始重定向请求访问任意HTTP网站被拦截返回302重定向到认证页面携带原始访问URL作为参数认证提交请求POST方法提交到InterFace.do接口Content-Type为application/x-www-form-urlencoded包含加密后的用户凭证和网络环境信息关键请求头分析Origin和Referer用于防止CSRF攻击Content-Type指定表单数据的编码方式Cookie包含会话标识和用户偏好设置2.2 表单数据结构解析认证请求的表单数据包含多个关键字段form_data { userId: 学号或工号, password: 加密后的密码字符串, service: , queryString: URL编码的网络参数, operatorPwd: , operatorUserId: , validcode: , passwordEncrypt: true }其中queryString参数包含丰富的网络环境信息wlanuserip客户端IPwlanacnameAC设备名称ssidnasipNAS设备IP...3. 密码加密机制探究校园网认证系统普遍会对密码进行加密传输以防止明文密码在网络上泄露。通过分析前端JavaScript代码可以还原加密过程。3.1 前端加密流程RSA公钥获取认证页面加载时动态获取通常通过特定接口返回密码加密过程对原始密码进行特定编码使用RSA公钥加密结果转换为十六进制字符串// 前端加密伪代码 function encryptPassword(password) { const publicKey getPublicKey(); const encrypted RSA.encrypt(publicKey, password); return bytesToHex(encrypted); }3.2 Python实现加密要在Python中实现相同的加密逻辑需要使用相应的加密库from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 import binascii def encrypt_password(password, public_key_str): # 加载公钥 public_key RSA.import_key(public_key_str) cipher PKCS1_v1_5.new(public_key) # 加密并转换为十六进制 encrypted cipher.encrypt(password.encode()) return binascii.hexlify(encrypted).decode()4. 自动化登录系统实现基于上述分析我们可以构建一个完整的自动化登录系统包含网络检测、自动认证和状态通知功能。4.1 核心功能实现import requests import time import os from win10toast import ToastNotifier class CampusNetworkAutoLogin: def __init__(self, config): self.session requests.Session() self.config config self.notifier ToastNotifier() def check_network(self): # 通过ping测试网络连通性 return os.system(ping baidu.com -n 1 -w 1000) 0 def login(self): try: response self.session.post( self.config[login_url], dataself.config[form_data], headersself.config[headers] ) return response.json().get(result) success except Exception as e: print(fLogin failed: {str(e)}) return False def run(self, interval30): while True: if not self.check_network(): if self.login(): self.notifier.show_toast( 校园网认证, 自动登录成功, duration5 ) time.sleep(interval)4.2 系统部署方案打包为可执行文件pyinstaller -F -w campus_network.py设置开机自启通过Windows任务计划程序触发器设置为工作站解锁时操作指向生成的exe文件配置通知系统确保Windows通知权限开启自定义通知图标和提示音5. 安全与稳定性考量实现自动化登录系统时必须考虑以下安全因素凭证存储安全避免明文保存密码考虑使用系统密钥环存储或要求运行时输入密码网络异常处理实现请求重试机制设置合理的超时时间处理各种HTTP状态码隐私保护不记录用户敏感信息及时清除内存中的临时凭证使用HTTPS保证传输安全# 改进的安全实现示例 import keyring def get_credentials(): username keyring.get_password(campus_network, username) password keyring.get_password(campus_network, password) if not username or not password: username input(请输入校园网账号: ) password input(请输入校园网密码: ) keyring.set_password(campus_network, username, username) keyring.set_password(campus_network, password, password) return username, password6. 技术方案扩展应用本文探讨的技术方案不仅适用于华南师范大学校园网经过适当调整也可应用于其他类似系统其他高校校园网分析各自的认证接口适配不同的参数要求处理可能的多因素认证企业网络认证可能需要处理证书认证集成AD域认证支持双因素认证流程公共WiFi系统处理短信验证码认证模拟微信认证流程应对动态验证机制在实际项目中我们发现不同机构的认证系统虽然表面差异很大但核心原理相通。通过系统化的分析方法和模块化的代码设计可以快速适配各种认证场景。

相关新闻