美文网首页机器学习·Python·算法
【大学城校园网】自动登陆、断线重连

【大学城校园网】自动登陆、断线重连

作者: Albert_Sun | 来源:发表于2017-06-12 16:39 被阅读20次
# -*- 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'
        # 检测间隔时间,单位为秒
        self.every = 5*60  # second

    # 模拟登录
    def login(self):
        print self.getCurrentTime(), u"正在尝试认证UTSZ无线网络........"
        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)

    # 打印登录结果
    def getLoginResult(self, result):
        if "login_ok" in result:
            print self.getCurrentTime(), 'login_ok'
        else:
            print self.getCurrentTime(), result

    # 获取本机无线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

    # 判断当前是否可以联网
    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

    # 获取当前时间
    def getCurrentTime(self):
        return time.strftime('[%Y-%m-%d %H:%M:%S]', time.localtime(time.time()))

    # 主函数
    def main(self):
        print self.getCurrentTime(), u"您好,欢迎使用模拟登陆系统"
        while True:
            nowIP = self.getIP()
            if not nowIP:
                print self.getCurrentTime(), u"请检查是否正常连接UTSZ无线网络"
            else:
                print self.getCurrentTime(), u"成功连接了UTSZ网络,本机IP为", nowIP
                self.login()
                while True:
                    if not self.canConnect():
                        if not self.getIP():
                            print self.getCurrentTime(), u"当前已经掉线,请确保连接上了UTSZ网络"
                        else:
                            print self.getCurrentTime(), u"当前已经掉线,正在尝试重新连接"
                            self.login()
                    else:
                        print self.getCurrentTime(), u"当前网络连接正常"
                    time.sleep(self.every)
            time.sleep(self.every)

login = Login()
login.main()

【参考资料】

  1. 博主 http://cuiqingcai.com/1052.html

相关文章

  • 【大学城校园网】自动登陆、断线重连

    【参考资料】 博主 http://cuiqingcai.com/1052.html

  • websocket断线自动重连

    https://github.com/joewalnes/reconnecting-websocket 只需要简单...

  • 树莓派Wi-Fi断线重连

    实现 WiFi 断线自动重连。原理是用 Python 监测网络是否断线,如果断线则重启网络服务。 配置无线网连接 ...

  • 状态同步的断线重连

    最近陆陆续续在给游戏做断线重连相关的工作,大厅服的断线重连问题不是很大,难点主要在于战斗中的断线重连。断线重连要解...

  • 断线重连问题综述

    断线重连主要涉及到几个问题: 判定断线 怎么重连 重连后如何还原游戏环境 判定断线有两种方式,(1)是超时判定断线...

  • 断线重连

    今天看了下之前游戏登录相关逻辑,重新整理下断线重连的一些做法。 首先,介绍下断线的几种常见情况:情况一:客户端网络...

  • 断线重连

    using System; using System.Collections; using System.Coll...

  • windows下wifi断线自动重连

    windows下wifi路由器断开后没法自动重连,导致电脑无法远程。 写一个脚本判断网络是否能通,不通就连接。 @...

  • python records断线自动重连mysql

    mysql数据库默认8个小时会断开连接,对于不经常读写mysql的服务来说,很容易被断开。 可以在创建连接对象的时...

  • Webscoket 断线重连

网友评论

    本文标题:【大学城校园网】自动登陆、断线重连

    本文链接:https://www.haomeiwen.com/subject/hzyzfxtx.html