python 自动登录网站_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了……

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

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

代码

#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

设置任务计划

在 windows 中设置 任务计划 以便在某些情况下自动运行脚本。

比如现在我想在 连接 WIFI 时自动运行校园网登陆的脚本。

实现的思路是在任务计划中创建一个新的任务,在新任务的触发器中设置 发生事件时 运行脚本,连接 WIFI 的事件是 WLAN-AutoConfig > Operational 的 8001 事件。

可按如下设置创建新任务:

常规页面:

python 自动登录网站_python 实现校园网自动登录_第1张图片

触发器页面:

python 自动登录网站_python 实现校园网自动登录_第2张图片

编辑触发器(电脑启动时运行):

python 自动登录网站_python 实现校园网自动登录_第3张图片

编辑触发器(可选,连接无线网络时):

python 自动登录网站_python 实现校园网自动登录_第4张图片

操作页面:

python 自动登录网站_python 实现校园网自动登录_第5张图片

编辑操作:

python 自动登录网站_python 实现校园网自动登录_第6张图片

条件页面:

python 自动登录网站_python 实现校园网自动登录_第7张图片

设置页面:

python 自动登录网站_python 实现校园网自动登录_第8张图片

参考资料

原创声明

你可能感兴趣的:(python,自动登录网站)