利用 python 实现校园网自动登录

背景

利用 python 实现校园网自动登录通常涉及到模拟浏览器的行为,发送HTTP请求以完成登录过程。这需要你了解学校网络的登录机制,包括但不限于登录页面的URL、用户名和密码字段的名字、以及可能存在的验证码等。

代码

import requests
import schedule
import time
import subprocess
import platform
import re

# 校园网登录的URL和需要的数据字段,根据实际情况修改
login_url = 'http://202.113.95.244/a79.htm'  # 替换为实际的登录地址
username = 'user'  # 替换为你的用户名
password = '12306'  # 替换为你的密码


def check_network(host="www.baidu.com"):
    try:
        # 根据操作系统选择合适的参数
        param = '-n' if platform.system().lower() == 'windows' else '-c'
        # 执行ping命令
        response = subprocess.run(['ping', param, '1', host], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

        # Windows和Unix-like系统的输出格式略有不同,这里简单判断是否包含"ttl="
        if platform.system().lower() == 'windows':
            match = re.search(r'ttl=\d+', response.stdout.decode('utf-8', errors='ignore').lower())
        else:
            match = re.search(r'ttl=\d+', response.stdout.decode('utf-8', errors='ignore'))

        if match:
            print("网络已连接")
            return True
        else:
            print("网络未连接")
            return False
    except Exception as e:
        print(f"检查网络时出错: {e}")
        return False

def auto_login(url, username, password):
    try:
        # 构建要发送的数据字典
        payload = {
            'DDDDD': username,  # 用户名字段
            'upass': password,  # 密码字段
            '0MKKey': '登录(Login)',  # 提交按钮字段
            'savePassword': 'on'  # 如果勾选了记住密码,则添加此字段
        }

        # 设置请求头,尽可能模仿浏览器行为
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
            'Content-Type': 'application/x-www-form-urlencoded'
        }

        # 发送POST请求以尝试登录
        response = requests.post(url, data=payload, headers=headers)

        # 检查响应状态码是否为200,表示请求成功
        if response.status_code == 200:
            print("登录成功")
        else:
            print(f"登录失败,状态码: {response.status_code}")
            print(response.text)  # 打印服务器返回的内容以便调试

    except Exception as e:
        print(f"自动登录时出错: {e}")

def job():
    print('正在监测!')
    if not check_network():
        print("尝试自动登录...")
        auto_login(login_url, username, password)

# 设置每5秒运行一次job函数
schedule.every(5).seconds.do(job)

if __name__ == "__main__":
    while True:
        schedule.run_pending()
        time.sleep(15)

设置Windows开机自启动

  1. 创建Python脚本的快捷方式:

    • 右键点击桌面空白处,选择新建 -> 快捷方式。
    • 输入 Python 解释器路径以及你的 Python 脚本路径作为目标,例如 "C:\Python39\python.exe" "C:\path\to\your_script.py"
  2. 将快捷方式复制到启动文件夹:

    • 按 Win + R 键,输入 shell:startup,这会打开一个指向当前用户启动文件夹的窗口。
    • 将你创建的快捷方式复制到这里。

这种方法会在每次用户登录时自动运行该脚本。

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