河南农业大学登录校园网程序太麻烦,无法无网自动静默登录,该代码可完美解决此问题。
题主电脑版本:
设备名称 111
处理器 12th Gen Intel(R) Core(TM) i5-12400F 2.50 GHz
机带 RAM 32.0 GB (31.8 GB 可用)
设备 ID 497E9170-80AB-4B29-86E6-8F2977B461AF
产品 ID 00331-10000-00001-AA583
系统类型 64 位操作系统, 基于 x64 的处理器
笔和触控 单一触控支持
版本 Windows 11 专业版
版本号 24H2
安装日期 2024/11/25
操作系统版本 26120.2705
体验 Windows 功能体验包 1000.26100.42.0
代码实例:
# 校园网自动登录脚本(Windows 任务计划版)
# ============================================
# 适用于 Python 3.x 及相应依赖库
# By 河南农业大学 周平西 zpx131568@gmail.com
# 本脚本用于校园网自动登录,建议在实验室或固定工位的电脑后台运行,仅需更改#校园网登录信息。
#
# 🚀 Windows 任务计划自动启动(静默执行,无黑框)
# ----------------------------------------
# 1. 打开任务计划程序(Win + R → taskschd.msc)
# 2. 创建基本任务 → 触发器选择 “计算机启动时”
# 3. 操作 → 选择 “启动程序”
# - 程序/脚本(换自己的pythonw.exe位置): "C:\\Users\\你的用户名\\AppData\\Local\\Programs\\Python\\Python313\\pythonw.exe"
# - 添加参数(换自己的程序位置): "C:\\Data\\Python\\Daily_Program\\校园网自动登录.py"
# 4. 常规设置:
# - ✔ 勾选 "使用最高权限运行"
# 5. 条件设置(确保开机必运行):
# - 取消勾选 "只有在计算机使用交流电源时才启动"
# - 取消勾选 "只有在网络可用时才启动"
# 6. 高级设置:
# - 启动时延迟 30 秒(防止系统未加载完毕)
# - 失败后 1 分钟重试(最多 3 次)
#
# 📌 确保 Python 及依赖库已安装
# 💡 日志存储位置:C:\\Users\\你的用户名\\campus_login_log.txt
# 🚀 Windows 通知提醒:脚本运行状态可通过通知栏查看
#
# ============================================
import requests
import time
import subprocess
import os
from plyer import notification
# 校园网登录信息
LOGIN_URL = "http://10.0.108.3/a70.htm"
USERNAME = "000000" # 你的账号
PASSWORD = "000000" # 你的密码
# 记录日志的目标
LOG_FILE = os.path.expanduser("~") + "\\campus_login_log.txt"
PING_HOST = "www.baidu.com"
def log_message(message):
"""记录日志并打印"""
timestamp = time.strftime("[%Y-%m-%d %H:%M:%S] ", time.localtime())
log_entry = timestamp + message
with open(LOG_FILE, "a", encoding="utf-8") as f:
f.write(log_entry + "\n")
f.flush() # 立即写入磁盘,防止日志丢失
print(log_entry, flush=True) # 立即打印,防止缓存影响
def show_notification(title, message):
"""使用 plyer 发送 Windows 通知"""
notification.notify(title=title, message=message, app_name="校园网自动登录", timeout=5)
def check_internet():
"""通过 ping 检测网络连通性"""
try:
return "TTL=" in subprocess.run(["ping", "-n", "1", PING_HOST], capture_output=True, text=True).stdout
except Exception as e:
log_message(f"❌ 网络检测失败: {e}")
return False
def login_campus_network():
"""尝试登录校园网"""
try:
response = requests.post(
LOGIN_URL,
data={"DDDDD": USERNAME, "upass": PASSWORD, "0MKKey": "123456"},
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
"Referer": LOGIN_URL,
"Origin": "http://10.0.108.3",
"Content-Type": "application/x-www-form-urlencoded",
},
timeout=5,
)
status_msg = "✅ 登录成功!" if response.status_code == 200 else f"⚠️ 登录失败,状态码:{response.status_code}"
except requests.RequestException as e:
status_msg = f"❌ 登录请求失败: {e}"
log_message(status_msg)
show_notification("校园网自动登录", status_msg)
if __name__ == "__main__":
log_message("📢 启动校园网自动登录")
show_notification("校园网自动登录", "📢 任务已启动,正在检测网络...")
while True:
try:
if check_internet():
log_message("[+] 网络正常,无需登录。")
else:
log_message("🚨 无网络,尝试登录...")
show_notification("校园网自动登录", "🚨 无网络,尝试自动登录...")
login_campus_network()
except Exception as e:
log_message(f"❌ 运行时错误: {e}")
time.sleep(30) # 每 30 秒检测一次
登录效果