![8ea541471c852d30d009abf5b397c059.png](https://img-blog.csdnimg.cn/img_convert/8ea541471c852d30d009abf5b397c059.png)
![83ebf4f7eb0a81ba6d3077ceeced52f3.png](https://img-blog.csdnimg.cn/img_convert/83ebf4f7eb0a81ba6d3077ceeced52f3.png)
![8ea541471c852d30d009abf5b397c059.png](https://img-blog.csdnimg.cn/img_convert/8ea541471c852d30d009abf5b397c059.png)
![83ebf4f7eb0a81ba6d3077ceeced52f3.png](https://img-blog.csdnimg.cn/img_convert/83ebf4f7eb0a81ba6d3077ceeced52f3.png)
![8ea541471c852d30d009abf5b397c059.png](https://img-blog.csdnimg.cn/img_convert/8ea541471c852d30d009abf5b397c059.png)
![83ebf4f7eb0a81ba6d3077ceeced52f3.png](https://img-blog.csdnimg.cn/img_convert/83ebf4f7eb0a81ba6d3077ceeced52f3.png)
![8ea541471c852d30d009abf5b397c059.png](https://img-blog.csdnimg.cn/img_convert/8ea541471c852d30d009abf5b397c059.png)
![83ebf4f7eb0a81ba6d3077ceeced52f3.png](https://img-blog.csdnimg.cn/img_convert/83ebf4f7eb0a81ba6d3077ceeced52f3.png)
![8ea541471c852d30d009abf5b397c059.png](https://img-blog.csdnimg.cn/img_convert/8ea541471c852d30d009abf5b397c059.png)
![83ebf4f7eb0a81ba6d3077ceeced52f3.png](https://img-blog.csdnimg.cn/img_convert/83ebf4f7eb0a81ba6d3077ceeced52f3.png)
![8ea541471c852d30d009abf5b397c059.png](https://img-blog.csdnimg.cn/img_convert/8ea541471c852d30d009abf5b397c059.png)
![83ebf4f7eb0a81ba6d3077ceeced52f3.png](https://img-blog.csdnimg.cn/img_convert/83ebf4f7eb0a81ba6d3077ceeced52f3.png)
![8ea541471c852d30d009abf5b397c059.png](https://img-blog.csdnimg.cn/img_convert/8ea541471c852d30d009abf5b397c059.png)
![83ebf4f7eb0a81ba6d3077ceeced52f3.png](https://img-blog.csdnimg.cn/img_convert/83ebf4f7eb0a81ba6d3077ceeced52f3.png)
![83ebf4f7eb0a81ba6d3077ceeced52f3.png](https://img-blog.csdnimg.cn/img_convert/83ebf4f7eb0a81ba6d3077ceeced52f3.png)
记得大一刚入学时,我们宿舍在其他同学的介绍下向一位师兄购买了刷机路由器。这种路由器内嵌了校园网的登陆脚本,可以自动登陆校园网和共享上网,一个宿舍只要一个账号,大家便能一起上网。后来校园网的运营商从电信换成了移动,我们宿舍的路由器就失效了……
搬回本部校区后,趁着开学前这几天没事干,研究了下校园网的登陆过程。于是用Python写了个小脚本,可以用来检测校园网是否掉线并恢复登陆。 这个脚本我放在github上开源了:https://github.com/zimin9/GDUFE_InternetLogin 各位朋友觉得有用的话麻烦在github给个star(![3c8efa57f0fc344119c210d5d1e4ae37.png](https://img-blog.csdnimg.cn/img_convert/3c8efa57f0fc344119c210d5d1e4ae37.png)
![3c8efa57f0fc344119c210d5d1e4ae37.png](https://img-blog.csdnimg.cn/img_convert/3c8efa57f0fc344119c210d5d1e4ae37.png)
登陆过程是向http://100.64.13.17:801 发送了一个GET请求,url中带上了所有登陆信息。在Chrome浏览器的开发者工具中可以很直观的看到这些数据:
其中user_account和user_password分别是校园网账号与密码(上图已打码hhh),wlan_user_ip与wlan_user_mac分别是宿舍墙上端口所对应的ip地址与你设备的mac地址(这两个信息也打码了)。除了‘callback’与‘_’这两个值之外,基本都是固定值。
callback’与‘_’这两个值到底是啥呢?每一次请求,这两个值都会改变。最后通过查找它的js代码,发现这两个值其实是当前时间的时间戳。
js代码中生成时间戳的方法
在确定了每一个值的含义后,这个脚本的编写思路就明确了很多。
首先是将requests headers里的内容修改好(其中最重要的是修改User-Agent,将脚本伪装成浏览器),然后将账号、密码、ip地址、mac地址、当前时间的时间戳分别填入URL中,最后向这个URL发送GET请求即可。
p.s.:
Python默认生成的时间戳仅有10位,而登陆时使用的时间戳却是13位的……
百度之后发现的处理办法:
import timeint(round(time.time() * 1000))
这样就可以生成13位的时间戳了!!
解决了登陆的问题,还剩下检查状态的问题
只有识别到了当前是否掉线,程序才能做出相应的反应
在多次查看http://100.64.13.17 返回的信息后,我留意到了以下代码:
page.run(1);
如果校园网处于在线状态,那么page.run()的括号中就有1。反之,如果校园网已经离线了,那么括号中没有1。
根据这一点,就可以用正则表达式来判断当前的网络状态了。只有校园网离线时,才进行登陆。
最后为这个脚本添加定时任务即可,这样这个脚本就能时不时地帮你“看看”网络正不正常、需不需要登陆。(可以将这个脚本放在路由器、树莓派、电脑等等支持python的设备上运行)
不同的操作系统添加定时任务的方式不同,这里就不做介绍了~
![c2a4704ab1fd9e69c248ac2951b56b7c.png](https://img-blog.csdnimg.cn/img_convert/c2a4704ab1fd9e69c248ac2951b56b7c.png)
![340884aafdc06893c31db928df980663.png](https://img-blog.csdnimg.cn/img_convert/340884aafdc06893c31db928df980663.png)
扫码关注
惊喜多多