前言

书接上文关于门户跳转登录网络的路由器的配置,宿舍的网络接入方式为网页门户登录。如果是普通专业的学生,不懂网络原理的话,很有可能会变成每个人都要交网费,一个宿舍产生120元/月甚至更多的上网费用。

吃相未免太难看了吧

于是便有了此文,整个宿舍只需要交一份网络费用就行了,用一个路由器,包括wifi,全宿舍都可以共享网络。

实际效果图

先放实际效果图

路由器wifi
划线的是我们的wifi,其中玩原神玩的原神启动分别是5GHz2.4GHz频段的,接上不断电电源的wifi,

晚上也可以共享一个账号使用

测速

网络拓扑

网络拓扑

分析

其中192.168.1.1的路由器用于存放拨号脚本,且接上ups不断电电源,承担拨号的作用,这样这个路由器就转换成了类似光猫的设备,下面的设备就当作正常设备使用就行了

门户登陆爬虫

这是重点,因为本篇文章就是建立在能够自动登陆门户的基础上实现的

接下来分析门户

流程如下

流程

具体分析

打开抓包工具

连接wifi进入门户

抓包信息

登陆

没有加密还是很简单的,具体实现如下

#!/bin/sh
function get_json(){
    echo "${1//\"/}" | sed "s/.*$2:\([^,}]*\).*/\1/"
}

function deal_json(){
    cmd='curl -s -X GET  http://172.30.21.100/api/account/status --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"'
    api_result=`eval ${cmd}`
    value=$(get_json "${api_result}" "msg")
    echo $value
}

function run_cmd(){
    cmd_result=`eval $1`
    echo $cmd_result
}
result=$(deal_json)
# echo $result
if [ "$result" != "在线" ]
then
        # echo 1
    cmd='curl -s -X POST  http://172.30.21.100/api/account/login --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"  -d "username=xxxxx&password=xxxxx&nasId=59&userIpv4=&userMac=&captcha=&captchaId=&switchip="'
    value=$(run_cmd "${cmd}")
    login_result=$(get_json "${value}" "authCode")
    if [ "$login_result" == "ok:radius" ]
    then
        echo "登陆成功"
    fi
fi

放到路由器里,改一下run_cmd()函数中的cmd命令字符串,把账号和密码改成自己的,用crontab就完事了

还有其他python实现请详见我的github