【大學(xué)城校園網(wǎng)】自動(dòng)登陸、斷線重連

# -*- coding:utf-8 -*-

import urllib
import urllib2
import socket
import types
import time
import os
import subprocess


class Login:
    # 初始化
    def __init__(self):
        self.username = '3331*S******'
        self.password = '******'
        self.ip_pre = '219.223'
        # 檢測(cè)間隔時(shí)間,單位為秒
        self.every = 5*60  # second

    # 模擬登錄
    def login(self):
        print self.getCurrentTime(), u"正在嘗試認(rèn)證UTSZ無線網(wǎng)絡(luò)........"
        data = {
            'action':'login',
            "username": self.username,
            "password": self.password,
            "ac_id": 1,
            "user_ip:": "",
            "nas_ip": "",
            "user_mac": "",
            "save_me": 1,
            "ajax": 1,
        }
        # 消息頭
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) '
                          'AppleWebKit/537.36 (KHTML, like Gecko) '
                          'Chrome/45.0.2454.101 Safari/537.36',
            'Host': '10.0.10.66',
            'Origin': 'http://10.0.10.66',
            'Referer': 'http://10.0.10.66/srun_portal_pc.php?ac_id=1&url='
        }

        post_data = urllib.urlencode(data)
        login_url = "http://10.0.10.66/include/auth_action.php"
        request = urllib2.Request(login_url, post_data, headers)
        response = urllib2.urlopen(request)
        result = response.read()  # .decode('gbk')
        self.getLoginResult(result)

    # 打印登錄結(jié)果
    def getLoginResult(self, result):
        if "login_ok" in result:
            print self.getCurrentTime(), 'login_ok'
        else:
            print self.getCurrentTime(), result

    # 獲取本機(jī)無線IP
    def getIP(self):
        local_iP = socket.gethostbyname(socket.gethostname())
        if self.ip_pre in str(local_iP):
            return str(local_iP)
        ip_lists = socket.gethostbyname_ex(socket.gethostname())

        for ip_list in ip_lists:
            if isinstance(ip_list, list):
                for i in ip_list:
                    if self.ip_pre in str(i):
                        return str(i)
            elif type(ip_list) is types.StringType:
                if self.ip_pre in ip_list:
                    return ip_list

    # 判斷當(dāng)前是否可以聯(lián)網(wǎng)
    def canConnect(self):
        fnull = open(os.devnull, 'w')
        result = subprocess.call('ping www.baidu.com', shell=True, stdout=fnull, stderr=fnull)
        fnull.close()
        if result:
            return False
        else:
            return True

    # 獲取當(dāng)前時(shí)間
    def getCurrentTime(self):
        return time.strftime('[%Y-%m-%d %H:%M:%S]', time.localtime(time.time()))

    # 主函數(shù)
    def main(self):
        print self.getCurrentTime(), u"您好,歡迎使用模擬登陸系統(tǒng)"
        while True:
            nowIP = self.getIP()
            if not nowIP:
                print self.getCurrentTime(), u"請(qǐng)檢查是否正常連接UTSZ無線網(wǎng)絡(luò)"
            else:
                print self.getCurrentTime(), u"成功連接了UTSZ網(wǎng)絡(luò),本機(jī)IP為", nowIP
                self.login()
                while True:
                    if not self.canConnect():
                        if not self.getIP():
                            print self.getCurrentTime(), u"當(dāng)前已經(jīng)掉線,請(qǐng)確保連接上了UTSZ網(wǎng)絡(luò)"
                        else:
                            print self.getCurrentTime(), u"當(dāng)前已經(jīng)掉線,正在嘗試重新連接"
                            self.login()
                    else:
                        print self.getCurrentTime(), u"當(dāng)前網(wǎng)絡(luò)連接正常"
                    time.sleep(self.every)
            time.sleep(self.every)

login = Login()
login.main()

【參考資料】

  1. 博主 http://cuiqingcai.com/1052.html
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前些日子從@張?chǎng)涡裎⒉┨幍靡环萃扑](Front-end-tutorial),號(hào)稱最全的資源教程-前端涉及的所有知識(shí)...
    谷子多閱讀 4,477評(píng)論 0 44
  • 孟小滿是我同班同學(xué)兼前桌,認(rèn)識(shí)孟小滿這年,我們高二,因?yàn)槲睦矸职?,早在高一的時(shí)候她的名字應(yīng)該全年級(jí)都知道,尤其是男...
    弓長(zhǎng)每閱讀 860評(píng)論 7 5
  • 四月,春暖花開,微風(fēng)習(xí)習(xí)。銀大的校園鳥語花香,書聲瑯瑯,正值讀書的好時(shí)候。我校第二屆成語大賽如約而至?!白V成語之絕...
    fb3bcde41efa閱讀 992評(píng)論 0 1
  • 藥命(五)護(hù)士把同意書拿給醫(yī)生以后,醫(yī)生去給洪海做了骨髓穿刺,然后出來進(jìn)了醫(yī)生辦公室,醫(yī)生說:-患者我已經(jīng)給做完穿...
    Mr海鮮君的故事閱讀 1,227評(píng)論 0 1

友情鏈接更多精彩內(nèi)容