校园网检测的系统是武汉雨滴科技有限公司的
学校校园网登录地址为湖北国土资源学院认证
终端管理地址为雨滴哑终端管理,有实力的可以进终端管理玩玩,很刑!
实现WEB自动登录认证
登录脚本
#!/bin/ash
# 获取eth3网口的IP地址
eth3_ip=$(ip addr show eth3 | grep 'inet ' | awk '{print $2}' | cut -d '/' -f 1)
# 检查是否成功获取到了IP地址
if [ -z "$eth3_ip" ]; then
echo "无法获取eth3网口的IP地址,请检查网口是否存在或配置是否正确。"
exit 1
fi
# 定义登录地址变量
login_url="http://172.16.1.2/api/account/login"
initial_url="http://172.16.1.2/tpl/default/login_account.html?ip=$eth3_ip&nasId=1"
# 使用已经提供的Cookie和X-CSRF-Token
cookie_value="提前登录在浏览器上使用F12获取Cookie(仅需'yudear='后的字段即可)"
csrf_token="提前登录在浏览器上使用F12获取X-CSRF-Token"
# 定义账号密码变量
username="账号"
password="密码"
# 使用curl发送POST请求
response=$(curl -sS "$login_url" \
-H "Accept: */*" \
-H "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6" \
-H "Connection: keep-alive" \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
-H "Cookie: yudear=$cookie_value" \
-H "Origin: http://172.16.1.2" \
-H "Referer: $initial_url" \
-H "X-CSRF-Token: $csrf_token" \
-H "User-Agent: SouFan" \
-H "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8" \
--data-raw "username=$username&password=$password&nasId=1&isp=local&timeLimit=" \
--insecure)
# 输出响应
echo "$response"
最后的账号密码需要更改,请注意!
检测网络异常自动登录脚本
#!/bin/sh
# 定义要检查的网址,这里以百度为例
CHECK_URL="baidu.com"
# 定义检测间隔时间(秒)
INTERVAL=60
# 定义处理断网情况的脚本路径
AUTOLOGIN_SCRIPT="这里填写你登录脚本的路径"
# 检查网络连接的函数
check_network_connection() {
if ping -c 1 $CHECK_URL > /dev/null; then
echo "网络连接正常"
return 0 # 网络正常
else
echo "网络连接异常"
return 1 # 网络异常
fi
}
# 主循环,持续检查网络
while true; do
if ! check_network_connection; then
# 网络异常时,执行自动登录脚本
echo "执行自动登录脚本..."
/bin/bash $AUTOLOGIN_SCRIPT
fi
sleep $INTERVAL
done
最好通过ftp上传,文件传输协议选择SCP
记得给这个两个文件执行权限
chmod +x 文件名
想要实现脚本开启运行只需在
系统-启动项-本地运行脚本下的exit 0前添加
文件路径 start
例如:/etc/init.d/shellcrash start
运行脚本就发现登录成功啦!
防检测配置
各种检测方案:# 关于某大学校园网共享上网检测机制的研究与解决方案
本篇教程只做关于UA字段(user-agent
)的修改
- 进入
OpenWRT
系统设置, 勾选Enable NTP client
(启用 NTP 客户端)和Provide NTP server
(作为 NTP 服务器提供服务) - NTP server candidates(候选 NTP 服务器)四个框框分别填写
ntp1.aliyun.com
、time1.cloud.tencent.com
、stdtime.gov.hk
、pool.ntp.org
方法一:使用UA3F修改UA(首推)
UA3F 是新一代 HTTP User-Agent 修改方法,对外作为一个 SOCK5 服务,可以部署在路由器等设备等设备进行透明 UA 修改。
部署UA3F
Release 页面已经提供常见架构的编译版本,可以根据自己架构下载并解压到路由器等设备上。
安装(升级)脚本:
opkg update
opkg install curl libcurl luci-compat
export url='https://blog.sunbk201.site/cdn' && sh -c "$(curl -kfsSl $url/install.sh)"
service ua3f reload
在服务-UA3F中启用
防火墙添加自定义规则
UA3F可以只加修改TTL这一条
# 通过 iptables 修改 TTL 值 数字为需要的修改的ttl值
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
UA3F与ShellCrash(ShellCrash和OpenClash二选一即可)
1、执行以下命令
sh -c "$(curl -kfsSl https://cdn.jsdelivr.net/gh/juewuy/ShellClash@master/install.sh)" && source /etc/profile &> /dev/null
2、选择2稳定版
3、选择1/etc目录下安装
4、输入crash
5、选择1路由设备配置局域网透明代理,选择1启用自动任务配置,选择1开始导入,选择2在线获取完整配置文件
6、输入链接:国内版:https://cdn.jsdelivr.net/gh/SunBK201/UA3F@master/clash/ua3f-cn.yaml
国际版:https://cdn.jsdelivr.net/gh/SunBK201/UA3F@master/clash/ua3f-global.yaml
国际版(增强):https://cdn.jsdelivr.net/gh/SunBK201/UA3F@master/clash/ua3f-global-enhance.yaml
也可在这里进行下载http://pan.sfwww.cn/#s/-luXouzw
如果安装Meta内核很慢,可以输入crash,9更新/卸载-7切换安装源及安装版本
7、选择2进入内核功能设置,选择4关闭只代理常用端口
8、选择0返回上级菜单,选择1重启服务
9、验证是否生效
访问 http://ua.233996.xyz,发现真实UA与浏览器UA不一致极为成功,例图如下:
ShellCrash自动启动
在系统-启动项-本地启动脚本exit 0
前添加
/etc/init.d/ua3f start
/etc/init.d/shellcrash start
UA3F与OpenClash(OpenClash和ShellCrash二选一即可)
1、安装 OpenClash
opkg update
opkg remove dnsmasq && opkg install dnsmasq-full
#用于将 OpenWrt 的 dnsmasq 换为 dnsmasq-full
opkg install coreutils-nohup bash dnsmasq-full curl ca-certificates ipset ip-full libcap libcap-bin ruby ruby-yaml kmod-tun kmod-inet-diag unzip kmod-nft-tproxy luci-compat luci luci-base
#安装 OpenClash 相关依赖
cd /root && wget https://github.com/vernesong/OpenClash/releases/download/v0.46.001-beta/luci-app-openclash_0.46.001-beta_all.ipk -O openclash.ipk
#下载 OpenClash ipk 包
opkg install openclash.ipk
#安装 OpenClash
2、在服务-OpenClash-配置管理中上传相应配置
①国内版,无需进行任何修改,可直接使用 ua3f-cn.yaml (Clash 需要选用 Meta 内核。)
②国际版,针对有特定需求的特殊用户进行适配,ua3f-global.yaml,注意需要在 proxy-providers > Global-ISP > url 中(第 23 行)加入你的代理节点订阅链接。(Clash 需要选用 Meta 内核。)
③国际版(增强),针对流量特征检测 (DPI) 进行规则补充,注意该配置会对 QQ、微信等平台的流量进行分流代理,因此需要根据自己的需求谨慎选择该配置,ua3f-global-enhance.yaml,注意需要在 proxy-providers > Global-ISP > url 中(第 23 行)加入你的代理节点订阅链接。(Clash 需要选用 Meta 内核。)
④也可在这里进行下载http://pan.sfwww.cn/#s/-luXouzw
3、在插件设置里勾选*使用 Meta 内核
并保存、应用配置
4、在运行状态下启动OpenClash
5、验证是否生效
访问 http://ua.233996.xyz,发现真实UA与浏览器UA不一致极为成功,例图如下:
OpenClash自动启动
在系统-启动项-本地启动脚本exit 0
前添加
/etc/init.d/ua3f start
/etc/init.d/openclash start
方法二:使用UA2F修改UA(配置低用这个)
Zxilly/UA2F: Change User-Agent to F-words on OpenWRT router to prevent being detected. (github.com)
编译安装UA2F
编译UA2F教程
如果是x86-64、mt798x、aarch64\_generic、mt7621架构或处理器可查看OpenWrt 使用 UA2F 绕过校园网 UA 检测全解析案例 - 喵二の小博客这篇文章免编译安装,简单点。
UA2F命令
# 启用 UA2F
uci set ua2f.enabled.enabled=1
# 可选的防火墙配置选项
# 是否自动添加防火墙规则
uci set ua2f.firewall.handle_fw=1
# 是否尝试处理 443 端口的流量, 通常来说,流经 443 端口的流量是加密的,因此无需处理
uci set ua2f.firewall.handle_tls=1
# 是否处理微信的流量,微信的流量通常是加密的,因此无需处理。这一规则在启用 nftables 时无效
uci set ua2f.firewall.handle_mmtls=1
# 是否处理内网流量,如果你的路由器是在内网中,且你想要处理内网中的流量,那么请启用这一选项
uci set ua2f.firewall.handle_intranet=1
# 使用自定义 User-Agent
uci set ua2f.main.custom_ua="Test UA/1.0"
# 应用配置
uci commit ua2f
# 开机自启
service ua2f enable
# 启动 UA2F
service ua2f start
# 读取日志
logread | grep UA2F
防火墙添加自定义规则
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
# 通过 rkp-ipid 设置 IPID
# 若没有加入rkp-ipid模块,此部分不需要加入
iptables -t mangle -N IPID_MOD
iptables -t mangle -A FORWARD -j IPID_MOD
iptables -t mangle -A OUTPUT -j IPID_MOD
iptables -t mangle -A IPID_MOD -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 127.0.0.0/8 -j RETURN
# 由于本校局域网是A类网,所以我将这一条注释掉了,具体要不要注释结合你所在的校园网
# iptables -t mangle -A IPID_MOD -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A IPID_MOD -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A IPID_MOD -d 255.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -j MARK --set-xmark 0x10/0x10
# 防时钟偏移检测
iptables -t nat -N ntp_force_local
iptables -t nat -I PREROUTING -p udp --dport 123 -j ntp_force_local
iptables -t nat -A ntp_force_local -d 0.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 127.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 192.168.0.0/16 -j RETURN
# 需将192.168.11.1改为自己路由器的地址
iptables -t nat -A ntp_force_local -s 192.168.0.0/16 -j DNAT --to-destination 192.168.11.1
# 通过 iptables 修改 TTL 值 数字为需要的修改的ttl值
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
# iptables 拒绝 AC 进行 Flash 检测
iptables -I FORWARD -p tcp --sport 80 --tcp-flags ACK ACK -m string --algo bm --string " src=\"http://1.1.1." -j DROP
方法三:请查看SunBK201
备份:
2021-05-30# 全新方案-懒人福音-无需手动编译修改UA-校园网防检测
阅读过上面两篇文章的同学可以发现,手动编译OpenWrt是一件很痛苦的事。 显然对于一些动手能力不强的同学来说,通过 UA2F 修改UA是比较困难的。而且,UA2F从设计层面上也存在一些问题,例如无法处理网卡分包等情况。
因此,我们需要一种更加简单的方案,既能无需编译OpenWrt,又能更好的满足我们的需求。
之前我曾经提到过我们可以通过加密流量来实现防检测,但我当时并没有采取这个策略,因为进行全局加密网络流畅度影响太大, 而进行部分加密目前市面上还没有很好的解决方案(之前是这么认为),目前大多数加密软件都是基于规则的加密,但支持的多为针对域名的加密。
然而我们的需求是针对http应用层的加密,这类加密方案目前支持的不多。
经过我深入了解,Clash 中 DstPort 是我们最理想的规则选项,我们可以指定代理目标端口为http的80端口从而实现http应用层的加密。
此外,除了针对http的加密外,我们还可以通过支持Mitm的网络调试工具对http中UA进行重写以达到修改UA的目的。
基于上面的分析,我总结了以下方案:
Windows 用户
使用 Clash,添加规则:
- DST-PORT,80,proxy
加入以上规则即可实现针对 80 端口的加密
Andorid 用户
使用 Clash,添加规则:
- DST-PORT,80,proxy
加入以上规则即可实现针对80 端口的加密
iOS & Mac 用户
使用 Quantumult X/Surge 等支持重写的工具,添加重写规则:
# Quantumult X
^http:// url request-header (\r\n)User-[A|a]gent:.+(\r\n) request-header $1User-Agent: F$2
# Surge
^http:// header-replace User-Agent F
加入以上规则即可实现针对 UA 的重写
OpenWrt 配置
使用 OpenClash,添加规则:
- DST-PORT,80,proxy
如果在 OpenWrt 加入这条配置,那么就无需进行其他终端的配置了。
其他
对于 TTL 和 NTP 方面,我们无需进行手动编译,常见的 OpenWrt 固件都能够默认支持。 对于 IPID,我认为无需关注,基于 IPID 的检测我认为是不现实且很少见的。
如果有疑问可以加讨论组:Telegram
Copyright © SunBK201 Ushiromiya
6 条评论
现在还能用吗,fff之后多设备还是会封,也是国土的
不要改成fff,改成常见的UA,国土开了DPI深度包检测,目前没有一个好的方案可以绕过检测。
你好,非常感谢你能分享 OpenWrt 校园网的相关内容,这里看到博客中引用了我的 xLog 的一个链接,这里建议你引用我们的主站 www.miaoer.net 下的 https://www.miaoer.net/posts/network/openwrt-ua2f 博客替换博文中的 “OpenWrt 使用 UA2F 绕过校园网 UA 检测全解析案例 - miaoer (xlog.page)” 因为我们 xLog 只是为了防止失联的时候同步的第三方平台,非常感谢你的分享。
已更改,感谢提醒
湖北国土资源职业学院于2024年9月5日凌晨0:00升级登录UI导致原登录脚本不可用,现已更新,请低调使用~