CUMT中国矿业大学校园网自动登录脚本

CUMT中国矿业大学校园网自动登录脚本

背景

众所周知,CUMT是一个纪律严格的学校,工作日晚上断网不断电,并且由于我个人放浪不羁爱给电脑休眠😄,导致每天会经常需要重复登录校园网,而登录校园网是一个繁琐的过程,首先需要检查自己梯子下了没,然后还需要打开浏览器,访问一些网站,然后跳转到上网登录页,但是经常会有网站由于是https协议所以不能允许跳转,我自己访问百度就不能正常跳转。所以我们急需要一个简化这个操作的脚本,最好能一键登录。

image-20230226205315422

在网上查找到的自动登录校园脚本,有些是涉及底层的方法,主要过程是获取IP和发送请求,比较难以。有一个博客提出了直接操作指令型的脚本(类似快捷指令,Word的宏之类的),本文基于博主的方法并且为了适应CUMT的校园网做出了一些改变。

自动登录校园网 | wgx's blog

脚本介绍

该脚本基于Python语言,并且用到了Python RPA库,代码不到50行,基本原理是直接代码化我们打开网页,输入学号密码选择运营商的操作。

RPA(Robotic Process Automation)库是一组用于开发和执行自动化流程的软件库和工具集合。RPA库包含了各种功能和组件,可以帮助开发人员创建和管理自动化流程,从而实现大规模、高效率的业务自动化。

Python RPA:Python RPA是一个基于Python编程语言的开源RPA库,其库提供了各种自动化组件和工具,如屏幕录制、Web自动化、数据处理等。

——from ChatGPT

import requests
import rpa as r

id = ''     # 这里输入学号
pwd = ''    # 这里输入密码

def auto_login():


	data = requests.get("https://www.baidu.com/")
	try:
		_, url, _ = data.text.split("'")
	except:
		url = 'http://10.2.5.251/'
	# print(url)

	r.init(chrome_browser = True, headless_mode = False, visual_automation=True) # 第一次初始化,需要你的网络可以稳定的与 GitHub 进行通信,这里需要从 GitHub下载文件
	r.url(url) # url函数会调用 Chrome 浏览器,并且访问我们传入的参数。
	# 已登录则做退出处理
	if r.exist('//*[@name="logout"]'):
		r.close()
		print("成功登录了哦!")
	else:
	# 登录操作
		r.keyboard('[enter]') # 确认网址,让键盘从网址输入区来到网页页面区,方便后续键盘操作
		# 先后进行输入学号,选择网络运营商,输入密码
		r.type('//*[@type="text"]','[clear]' + id) # type 函数作用是输入文本,第一个参数XPath路径,选择类型名是type值是text的元素,这实际上是CMUT的学号输入文本区,第二个参数是清空操作加上要输入的学号
		r.click('//*[@id="edit_body"]/div[3]/div[2]/select') # click函数作用是模拟鼠标点击,这里点击的元素是网络运营商下拉列表
		r.keyboard('[down]'+'[down]'+'[enter]') # 模拟键盘操作向下键按两次(选择中国移动,如果是其他运营商请自行修改次数),然后回车确认
		r.type('//*[@type="password"]', pwd+'[enter]') # 第二个参数是我们要输入的密码,如果字符串中包含 [enter] 将会在输入结束后按下回车键。
		# 出现注销按钮说明成功登录
		if r.exist('//*[@name="logout"]'):
			print("成功登录了哦!")
		r.close()
	exit(0)


if __name__ == "__main__":

	auto_login()

代码比较简单易懂,执行效果就是打开Google Chrome——》进入上网登录页——》输入学号密码选择运营商——》登录并退出。

接下来的封装成.exe文件,我就不赘述了。

说一下我加入Windows计划的步骤:
首先我的需求是在每次登录,即打开电脑输入Windows Pin之后,执行脚本。

  1. 此电脑右键管理打开计算机管理,点击任务计划程序,点击创建任务:
  2. 填写名称
  3. 填写触发器信息

附上编辑触发器各开始任务选项的含义:
按预定计划(On a schedule):此选项允许您按照特定的时间表或时间间隔运行任务。您可以指定任务运行的日期、时间和频率。
登录时(At log on):此选项允许您在用户登录到计算机时运行任务。当用户登录时,任务将自动启动。
启动时(At startup):此选项允许您在计算机启动时运行任务。任务将在系统启动时自动启动,无论用户是否登录。
空闲状态(On idle):此选项允许您在计算机处于空闲状态时运行任务。计算机将根据您指定的条件(如CPU使用率、磁盘活动等)自动检测空闲状 态,并在空闲状态下运行任务。
发生事件时(On an event):此选项允许您在特定事件发生时运行任务。您可以指定要监视的事件,例如日志事件、Windows服务事件或系统事件等。
创建/修改任务时(On task creation/modification):此选项允许您在创建或修改任务时运行任务。当您创建或修改任务时,该任务将自动运行。
当连接到用户会话时(On connection to user session):此选项允许您在用户会话开始时运行任务。例如,当用户通过远程桌面连接到计算机时,任务将启动。
当从用户会话断开连接时(On disconnect from user session):此选项允许您在用户会话结束时运行任务。例如,当用户从远程桌面断开连接时,任务将启动。
工作站锁定时(On workstation lock):此选项允许您在计算机被锁定时运行任务。例如,当用户按下Windows + L组合键锁定计算机时,任务将启动。
工作站解锁时(On workstation unlock):此选项允许您在计算机解锁时运行任务。例如,当用户从工作站解锁计算机时,任务将启动。
————ChatGPT

  1. 在操作页面加入脚本的位置
  2. 条件和设置页面根据需要自由更改,我希望即时在笔记本只使用电源条件下还能执行脚本,取消勾选如下信息

总结

这个自动化脚本使用Python RPA库,可以完全模拟网页的操作,可想而知,有更多的应用等待我们发掘,自动抢票啊啥的。但是有一个问题是执行很慢,甚至慢过我们正常手动去登录,主要原因应该是要下载文件。有机会应该还是要学一下涉及底层的脚本,效率更高。另外值得一提的是,由于我之前并没有用过RPA库,看英文文档效率还是不够高,所以我借用了ChatGPT来帮助我解决问题,不得不说ChatGPT在代码方面能力非常强,目前它已经成为我学习强有力的工具,未来是否会取代人写代码呢,让人堪忧。

posted @ 2023-02-26 21:14  Marches7  阅读(633)  评论(0)    收藏  举报