2021年12月31号0点至6点,深大宿舍区的网络进行了全面提速升级。但是升级之后由于drcom的客户端从原本的5.2D版变成了Pt版,原本路由器的连接方法就失效了。当天上午稍微研究了一下,整出了个能用的新方案。
有关drcom客户端D版,P版等不同版本的原理在其他地方都有,这里就不提了,但是这次新增的Pt版我确实没听说过,在网上找也找不到相关的方案,直到我在某个论坛帖子下发现有大佬指出Pt版可以直接通过httpget请求拨号上网,于是事情就变得简单了起来。
上图是更新后网页认证的页面,填好账号密码先不要登录,按F12准备截请求。
此时我们可以看到登录操作的请求,如上图右侧所示。请求网址中包含有之前进行登录所用的账号和密码和你的ip地址等信息,请求方法为get。也就是说这个登录确实是通过一个get的请求来实现的,那我们只要模拟这个get请求就可以自动认证了。
复制那段请求网址,然后注销刚才登录的网页认证,此时电脑恢复到不能上网的状态。在cmd中输入以下命令
curl “http://172.30.255.42:801/eportal/portal/login?callback=dr1003&login_method=1&user_account=%2C0%2C*&user_password=*&wlan_user_ip=*.*.*.*&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=172.30.255.41&wlan_ac_name=&jsVersion=4.1.3&terminal_type=1&lang=zh-cn&v=1232&lang=zh”
其中双引号里面是刚才复制的网址。按回车执行命令,收到了认证成功的回复,此时电脑已经可以上网了,说明这次的模拟登录成功了。
那么接下来只要把这段代码做成脚本放到路由器里面就行了。新建一个名为login.sh的文件,用记事本打开,在里面填入以下内容
#!/bin/sh
CURRENT_IP=$(ifconfig | grep inet | grep -v inet6 | grep -v 127 | grep -v 192 | awk '{print $(NF-2)}' | cut -d ':' -f2)
sleep 10
wget "http://172.30.255.42:801/eportal/portal/login?callback=dr1003&login_method=1&user_account=%2C0%2C******&user_password=******&wlan_user_ip=${CURRENT_IP}&&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=172.30.255.41&wlan_ac_name=&jsVersion=4.1.3&terminal_type=1&lang=zh-cn&v=1232&lang=zh"
其中CURRENT_IP一行是为了能让路由器自动获取自己当前的ip地址,防止出现因为内网ip分配变化造成脚本失效的情况。
把wget一行中双引号的部分换为上面复制的请求网址,记得wlan_user_ip后面的ip地址要改成${CURRENT_IP},不然第二行白写了。
把脚本丢到路由器里面,我直接丢到了root文件夹下面。给脚本执行权限。
chmod +x /root/login.sh
进入路由器管理页面,设置脚本为启动项,让它开机就自动登录
/root/login.sh exit 0
重启路由器,连着路由器的电脑和手机都有网了,说明到此已经基本成功了。
目前连接时间过长或者长时间不用都会被断开连接,需要重新登陆,关于这一点还在寻找解决方案。



