电脑定时开机及校园网自动登录设置

您所在的位置:网站首页 如何让电脑自动弹出校园网登录页面 电脑定时开机及校园网自动登录设置

电脑定时开机及校园网自动登录设置

2024-07-04 20:51| 来源: 网络整理| 查看: 265

1.应用背景

为了追求更高的性价比,多数人的电脑选择自己配置电脑,由于配置的是台式机,不方便移动。为了在自己现场的时候也可以使用就需要用到桌面远程操作。在学校的场景下,由于校园网需要登录认证才能连接互联网,所以在远程操作的时候需要保证校园网处于登录状态。同时,有时候需要将电脑关机以延长使用寿命,而现有的远程开机操作大多需要购买相关硬件(学生党资金不充裕),鉴于此,对电脑设置定时开机操作在一定程度上可以守住钱袋子。

2.电脑定时开机

由于博主使用的Windows系统为win10,这里的操作以win10为例。(经博主测试,电脑是双系统(win10+ubuntu20.4)也可定时开机)

2.1需要在Windows上设置的相关操作

1.打开控制面板,找到“系统与安全选项”

2.找到“电源选项”,点击,“更改电源按钮功能”

3.点击“更改当前不可用设置”

4.取消“启用快速启动(推荐)”

5.保存更改,关闭窗口,在Windows上的设置完成

2.2在bios上设置的相关操作

博主使用的主板是微星主板,这里设置以微星主板为例(各大主板操作应该相差不大)

1.进入bios,如果是高级模式则进行下一步操作,如果不是则按“F7”进入高级模式,高级模式如下图

2.单击SETTINGS,进入SETTINGS设置,选择高级选项

3.点击“唤醒事件设置”

4.将“即时(RTC)闹铃唤醒”更改为允许;“日期(月份)闹钟”设置为0表示为每天,设置为1表示为每月1日,2为2日,依次类推,最大为31日;后面的“时分秒”则设置为在某天的几点几分几秒(时间格式为24小时制)进行唤醒操作。博主的设置如下图,表示每天早上7点0分0秒进行唤醒操作

5.点击右上角“X”,选择保存并退出,bios上的相关操作到这里设置完成

3.校园网自动登录程序

博主学校的校园网认证采用的是网页认证,认证请求方式为GET。具体查看校园网认证请求方式可以打开浏览器(Chrome或则edge浏览器都可以),按“F12”打开开发者模式,打开校园网认证页面。如下图所示

1.校园网登录程序如下

需要额外安装的库

pyinstaller~=4.7 requests~=2.26.0 import subprocess import time import requests class Network: def __init__(self, userId, password, delay_time, ping_baidu, ping_campus): self.userId = userId self.password = password self.delay_time = delay_time*60 #秒转化为分钟 self.ping_baidu = ping_baidu self.ping_campus = ping_campus def __call__(self): self.run_loop() # 第一次执行 def ping_network(self, ip_or_domain): si = subprocess.STARTUPINFO() si.dwFlags |= subprocess.STARTF_USESHOWWINDOW try: output = subprocess.check_output('ping %s -n 3 -w 80' % ip_or_domain, stderr=subprocess.STDOUT, universal_newlines=True, startupinfo=si) if '100% packet loss' in output: # print('Ping failed: 100% packet loss') return False else: # print('Ping succeeded') return True except subprocess.CalledProcessError as e: # print('Ping failed:', e.returncode, e.output) return False def get_wlan_ip(self): headers = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", "Cache-Control": "max-age=0", "Connection": "keep-alive", "Host": self.ping_campus, "Referer": "http://%s" % self.ping_campus, "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0" } try: result = requests.get('http://%s' % self.ping_campus, headers) except requests.exceptions.RequestException as e: # print("请求异常:", e) return False ip = "" for i in range(result.text.find('ss5=') + 5, result.text.find('ss6=')): if result.text[i] == '"': break ip = ip + result.text[i] print("本机ip:%s" % ip) return ip def login(self): userip = self.get_wlan_ip() if userip : url = 'http://{}:801/eportal/portal/login?callback=dr1003&login_method=1&user_account=%2C0%2C{}&user_password={}&wlan_user_ip={}&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=4.2.1&terminal_type=1&lang=zh-cn&v=7923&lang=zh'.format( self.ping_campus, self.userId, self.password, userip) headers = { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", "Connection": "keep-alive", "Host": self.ping_campus, "Referer": "http://%s/" % self.ping_campus, "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0" } try: req = requests.get(url, headers) except requests.exceptions.RequestException as e: # print("请求异常:", e) return False if req.status_code == 200: return True else: return False else: return False def run_loop(self): while True : flag_campus = self.ping_network(self.ping_campus) flag_baidu = self.ping_network(self.ping_baidu) if flag_campus and flag_baidu : print("校园网连接正常!") else: if not flag_campus : print("无法访问校园网登录页面, 请检查是否连接网络!") elif not flag_baidu : print("校园网未登录, 尝试重连中...") relogin = self.login() time.sleep(3) # 等待3秒钟再判断是否登录成功 if relogin and self.ping_network(ping_baidu): print("校园网已登录") else: print("校园网登录失败") time.sleep(self.delay_time) if __name__ == '__main__': userId = "++++" #校园网账号 password = "++++" #校园网密码 delay_time = 360 #360分钟后判断是否需要重连 ping_baidu="baidu.com" #百度 ping_campus="++++++" #校园网认证页 network = Network(userId, password, delay_time, ping_baidu, ping_campus) network()

