现在大学校园网普遍需要认证登录才能用,但深大每天晚上12点断电导致路由器离线,而且长时间没人用也要重新认证,所以想用常通电的小型Linux主机来自动认证校园网。之前看到网上大佬往路由器内刷openwrt固件来实现校园网自动认证,但我多次尝试向我的小米路由器4A千兆版刷入openwrt固件,虽然每次都提示刷写成功,但没法通过SSH或Telnet访问,百度搜了一下最新的说法是官方修补了可攻击的漏洞,所以趁着手边有一个树莓派,那就收割一下它的生产力,让它自动认证校园网。
GET请求和POST请求是http请求的两种方式,底层都是 TCP/IP协议。 对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器响应 200(返回数据)表示成功;而对于 POST,浏览器先发送 header,服务器响应 100, 浏览器再继续发送 data,服务器响应 200 (返回数据)。
GET请求通常是通过url地址请求,POST请求则是通过form表单请求。
远程访问进入Ubuntu桌面打开自带的火狐浏览器,按F12呼出控制台,如果登录了先logout退出。
找到工具栏里的网络一项,再次登录进去后在网路里找到login登录的一个数据包,可以看到浏览器是通过get请求的方式将数据包发给服务器。
所以我们只需要复制那一串url地址,然后通过python的requests库,利用get请求这串url地址就可以实现自动认证了。
Pycharm是python的IDE开发环境,这个链接是社区开源免费版。
Pycharm 社区免费版
Linux操作系统和Windows不一样,缺少一些图形化UI和快捷键,经常需要用到终端命令。
找到压缩包的下载位置,一般在Download目录下,然后在压缩包目录下打开终端,用tar命令解压缩。
tar -xzf pycharm-community-2022.2.4.tar.gz
这里Pycharm的版本按自己下载的来,解压缩完后会出现一个没有tar.gz后缀的文件包。
cd回到根目录下,使用mkdir命令在opt目录下新建文件夹,opt文件夹主要是安装程序的引导和程序文件,如果缺少必要的文件,安装的程序无法正常启动,一般多是第三方软件。
sudo mkdir /opt/pycharm
cd到解压好的pycharm文件在的那个文件夹,将解压好的文件夹的全部文件移动到/opt/pycharm文件夹下。
sudo mv pycharm-community-2022.2.4/ /opt/pycharm/
然后在终端启动Pycharm.
sh /opt/pycharm/pycharm-community-2022.2.4/bin/pycharm.sh
基本就安装好了,想添加到环境变量的小伙伴请自行百度。
Anaconda是一个安装、管理python相关包的软件,还自带python、Jupyter Notebook、Spyder,包括Conda、Python以及一大堆安装好的工具包,比如:numpy、pandas、requests等
下载Anaconda 安装包
在官网上会显示你当前电脑的操作系统
但树莓派4b是ARM64位操作系统,所以与X86架构的64位安装方式不一样,首先打开终端。
wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-armv7l.sh
下载好后cd到Download目录下
sudo bash Miniconda3-latest-Linux-armv7l.sh
经过不停的enter与yes后,等待安装完毕
进入vim文本编辑器添加路径
vim ~/.bashrc
按i进入编辑模式,在最后一行添加如下代码(miniconda3的绝对路径)
export PATH="/home/pi/miniconda3/bin:$PATH"
然后按esc推出,并输入 :wq 退出vim编辑器,Anaconda的环境就基本配置好了。
source ~/.bashrc
最后用source命令进行更新就可以了。
先创建一个python工程和wifi-auto_config.py文件.
写python脚本自动认证校园网,我们需要用到 requests 和 pyinstaller 这两个库,requests 库主要是用来向网页发送请求,pyinstaller库用来将我们写好的代码打包成类似于 .exe 的可执行程序。
按如下步骤添加两个库
可以通过post和get两种方式请求,这里我们选择简单一点的get请求,然后将下面的代码修改一下复制到wifi-auto_config.py内。
# 自动登录深大校园网脚本,打包生成exe后设置开机自启动即可自动登录
#!/usr/bin/python3
import requests # 用于向目标网站发送请求
url = '复制的那串url地址'
response = requests.get(url).status_code # 直接利用 GET 方式请求这个 URL 同时获取状态码
print("状态码{}".format(response)) # 打印状态码
创建脚本文件,在文件开头需要加上下面一行
#!/usr/bin/python
上面这行的作用是说明使用哪个解释器来执行该文件
此时可以logout校园网然后打开终端,输入python3 + wifi-auto_config.py文件的绝对路径,看看是否成功登录。
python3 /home/Ljm/PycharmProjects/pythonProject/wifi-certification/wifi-auto_config.py
成功登陆后终端会返回“状态码200”。
chmod +x wifi-auto_config.py
在终端上利用chmod命令给该文件添加可执行的权限。
参数定义:-u 指定用户,-l 列出用户任务计划,-r 删除用户任务,-e 编辑用户任务
打开终端用-e编辑定时任务
crontab -e
在最后一行添加下面代码,路径根据自己的来定,操作类似vim编辑器。
* * * * * /usr/bin/python3 /home/Ljm/PycharmProjects/pythonProject/wifi-certification/wifi-auto_config.py
保存退出“:wq”
5个“*”分别表示分钟,小时,日,月,年,小伙伴们自己定义就好了,后面跟上python解释器的绝对路径和wifi-auto_config.py的绝对路径。
10 7 * * * /usr/bin/python3 /home/Ljm/PycharmProjects/pythonProject/wifi-certification/wifi-auto_config.py
上面这行就表示每天上午7:10自动执行wifi-auto_config.py文件。
*/1 * * * * /usr/bin/python3 /home/Ljm/PycharmProjects/pythonProject/wifi-certification/wifi-auto_config.py
这行表示每隔1分钟自动执行wifi-auto_config.py文件。
当然也可以通过systemdl和service来实现树莓派开机自动认证,有兴趣的小伙伴可以自行百度看看大佬的方法。
本篇博客主要想记录一下学习过程中的收获,本人刚入门有很多不懂的,博客中的错误还请大神雅正。实现校园网的自动认证有很多种方法,也有大神通过iPhone的快捷指令来实现,原理上其实差不多。Linux小主机的优势就在于可以常通电,如果手上有的小伙伴快去挖掘它的生产力吧。