本文最后更新于 天前,文中部分描述可能已经过时。
前言
暑假通过一番朋友交易住进了同学的宿舍,闲聊之中他跟我抱怨校园网的事儿,之前看到 GitHub 上有他们学校的 Python 版登录程序,就顺手帮他整上了。
配置思路
网络环境
他们学校的网络还算不错吧,24h 不断网,只是登录时间达到了 3600min 后需要手动注销重新登录,价格也比我校的便宜很多(🍋)
校园网的登录是在内网服务器上,使用 web 认证登录
现有设备
老旧的 Netgear WNDR4300 路由器一台 系统为 OpenWrt 17.01
配置过程
先照常更新一下软件包
opkg update && opkg upgrade
安装 Python 和 pip
opkg install python3 python3-pip
安装依赖库
pip3 install requests
pip3 install bs4
pip3 install html5lib
总之就是缺什么装什么(
下载程序
我是在 win 机器上测试能连上之后直接用 U 盘拷过去的,也可以直接从 GitHub 下载
curl -OL https://github.com/bfdyanshe/onekeySchoolNetwork/raw/master/byRequsts.py
运行测试
直接 python3 byRequsts.py
,不出意外的报错了
/bin/sh: ipconfig: not found
Traceback (most recent call last):
File "1.py", line 179, in <module>
ACLogout(info[0], info[1], info[2])
File "1.py", line 138, in ACLogout
ip = getIpandMac()[0]
File "1.py", line 129, in getIpandMac
ip = re.findall(r"d+\.d+\.\d+.\d+", ipmac)[0]
IndexError: list index out of range
看了下报错这段函数的源码
...
def getIpandMac():
ipmac = os.popen("ipconfig /all").read()
ip = re.findall(r"d+\.d+\.\d+.\d+", ipmac)[0]
mac = re.findall(r"\w+-\w+-\w+-\w+-+\w+-\w+", ipmac)[0]
dmac = ""
for a in mac.split("-"):
dmac += a
return (ip, dmac,)
...
发现是登录程序的作者写程序的时候并没有考虑到 Linux 系统下的使用,用的 ipconfig
命令获取本机 ip ,所以说我只要把它换成 ifconfig
就行了…吧?
答案是否定的,ifconfig
的输出格式和 ipconfig
的有区别,会导致这个函数读不到本机 ip ,由于 ip 是内网地址,且为 10.32.
开头 ,所以我直接把用于匹配的正则表达式改为 10\.32\.\d+\.\d+
就能匹配到正确的 ip 了。
至于 mac 地址嘛,我的解决办法是直接把路由器的 mac 地址作为字符串写进去了,毕竟路由器的 mac 又不会随便变(
修改后
def getIpandMac():
ipmac = os.popen("ifconfig").read()
ip = re.findall(r"10\.32\.\d+.\d+", ipmac)[0]
mac = "YOUR_MAC_ADDRESS"
dmac = ""
for a in mac.split("-"):
dmac += a
return (ip, dmac,)
再运行一遍,能跑了,后台查看在线时间也确实被重置了
配置定时任务
在 Openwrt 的后台管理页找到 系统 - 定时任务
加入如下两行,实现每天凌晨和下午两点重连
0 14 * * * cd /root && python3 byRequsts.py
0 2 * * * cd /root && python3 byRequsts.py
(记得在最后一行加上回车)
一个“小”插曲
你可能也注意到了,前面我写的文件名一直是 byRequsts.py
而不是 byRequests.py
那是因为…原作者的 typo 啊淦
由于在 Terminal 内测试时一直用自动补全,没有打完整的文件名,也就没有发现这个 typo
结果后来设置定时任务的时候,在校园网登录页查看在线时间发现并没有重新登录,找了我好半天才发现是这个原因🤬
改名:
mv byRequsts.py byRequests.py
后
嗯 又水了一篇(
本文作者:ZnS
本文链接: https://zns.moe/articles/login-to-school-network-using-a-router/
文章默认使用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。
评论