Python实现校园网自动登录的脚本分享
本文分享一个使用Python实现的校园网自动登录脚本,旨在解决Web认证方式下登录状态易失效的问题。脚本通过死循环Ping检测网络状态,断网时自动发送Post请求重新认证,并支持配置为Windows计划任务或Linux Crontab开机自启,保持设备持续在线。
背景
所在学校的校园网采用Web认证模式,访问任意网页时会自动跳转至登录页面,输入账号密码并点击登录后即可上网。
然而,这种登录方式存在一个明显缺陷:登录状态无法长期保持。经过大约一天的时间后连接会断开,需要用户手动重新登录。
这给实验室电脑保持持续联网带来了困扰,特别是在需要远程访问电脑的情况下。
此时,可以使用Python脚本来解决这一问题。
思路
编写一个死循环,持续Ping 8.8.8.8。如果Ping通,说明网络正常,进入下一次循环;如果Ping不通,说明已断网,则尝试登录校园网,随后进入下一次循环。逻辑如下:
Ping 8.8.8.8 ---> 若已联网 ---> 继续Ping 8.8.8.8 ---> …… ---> 若断网 ---> 尝试登录 ---> 登录成功 ---> 继续Ping 8.8.8.8 ……
脚本编写完成后,可将其添加到Windows的计划任务中,设置为开机自动启动。
或者在Linux系统中设置Crontab,原理相同。
技术点
- 利用Python发送Post请求
- Base64加密与解密
- 利用Subprocess创建子进程
碎碎念
该脚本在后台运行时,CPU占用率约为1~2%,内存占用约为4M左右,资源消耗完全在可接受范围内。
当然,如果有条件,将其运行在内网服务器上也是不错的选择,甚至可以连接路由器,为实验室其他成员提供不断网的WiFi。
如果没有服务器,使用树莓派加路由器的组合也是一种可行的解决方案。
当然,最省钱的方式就是像我这样,直接将脚本运行在自己的机器上。
代码
#coding=utf8
import urllib,urllib2
import base64
import os , subprocess
username = '你的base64加密过的校园网用户名'
password = '你的base64加密过的校园网密码'
url = 'https://login.xxxx.edu.cn/auth_action.php' # 校园网登陆验证地址
def isConnecting():
# Judge network connect status
res = subprocess.call('ping 8.8.8.8 -n 1',shell=True)
return False if res else True
def Signon():
# Sign on
data = {
'action' : 'login',
'username' : base64.decodestring(username),
'password' : base64.decodestring(password),
'ac_id' : 1,
'save_me' : 0,
'ajax' : 1,
}
data = urllib.urlencode(data)
response = urllib2.urlopen(url,data=data)
response = response.read().decode('utf8')
print response
def main():
while True:
if not isConnecting():
# no-connect status, attempt sign on
Signon()
if __name__=="__main__":
try:
main()
except Exception,e:
print '[ERROR]:',
print e这个脚本非常简单,主要目的是提供一种解决思路。
编程语言能够方便我们的生活,我想这就是它存在的价值。
到此这篇关于Python实现校园网自动登录的脚本分享的文章就介绍到这了,更多相关Python校园网自动登录内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









