本篇教程仅作思路分享,因本文章导致的校园网账号封禁、学校处分以及各种违规、违法行为,本人不承担任何责任以及道德谴责,后果自负!!!

校园网检测的系统是武汉雨滴科技有限公司
学校校园网登录地址为湖北国土资源学院认证
终端管理地址为雨滴哑终端管理,有实力的可以进终端管理玩玩,很刑!

实现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.comtime1.cloud.tencent.comstdtime.gov.hkpool.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-64mt798xaarch64\_genericmt7621架构或处理器可查看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

备份:

https://blog.sunbk201.site/posts/change-ua-by-proxy


2021-05-30# 全新方案-懒人福音-无需手动编译修改UA-校园网防检测

校园网防检测: UA3F - 新一代 UA 修改方法

关于某大学校园网共享上网检测机制的研究与解决方案

OpenWrt 编译与防检测部署教程

阅读过上面两篇文章的同学可以发现,手动编译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

最后修改:2025 年 01 月 17 日
如果我的文章对你有用,请帮助小站能够存活下去( •̀ ω •́ )✧