ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

OpenWrt自动登录Portal脚本

2021-07-08 21:35:42  阅读:301  来源: 互联网

标签:脚本 10.5 登录 UIP Portal print root OpenWrt


学校校园网最近更换了Portal登录方式,由于实在是觉得麻烦便想使用脚本在路由器上实现自动登录,然后路由器充当终端。

基础信息

Router: Xiaomi MiWiFi Nano(R1CL)
Openwrt: 19.07.4 r11208-ce6496d796
Portal: 中国电信WiFi Portal v4.0
Browser: 90.0.4430.212 64-bit

提示

该脚本仅供参考,里面的Portal服务器/用户名/密码等参数均为虚拟,更多的是用来学习Linux脚本技巧。在这个过程中,我也遇到了很多问题,得到了好友Will酱的大力帮助,在此表示感谢。我踩的一些坑会在文末写出来,避免其他人再踩坑。

获得Portal参数

首先打开Portal页面,先进行登录后确认账号密码没有输错。然后按F12调出开发者选项,切换到Network选项卡,在Throttling(丢包)选项中选择Offline(离线),这时点击登录后下面数据流会立即出现一个红色的数据,一般为login。右键,Copy,Copy as cURL(bash)。注意一定要复制为bash。

获取动态参数

我们学校的Portal是静态账号,如果是手机号实时获取验证码那种的就不用往下看了,基本没用了。

但是它还有一个动态参数UserIP,这个我不清楚是否是有意而为之。

UserIP是DHCP直接分配的,相当于我们只要跟路由器询问一下当前IP就行了。

OpenWrt中获取IP地址的命令

ifconfig | grep -A1 "eth0.2" | grep 'inet addr' |awk -F ':' '{print $2}'|awk '{print $1}'

将上面命令的输出内容作为变量存储在脚本里面调用即可。

就结束了

是的,就结束了。

我给大家看一下成品

#!/bin/ash
sleep 5
UIP=`ifconfig | grep -A1 "eth0.2" | grep 'inet addr' |awk -F ':' '{print $2}'|awk '{print $1}'`
echo "============New Login===============" >> /root/bdlogin.log
date >> /root/bdlogin.log
echo ${UIP} >> /root/bdlogin.log
curl 'http://10.5.17.253:913/v0400/web/other/login' \
  -H 'Connection: keep-alive' \
  -H 'Pragma: no-cache' \
  -H 'Cache-Control: no-cache' \
  -H 'Accept: application/json, text/javascript, */*; q=0.01' \
  -H 'DNT: 1' \
  -H 'X-Requested-With: XMLHttpRequest' \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36' \
  -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
  -H 'Origin: http://10.5.17.253:913' \
  -H "Referer: http://10.5.17.253:913/v0400/web/index?userip=${UIP}&authip=10.5.12.239&oraurl=null" \
  -H 'Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6' \
  -H 'Cookie: com.ailk.aiip.modules.webgui.common.theme.CookieFilterThemeResolver.THEME=v_4_0; LogSuc=0' \
  --data-raw "commonUser=testbrandbandstu@edustuct&commonUserPwd=93042251&regArea=bj&userIp=${UIP}&authip=10.5.12.239&oraUrl=null" \
  --insecure >> /root/bdlogin.log

保存为脚本丢进启动项就可以用了。

踩坑

  1. 开头的sleep 5是为了防止路由器刚开机就执行脚本会有分不到DHCP的情况,这个后来测试的时候我觉得我是多虑了。

  2. >是覆写,>>是写入完了继续在写

  3. 用了变量的行一定要使用双引号"I love ${THEPERSON} who is the best"

  4. 把命令的输出结果作为变量的时候,命令本身外面需要套反引号(如上方代码第五行)

  5. 每个人网卡配置可能不一样,中间的eth0.2换成你对应的网卡就可以了

  6. 实际上curl里面的-H参数有些是可以删的,不过懒得搞了,又不是不能用

其他说明

本人文章截至2021年5月22日仅在本人博客博客园简书平台发布,其他平台均为未授权发布。

标签:脚本,10.5,登录,UIP,Portal,print,root,OpenWrt
来源: https://www.cnblogs.com/lxnchan/p/14988207.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有