校园网自动登录脚本

环境

  • python 2.7或python 3.5均可用,脚本外部依赖requests库,请在运行脚本前pip3或者pip安装requests
  • python 2.7运行时务必加上下面一行代码,指定编码为utf8python3可以忽略。

    具体实现

  1. 指定编码方式为utf8。

    1
    2
    # coding: utf-8
    import requests
  2. 通过Chrome浏览器得知校园网登录地址,注意直接在浏览器输入的地址不一定是发送数据的地址,我学校是下面这个。

    1
    url = 'http://210.31.32.126/cgi-bin/do_login'
  3. 浏览器头信息用来伪装浏览器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    def login():
    postdata = {'username': '你的校园网账号',
    'password': '{TEXT}你的密码',
    'drop': '0',
    'type': '1',
    'n': '100'}
    headers = {'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.8',
    'Connection': 'keep-alive',
    'Content-Length': '65',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Cookie': 'PHPSESSID=a70fr8pfvhhtt329qvb21p7ka6',
    'Host': '210.31.32.126',
    'Origin': 'http://210.31.32.126',
    'Referer': 'http://210.31.32.126/',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36'}
    requests.post(url, data=postdata)

查看连接的是否是校园网,以及是否连上网

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def is_connect_edu():
status_code = requests.get(url).status_code
if status_code == 200:
return True
else:
return False
def is_connect_web():
r = requests.get("http://www.baidu.com").text
if r.find('210.31.32.126') != -1:
return False
else:
return True

直到校园网连接上为止

1
2
3
4
5
6
7
8
9
while True:
if is_connect_edu(): # 是否连接上校园网
if not is_connect_web(): # 是否连接上外网
login()
if requests.get('http://www.baidu.com').status_code==200:
print('Already connected Internet')
else:
print('Not connected Internet')
break

Ubuntu开机自动启动登录

root权限修改/etc/rc.local文件在exit 0上一行加上python3 xiaoyuanwang.py即可实现开机启动此脚本

获取源码

点击获取源码