• Python 实现校园网自动登录


    背景

    我在的学校校园网登录是web式的,即随便打开一个网页就会自动跳转到登录页面,然后输入用户名密码,点登录,便可以上网了。

    但这种登录方式有个缺点:登录状态不会一直保持下去。即过一段时间就会掉线,然后你需要重新登陆才行。这个时间大概是一天。

    这就蛋疼了,想让实验室的电脑随时保持联网状态怎么办呢?(有时候我需要远程我的电脑)

    这个时候可以用python脚本解决这个问题!

    思路

    写一个死循环一直 ping 8.8.8.8,如果 ping 通说明正连着网,进入下一次循环;如果 ping 不通,说明断网了,尝试登陆校园网,然后进入下一次循环。即:

    ping 8.8.8.8 —> 如果已联网 —> 继续 ping 8.8.8.8 —> …… —> 如果断网 —> 尝试登陆 —> 登陆成功 —> ping 8.8.8.8 ……

    脚本写好后放到 windows 的计划任务里设置开机启动。

    或者在linux中设置 crontab,一样的道理。

    技术点

    •利用 python 进行 post 请求

    •base64加密解密

    •利用 subprocess 创建子进程

    碎碎念

    脚本在后台运行cpu占用大概为 1~2%,内存占用大概为 4M 左右,完全可以接受。

    当然如果你有条件的话,运行在内网服务器上也是极好的,顺便可以连个路由器出来,这样实验室的小伙伴能用不断网的wifi了……

    如果没有服务器,树莓派+路由器的组合也是一种解决方案~

    当然最省钱的就是我这种把脚本直接跑在自己机器上的……

    代码

    python学习交流Q群:906715085###
    #coding=utf8
    import urllib,urllib2
    import base64
    import os , subprocess
    
    username = '你的base64加密过的校园网用户名'
    password  = '你的base64加密过的校园网密码'
    url = 'https://login.xxxx.edu.cn/auth_action.php'   # 校园网登陆验证地址
    
    def isConnecting():
        # Judge network connect status
        res = subprocess.call('ping 8.8.8.8 -n 1',shell=True)
        return False if res else True
    
    def Signon():
        # Sign on
        data = {
            'action' : 'login',
            'username' : base64.decodestring(username),
            'password' : base64.decodestring(password),
            'ac_id' : 1,
            'save_me' : 0,
            'ajax' : 1,
        }
        data = urllib.urlencode(data)
        response = urllib2.urlopen(url,data=data)
        response = response.read().decode('utf8')
        print response
    
    def main():
        while True:
            if not isConnecting():
                # no-connect status, attempt sign on
                Signon()
    
    if __name__=="__main__":
        try:
            main()
        except Exception,e:
            print '[ERROR]:',
            print e
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    这个小脚本很简单,主要为大家提供一个思路~

    最后

    编程语言可以方便我们的生活,我想这就是它存在的价值。这一章的小技能还是十分实用的,代码也就区区几十行,非常的简单

    哟!!这一章到这里就结束了,下一章见啦!

  • 相关阅读:
    【WFA】【Enhanced open】CT_OWE_DHgroup_STA_NoAssociation-AllGroupsRejected_10338_1
    云容灾最佳实践!美创DBRA助力包头医学院第二附属医院核心系统容灾建设
    安达发APS|APS智能排程软件的核心优势
    Python调用C++/CUDA
    跨模态神经搜索实践VCED 环境准备
    (超级详细1秒钟秒懂)华为网络初级工程师知识总结(一)
    小程序搜索词排名优化的诀窍
    Debezium报错处理系列之六十八:No resolvable bootstrap urls given in bootstrap.servers
    持续进阶,软通动力稳步推动云智能战略
    Dynatrace获评《2023 Gartner® 应用性能监控(APM)和可观测性魔力象限™》“领导者”,前瞻性与执行力均表现卓越
  • 原文地址:https://blog.csdn.net/xff123456_/article/details/125332060