首先确认校园网登录是否为GET型
可以上网自搜获取登录URL方式
笔者已经确认为GET型
下附完整代码
#Python2.7
# _*_ coding:utf-8 _*_
import os
import re
import subprocess
import time
import urllib2
import requests
def check_ping():#通过访问百度得到网络是否畅通的判断
try:
q=requests.get("http://www.baidu.com",timeout=5)
m=re.search(r'STATUS OK',q.text)
if m:
return 'ok'
else:
return 'failed'#未登录状态
except:
return 'failed'#未联网状态
def login_WIFI():#根据URL登陆校园网
try:
post_url = ""#直接填写GET地址
urllib2.urlopen(post_url)
return 'ok'
except urllib2.URLError as e:
return 'failed'
def login_AUTO():#根据URL登陆校园网
try:
post_url = ""#直接填写GET地址
urllib2.urlopen(post_url)
return 'ok'
except urllib2.URLError as e:
return 'failed'
def get_current_wifi():
cmd = 'netsh wlan show interfaces'#获取WiFi名称
p = subprocess.Popen(cmd,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True)
ret = p.stdout.read()
index = ret.find('SSID')
if index > 0:
return ret[index:].split(':')[1].split('\r\n')[0].strip()
def auto_switch_wifi(wifiList):#连接WiFi
time.sleep(1)
try:
res = os.popen("netsh wlan connect name=%s" % wifiList)
return 'ok'
except urllib2.URLError as e:
return 'failed'
def main():
while True:
wifiList = 'OUC-WIFI'
current_wifi = get_current_wifi()
if current_wifi == 'OUC-AUTO':
wifiList = 'OUC-WIFI'
#print('可切换WIFI:OUC-WIFI')
elif current_wifi == 'OUC-WIFI':
wifiList = 'OUC-AUTO'
#print('可切换WIFI:OUC-AUTO')
elif current_wifi == None:
wifiList = 'OUC-WIFI'
#print('网络未连接,正在尝试连接OUC-WIFI')
while True:
time.sleep(5)
if check_ping() == 'failed':
#print('网络连接中断,正在尝试重新连接')
reu = auto_switch_wifi(wifiList)
if reu == 'ok':
#print('连接网络成功,正在尝试登录')
while True:
time.sleep(1)
if wifiList == 'OUC-WIFI':
if login_WIFI() == ('failed'):
print('error')
time.sleep(1)
continue
elif login_WIFI() == ('ok'):
#print('succeed1')
break
elif login_WIFI() == (None):
#print('wait...')
time.sleep(2)
continue
else:
#print(login_AUTO())
break
elif wifiList == 'OUC-AUTO':
if login_AUTO() == ('failed'):
print('error')
time.sleep(1)
continue
elif login_AUTO() == ('ok'):
#print('succeed2')
break
elif login_AUTO() == (None):
#print('wait...')
time.sleep(2)
continue
else:
#print(login_AUTO())
break
elif reu == 'failed':
#print('连接网络失败,正在重新连接')
continue
elif check_ping() == 'ok':
#print('网络连接畅通')
time.sleep(3)
break
main()
笔者使用的是python2.7
如果是3.x的版本可以自行更改部分代码,逻辑对就可以运行
记录本文为大一第一次写出的代码,以后会继续更新满意的作品!
欢迎交流讨论