研究生期间每天来到实验室的第一件事就是打开电脑,打开浏览器登录校园网,然后开始办公。虽说也只是简简单单的一两步,但时间长了也会觉得乏味,最重要的是一点也不极客范。于是便萌生了编写一个脚本来实现开机自动登录校园网的想法。这里总结一下我使用Python实现的过程。
分析js
分析登录页面的JS代码,找到登录函数:
这里面又调用了一个getLoginInfo()
函数,再继续查看这个函数:
所以登录过程是用POST
实现的,url
为:
提交的参数为:
知道以上这些信息便可以使用Python的Requests库实现脚本登录了。
Python实现脚本登陆
以下是Python
简单的实现:
只需配置好用户名和密码,然后执行脚本即可登录校园网。
完善脚本
以上几行代码就是自动登录脚本的核心代码了,我们当然不能满足于如此简陋的脚本,让我们来完善一下这个脚本吧。
登陆成功/失败提示
自动登录脚本,怎么能没有登录成功或失败的提示呢。在Linux终端运行脚本时,可以通过print
输出提示,而在Windows下,我们则更希望通过弹窗的形式来提示是否登录成功。于是我们使用了一个叫ctypes
的库来实现windows下的弹窗,同时需要platform
库来检测当前的操作系统是Linux还是Windows。
首先导入这两个库:
|
|
然后完善代码如下:
设置重连接
当网络不好时,连接可能会被断开,此时我们希望程序能够自动检测到网络异常,并尝试再次连接,且连接失败的时候每隔几秒钟尝试一次。同时考虑到这些参数应该设置成可选项,即能够通过设置参数开启或关闭。我们将脚本进行封装,编写成一个类。
添加配置文件
为了脚本的封装性更好,我们并不希望上面的那些设置需要从脚本代码中直接修改。因此进一步优化代码,将配置参数提取到一个配置文件中,以后我们只需要修改配置文件中的参数就可以实现开启/关闭弹窗提示功能、失败重连功能、掉线重连过程。
说做就做,首先在同一目录下新建config.ini
文件,添加以下配置信息:
读取config.ini
文件需要ConfigParser
库,首先导入库
配置文件的读取应在AutoLogin
类初始化时,所以实现AutoLogin
类的__init__
函数:
说明:
- 将配置文件中
keep_online
设置为yes
,程序将常驻后台,若非网络状况差到经常掉线的情况,可以不必开启。 keep_intvl
是检测网络状况的心跳时间,单位(秒),表示每隔对应的秒数检验一次网络状况。
最终代码
|
|
生成exe
考虑到不是所有人的电脑上都安装了Python,因此为了推广这个脚本,特将Python转换成exe
,方便大家使用。
将Python脚本转打包成exe,这里使用的是PyInstaller
,官方推荐使用pip
安装:
|
|
安装好pyinstaller
之后,在控制台运行:
|
|
看到以下输出表示已经打包成功:
最终生成以下文件:
exe可执行文件就在dist
文件夹中,将配置文件config.ini
拷贝到该文件下,双击NJNU_Auto_Login.exe
即可运行。
去除小黑框
我们发现,程序虽然能很好的运行,但是每次运行时都会弹出黑窗:
作为强迫症的我怎么能忍,必须搞掉:
在dict
文件夹中新建start.vbs
文件,添加以下内容
将start.vbs
发送到桌面快捷方式,直接双击运行,我们惊喜的发现,小黑窗不见啦!
设置开机自启动
使用win+R,打开运行,输入shell:startup
并回车
将前面说到的start.vbs
快捷方式复制到打开的文件夹中便可以实现开机自启动了,从此告别手动登录校园网。
附
最后附上打包好的exe文件,大家下载后只需修改config.ini
中的用户名和密码,然后将start.vbs
快捷方式按照以上说明发送到Startup
文件夹中即可。