[Python]校园网(网页认证)开机/断网自动连接

目录

简介

环境配置

实现过程 

分析校园网登录页面,获取URL

编写代码

运行程序

打包程序

使用说明

配置账号密码

设置开机启动

测试


简介

针对网页认证方式的校园网,实现登录的自动化。苦于校园网断线,断电重启之后无法借助远程软件(teamview、todesk、向日葵等)进行远程的问题。

1、开机自动连接

2、设置时间检查登录状态 自动重连

环境配置

主要版本如下:

python                    3.9

requests                  2.28.1

pyinstaller               4.8

建议安装conda创建新的虚拟环境,然后配置到pycharm,便于后续应用

  1. 新建环境:conda create -n name python=3.9  name换成自定义的英文名 
  2. 激活环境:conda activate name
  3. 安装所需的包
    conda install requests
    conda install pyinstaller
      

实现过程 

分析校园网登录页面,获取URL

打开登录界面,填入你自己的账号和密码(先别点击登录),然后按下 F12

点击了登录后:

[Python]校园网(网页认证)开机/断网自动连接_第1张图片

这个 URL 中包含了学号和密码和IP(上图打码的地方);使用 GET 方式来登录,这意味着我们的账号和密码是直接以明文的形式出现在 URL 中,通过 GET 请求来登录校园网会方便很多

如果学校是像这样用 GET 请求直接登录的,可以试试复制,直接访问这个URL,如果可以直接登录,那边可以按照接下来的方法实现自动登录

编写代码

一般直接替换schoolWebLoginURL 为前文URL,将schoolWebURL替换为学校的验证网址,即可实现本机登录;

为便于打包使用、修改账号密码以及在不同的主机使用

  1. 创建data.txt文件 填写保存校园网账号密码

[Python]校园网(网页认证)开机/断网自动连接_第2张图片

      2. 基于socket自动获取本机IP

#
#@author:runepic
#@date:20221207
# _*_ coding : utf-8 _*_

import re    # 正则表达式,用于匹配字符
import requests    # 用于向目标网站发送请求
import time
import socket
import datetime
schoolWebURL="http://10.10.10.9"

# 函数 gethostname() 返回当前正在执行 Python 的系统主机名
ip = socket.gethostbyname(socket.gethostname())
print(ip)

data = []
file = open("data.txt",'r')  #打开文件
file_data = file.readlines() #读取所有行
name = file_data[0].split(':')[1].replace('\n','') 
password = file_data[1].split(':')[1].replace('\n','') 
#tmp_list[-1] = tmp_list[-1].replace('\n',',') #去掉换行符

while(True):
    response = requests.get(schoolWebURL)
    # print(response)
    # 正则表达式,匹配标签中的内容
    pattern = re.compile('<title>(.*?)', re.S)
    title = re.findall(pattern, response.text)
    title = title[0]    # 将格式转为字符串
    # print(title)
    
    if title == '注销页':    # 根据上面的分析填入相应的字符        
        # print("保持登录,请不要关闭窗口...")
        time.sleep(60*60)
        pass
    else:
        # 使用GET方式登录校园网
        # 这行是你需要根据自己的情况修改的地方
        schoolWebLoginURL = 'http://10.10.10.9:801/eportal/?c=Portal&a=login&login_method=1&user_account='+name+'&user_password='+password+'&wlan_user_ip='+ip+'&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=3.0'    
        # requests.get(schoolWebLoginURL)
        response = requests.get(schoolWebLoginURL).status_code  # 直接利用 GET 方式请求这个 URL 同时获取状态码
        # print("状态码{}".format(response))  # 打印状态码
        if(response==200):
            print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')+"登录成功,请不要关闭窗口...")

    time.sleep(5) 

运行程序

退出校园网,执行代码,检查是否登陆成功

打包程序

conda中激活自定义的环境,cd进入代码目录

[Python]校园网(网页认证)开机/断网自动连接_第3张图片

 输入:pyinstaller -F login.py

等待打包完成即可:

[Python]校园网(网页认证)开机/断网自动连接_第4张图片

 在 dist 目录下就有一个 exe 程序,将txt文件复制到dist文件夹中,像刚才那样断开校园网然后运行这个 exe 程序看看能否正常登录校园网

使用说明

配置账号密码

在data.txt文件中配置账号密码

[Python]校园网(网页认证)开机/断网自动连接_第5张图片

设置开机启动

创建exe程序桌面快捷方式

[Python]校园网(网页认证)开机/断网自动连接_第6张图片

Win+R 输入shell:startup回车执行

将快捷方式放入

[Python]校园网(网页认证)开机/断网自动连接_第7张图片

测试

双击exe 显示本机IP即为正常状态 不要关闭窗口可保持校园网登录(每小时自动检查一次登录状态),不慎关闭可重新打开

[Python]校园网(网页认证)开机/断网自动连接_第8张图片

设置开机启动之后,开机即可自动登录校园网,不要关闭窗口

[Python]校园网(网页认证)开机/断网自动连接_第9张图片

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