通过python对GET型校园网自动登录以及后台循环检测的实现

首先确认校园网登录是否为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的版本可以自行更改部分代码,逻辑对就可以运行

记录本文为大一第一次写出的代码,以后会继续更新满意的作品!

欢迎交流讨论

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值