2.主函数中userid为自己的校园网账号;password为自己的校园网密码;ping_campus为检测电脑是否连接到互联网的网址,可以替换为任一国内互联网网址(bilibi.com之类);ping_campus为自己学校的校园网认证页网址

if __name__ == '__main__': userId = "++++" #联通加上%40unicom,电信加上%40telecom,移动加上%40Mobile password = "++++" delay_time = 360 #360分钟后判断是否需要重连 ping_baidu="baidu.com" #百度 ping_campus="++++++" #校园网认证页 network = Network(userId, password, delay_time, ping_baidu, ping_campus) network()

3.ping_network用于测试网络连通性

下面代码为Windows中使用

def ping_network(self, ip_or_domain): si = subprocess.STARTUPINFO() si.dwFlags |= subprocess.STARTF_USESHOWWINDOW try: output = subprocess.check_output('ping %s -n 3 -w 80' % ip_or_domain, stderr=subprocess.STDOUT, universal_newlines=True, startupinfo=si) if '100% packet loss' in output: # print('Ping failed: 100% packet loss') return False else: # print('Ping succeeded') return True except subprocess.CalledProcessError as e: # print('Ping failed:', e.returncode, e.output) return False

ubuntu下使用下面代码

def ping_network(self, ip_or_domain): ping_result = subprocess.call(['ping', '-c', '3', ip_or_domain]) # 判断Ping结果中是否有100%丢失 if ping_result == 0: return True else: return False

4.获取学校服务器分配的校园网IP地址,其中的headers根据不同学校可能有所不同,url为Request URL,可以浏览器开发者模式获取。对应填入即可

ip通过向校园网认证页发送请求所得到的响应提取出来

def get_wlan_ip(self): headers = { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", "Cache-Control": "max-age=0", "Connection": "keep-alive", "Host": self.ping_campus, "Referer": "http://%s" % self.ping_campus, "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0" } try: result = requests.get('http://%s' % self.ping_campus, headers) except requests.exceptions.RequestException as e: # print("请求异常:", e) return False ip = "" for i in range(result.text.find('ss5=') + 5, result.text.find('ss6=')): if result.text[i] == '"': break ip = ip + result.text[i] print("本机ip:%s" % ip) return ip

5.登录函数,与步骤4相同方式可以获得url和headers,

def login(self): userip = self.get_wlan_ip() if userip : url = 'http://{}:801/eportal/portal/login?callback=dr1003&login_method=1&user_account=%2C0%2C{}&user_password={}&wlan_user_ip={}&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=4.2.1&terminal_type=1&lang=zh-cn&v=7923&lang=zh'.format( self.ping_campus, self.userId, self.password, userip) headers = { "Accept": "*/*", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", "Connection": "keep-alive", "Host": self.ping_campus, "Referer": "http://%s/" % self.ping_campus, "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0" } try: req = requests.get(url, headers) except requests.exceptions.RequestException as e: # print("请求异常:", e) return False if req.status_code == 200: return True else: return False else: return False

6.在pycharm中选择终端,输入以下指令即可生成可执行文件

pyinstaller --onefile -w auto_connect.py #auto_connect.py替换成自己命名的名字

4.设置开机自启动

1.右键此电脑,管理;选择“创建任务”

2.常规设置,名称和描述无所谓,按选项选需要修改成第二项

3.触发器,选择“新建”,“开始任务”选择“启动时”

4.操作,选择“新建”,“浏览”找到自己生成的可执行文件,双击,确定

5.点击确定,就创建好任务了。以后只要电脑开机,就会自动运行程序了



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3