百木园-与人分享,
就是让自己快乐。

Python 实现校园网自动登录

背景

我在的学校校园网登录是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了……

如果没有服务器,树莓派+路由器的组合也是一种解决方案~

当然最省钱的就是我这种把脚本直接跑在自己机器上的……

代码

python学习交流Q群:906715085###
#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

 

这个小脚本很简单,主要为大家提供一个思路~

最后

编程语言可以方便我们的生活,我想这就是它存在的价值。这一章的小技能还是十分实用的,代码也就区区几十行,非常的简单

哟!!这一章到这里就结束了,下一章见啦!


来源:https://www.cnblogs.com/1234567FENG/p/16385479.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » Python 实现校园网自动登录

相关推荐

  • 暂无文章