Skip to content

Instantly share code, notes, and snippets.

@binsee
Last active November 19, 2023 14:25
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save binsee/4dfddb6b1be2803396250b7772056f1c to your computer and use it in GitHub Desktop.
Save binsee/4dfddb6b1be2803396250b7772056f1c to your computer and use it in GitHub Desktop.
天津师范大学 校园网登陆脚本 Dr.Com
#!/bin/bash
# 天津师范大学 校园网登陆脚本 2021.03
# 适用于: Padavan
# by: binsee
# 本脚本保存至 /etc/storage/drcom_cron.sh
# 添加计划任务
#『系统管理 - 服务 - 计划任务』
# */10 * * * * /etc/storage/drcom_cron.sh
# 添加到WAN口上线后激活
#『自定义设置 - 脚本 - 在 WAN 上行/下行启动后执行:』中
# 写到 「if [ $1 == "up" ] ; then」这行后边
# /etc/storage/drcom_cron.sh
# --------- 配置区 ---------
server=115.24.187.161
user=123@cmcc
# 账号后缀
# 电信 @telecom
# 移动 @cmcc
# 联通 @unicom
# 校园网(无后缀)
password=000000
# --------- 配置区 ---------
html_file="/tmp/drcom_html.log"
login_out_file="/tmp/drcom_login.log"
logger -t "【Dr.COM网页认证】" "开始定时检测"
curl -s "http://${server}" > ${html_file}
check_web=`grep "Dr.COMWeb" ${html_file} | head -n1`
check_status=`grep "Dr.COMWebLoginID_0.htm" ${html_file} | head -n1`
# Dr.COMWebLoginID_0.htm 登陆页(未登陆)
# Dr.COMWebLoginID_1.htm 注销页(已登录)
# Dr.COMWebLoginID_2.htm 登陆失败页
# Dr.COMWebLoginID_3.htm 登陆成功页
if [[ "$check_web" == "" ]]; then
logger -t "【Dr.COM网页认证】" "访问认证网页失败"
elif [[ "$check_status" != "" ]]; then
#尚未登录
logger -t "【Dr.COM网页认证】" "上网登录窗尚未登录"
ip=`grep -Eo "v46ip='[0-9\.]+'" ${html_file} | sed -r "s/v46ip='([0-9\.]+)'/\1/g"`
if [[ "$ip" == ""]]; then
ip=`grep -Eo 'ss5="[0-9\.]+"' ${html_file} | sed -r 's/ss5="([0-9\.]+)"/\1/g'`
fi
if [[ "$ip" == ""]]; then
ip=`grep -Eo "v4ip='[0-9\.]+'" ${html_file} | sed -r "s/v4ip='([0-9\.]+)'/\1/g"`
fi
if [[ "$ip" == ""]]; then
ip=`grep -Eo 'ss3="[0-9\.]+"' ${html_file} | sed -r 's/ss3="([0-9\.]+)"/\1/g'`
fi
if [[ "$ip" == ""]]; then
logger -t "【Dr.COM网页认证】" "获取当前内网ip失败"
else
logger -t "【Dr.COM网页认证】" "当前内网ip:${ip}"
random=$((`date +%s%N | md5sum | tr -cd "[0-9]" | head -c 4`*1))
url="http://${server}:801/eportal/?c=Portal&a=login&callback=dr1003&login_method=1&user_account=${user}&user_password=${password}&wlan_user_ip=${ip}&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=3.3.2&v=${random}"
curl -s "$url" \
-H 'Connection: keep-alive' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.57' \
-H 'Accept: */*' \
-H 'Referer: http://${server}/' \
-H 'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6' \
--compressed \
-o ${login_out_file}
result=`grep -Eo '"result":"[0-9]+"' ${login_out_file} | sed -r 's/"result":"([0-9]+)"/\1/g'`
result=`[[ "$result" == 1 || "$result" == "ok" ]] && echo "登陆成功" || echo "登陆失败"`
logger -t "【Dr.COM网页认证】" "上网登录窗未登录,尝试登陆结果:${result} " `cat ${login_out_file}`
fi
else
#已经登录
logger -t "【Dr.COM网页认证】" "上网登录窗之前已登录"
fi
logger -t "【Dr.COM网页认证】" "结束定时检测"