# 常州工学院校园网自动认证 **Repository Path**: GiveMePropofol/CZIT-Campus-Network-Auto-Authentication ## Basic Information - **Project Name**: 常州工学院校园网自动认证 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-22 - **Last Updated**: 2026-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CampusAuth — 常州工学院校园网自动认证工具 > 校园网断线后自动重连 WiFi 并完成网页认证,从此告别手动登录。 > **Linux 用户请切换到 `linux` 分支,那里有 `nmcli` / `systemd` 版本。本文档仅适用于 Windows。** --- ## 30 秒快速开始 ``` git clone https://gitee.com/GiveMePropofol/CZIT-Campus-Network-Auto-Authentication.git cd CZIT-Campus-Network-Auto-Authentication python setup.py # 按提示输入学号、密码 python campus_auth.py --once # 测试一次 install.bat # 安装为开机自启任务(需管理员) ``` 搞定,以后断网会自动恢复,每天 23:45 也会自动认证,不用再管了。 --- ## 使用前后对比 | | 以前(手动) | 现在(自动) | |---|---|---| | 断网后 | 打开浏览器 -> 等弹窗 -> 输密码 -> 点登录 | 脚本自动检测 -> 自动重连 -> 自动认证 | | 耗时 | 1-3 分钟 | **约 40 秒** | | 23:45 断网 | 手动等网回来再登录 | 自动等待服务器就绪 + 重试认证 | | 睡觉/上课时断网 | 等回来再手动连 | 自动恢复,无需干预 | | 需要的操作 | 每次都要手动操作 | 安装一次,永久生效 | --- ## 环境要求 | 项目 | 要求 | |---|---| | 操作系统 | Windows 7 / 10 / 11 | | Python | 3.6 及以上([下载地址](https://www.python.org/downloads/)) | | 第三方库 | **不需要**(只用 Python 标准库) | | 网络 | 已连接过 `CZUST` 或 `@CGY` WiFi 至少一次 | | 权限 | 管理员权限(设置计划任务时需要) | --- ## 安装教程(5 步) ### 第 1 步:下载项目 **方式 A:Git 克隆(推荐)** 打开 `cmd`(按 `Win+R`,输入 `cmd`,回车),然后输入: ```cmd git clone https://gitee.com/GiveMePropofol/CZIT-Campus-Network-Auto-Authentication.git cd CZIT-Campus-Network-Auto-Authentication ``` **方式 B:下载 ZIP** 1. 打开 Gitee 仓库页面 2. 点击「克隆/下载」->「下载 ZIP」 3. 解压到任意文件夹,例如 `D:\CZIT-Campus-Network-Auto-Authentication` 4. 在文件夹地址栏输入 `cmd` 并回车 --- ### 第 2 步:运行配置向导 ```cmd python setup.py ``` 向导会依次问你以下问题: ``` === 常州工学院校园网自动认证 - 配置向导 === 请输入学号: 2023010101 请输入密码: ******** 请选择认证类型: 1. CZUST (教学区/图书馆 WiFi,不需要选运营商) 2. @CGY (宿舍 WiFi,需要选运营商) 请输入选项 [1/2]: 1 正在保存配置... 配置已保存到 config.ini 下一步: python campus_auth.py --once 测试一下 ``` > **注意**:CZUST(教学区)运营商选项**留空**即可;@CGY(宿舍)需要选择对应的运营商(联通/移动/电信)。 --- ### 第 3 步:手动编辑配置(可选) 如果你的电脑**同时使用 WiFi 和有线网**,或者需要更精细的控制,可以手动编辑 `config.ini`(参考 `config.ini.example`): ```ini [WIFI_1] SSID=CZUST AUTH_HOST=192.168.255.4 USER=2023010101 PASS=your_password_here # CZUST 不需要运营商,留空即可 # 宿舍 WiFi(如 @CGY-xxx)需要填:联通/移动/电信 ISP= # 宿舍 WiFi 示例(取消注释并修改 SSID) # [WIFI_2] # SSID=@CGY-3-C309-2.4G # AUTH_HOST=192.168.255.4 # USER=2023010101 # PASS=your_password_here # ISP=联通 # 有线网络(可选) # [ETH_1] # INTERFACE=Ethernet # AUTH_HOST=192.168.255.4 # USER=2023010101 # PASS=your_password_here # ISP= [GLOBAL] CHECK_INTERVAL=30 AUTH_TIMEOUT=10 LOG_FILE=./auth.log # 认证成功后执行的命令(留空=不执行) POST_AUTH_CMD= # 是否启用 23:45 定时认证 TIMER_ENABLED=true # 是否开机自启 AUTO_START=true ``` > **隐私提醒**:`config.ini` 包含你的密码,已在 `.gitignore` 中排除,不会被提交到仓库。 --- ### 第 4 步:测试运行 **模拟测试(不会真的执行,只看流程):** ```cmd python campus_auth.py --dry-run ``` 预期输出: ``` [DRY-RUN] 检测网络状态... [DRY-RUN] 当前 WiFi: CZUST [DRY-RUN] 网络连通性: 不通 [DRY-RUN] 将会执行: 连接WiFi -> 认证 [DRY-RUN] 完成(未实际执行) ``` **真实测试(执行一次认证):** ```cmd python campus_auth.py --once ``` 预期输出: ``` [INFO] 检测到网络不通,开始认证... [INFO] 连接 WiFi: CZUST [INFO] 发送认证请求到 192.168.255.4... [INFO] 认证成功!网络已恢复 ``` > 如果看到「认证成功」,说明配置正确,可以进入下一步。 --- ### 第 5 步:安装为计划任务(开机自启) **右键** `install.bat`,选择 **「以管理员身份运行」**。 预期输出: ``` === CZUST 校园网自动认证 - 安装 === 正在创建任务计划... [OK] 守护任务已创建(登录时自动启动) [OK] 定时任务已创建(每天 23:45) ==================================== 安装完成! ==================================== 守护进程会在每次登录后自动启动 每天 23:45 会自动认证校园网 ``` > 如果没有右键管理员运行,会提示权限不足。 安装成功后,**每次开机**脚本会自动在后台运行: - 断网时自动重连认证 - 每天 23:45 自动等待服务器就绪并重试认证 --- ## 日常使用 ### 查看运行状态 ```cmd python campus_auth.py --scan ``` 输出示例: ``` 当前状态: WiFi: CZUST (已连接) 网络: 正常 认证: 已认证 ``` ### 手动触发认证 ```cmd python campus_auth.py --once ``` ### 后台守护模式 ```cmd python campus_auth.py --daemon ``` 按 `Ctrl+C` 停止。 ### 查看日志 ```cmd type auth.log ``` 或者用记事本打开: ```cmd notepad auth.log ``` 日志示例: ``` 2026-05-22 08:30:01 [INFO] 网络检测: 不通 2026-05-22 08:30:02 [INFO] 连接 WiFi: CZUST 2026-05-22 08:30:05 [INFO] 认证请求已发送 2026-05-22 08:30:06 [INFO] 认证成功 2026-05-22 08:30:06 [INFO] 恢复耗时: 5 秒 ``` --- ## 工作原理 ### 守护进程(`--daemon`,开机自启) ``` 开机启动 | v 每 30 秒循环检测 | +-- 有网?--> 跳过,等下一轮 | +-- 已连校园 WiFi 但断网?--> 认证 | +-- 已连有线但断网?--> 认证 | +-- 什么都没连?--> 自动连 WiFi --> 认证 ``` ### 每天 23:45 定时认证(`--scheduled`) ``` 23:45 脚本启动 | v 已联网?--> 跳过 | v 等待认证服务器就绪(最多 60 秒,每 5 秒检测) | v 循环最多 3 次: +-- 有线?--> 认证 +-- 已连 WiFi?--> 认证 +-- 未连?--> 自动连 WiFi --> 认证 | +-- 成功?--> 退出 +-- 失败?--> 等 10 秒 --> 下一次尝试 | v 3 次都失败?--> 写日志告警,需手动认证 ``` ### 核心原理 1. 使用 `netsh wlan connect` 连接指定 WiFi 2. 使用 `ipconfig` / `netsh` 获取网络状态 3. 向 Dr.COM 认证服务器 `192.168.255.4` 发送 HTTP POST 完成认证 4. 每天 23:45 定时认证:先等待服务器就绪,再自动重试,WiFi 和有线均支持 5. 全程使用 Python 标准库,无任何第三方依赖 --- ## 运行模式一览 | 模式 | 命令 | 用途 | |---|---|---| | 守护进程 | `python campus_auth.py --daemon` | 持续监控,断网自动恢复(开机自启) | | 单次认证 | `python campus_auth.py --once` | 手动执行一次认证 | | 定时认证 | `python campus_auth.py --scheduled` | 23:45 自动触发(由任务计划调用) | | 扫描页面 | `python campus_auth.py --scan` | 查看认证页面信息 | | 干跑模式 | `python campus_auth.py --dry-run` | 检测网络状态,不实际认证 | --- ## 文件说明 | 文件 | 说明 | |---|---| | `campus_auth.py` | 主程序(核心脚本) | | `setup.py` | 配置向导(首次运行) | | `config.ini` | 配置文件(密码在此,已 gitignore) | | `config.ini.example` | 配置文件模板(参考用) | | `install.bat` | 安装计划任务(右键管理员运行) | | `uninstall.bat` | 卸载计划任务 | | `auth.log` | 运行日志(自动生成,已 gitignore) | | `README.md` | 本文档 | | `CLAUDE.md` | Claude Code 开发指引 | | `.gitignore` | Git 忽略规则 | --- ## 常见问题(FAQ) ### Q1:运行后提示「WiFi 扫描为空」怎么办? 说明电脑没有检测到 WiFi 网卡,或者 WiFi 被关闭了。 ```cmd netsh wlan show interfaces ``` 如果没有输出,检查: - 笔记本是否有物理 WiFi 开关(有些在侧面) - `Fn + F5`(或类似快捷键)是否关闭了 WiFi - 设备管理器中无线网卡是否被禁用 ### Q2:认证失败,一直提示重试? 常见原因: 1. **密码错误** -> 重新运行 `python setup.py` 更改密码 2. **不在校园网范围** -> 确认已连接 `CZUST` 或 `@CGY` 3. **认证服务器维护** -> 稍后再试,或手动打开浏览器试试能否登录 4. **ISP 选错** -> @CGY 宿舍网必须选运营商,CZUST 留空 ### Q3:提示 `python 不是内部或外部命令`? 说明 Python 没装或没加入 PATH。 1. 去 [python.org](https://www.python.org/downloads/) 下载 Python 3.6+ 2. 安装时 **勾选「Add Python to PATH」**(非常重要!) 3. 重新打开 cmd 窗口再试 ### Q4:运行 install.bat 时弹出防火墙提示? 这是正常的。点击 **「允许访问」** 即可。如果点了拒绝,之后可以在「Windows 防火墙」->「允许应用」中手动添加。 ### Q5:如何同时添加多个 WiFi? 编辑 `config.ini`,添加多个 `[WIFI_x]` 段: ```ini [WIFI_1] SSID=CZUST AUTH_HOST=192.168.255.4 USER=你的学号 PASS=你的密码 ISP= [WIFI_2] SSID=@CGY-3-C309-2.4G AUTH_HOST=192.168.255.4 USER=你的学号 PASS=你的密码 ISP=联通 ``` 脚本会依次尝试连接。 ### Q6:如何修改密码? 两种方式: - 重新运行 `python setup.py`(推荐) - 直接编辑 `config.ini` 中对应 `[WIFI_x]` 或 `[ETH_x]` 段的 `PASS` 字段 ### Q7:日志在哪里看? ```cmd type auth.log ``` 如果日志太大想清空: ```cmd echo. > auth.log ``` ### Q8:如何完全卸载? ```cmd 右键 uninstall.bat -> 以管理员身份运行 ``` 然后删除整个项目文件夹即可。 ### Q9:在宿舍 / 校外能用吗? - **宿舍**:可以,连接 `@CGY` WiFi,配置中 `ISP` 填对应运营商(联通/移动/电信) - **校外**:不能用,本工具仅限校园网环境 ### Q10:断网后多久能恢复? **日常断网(守护进程)**:从检测到断网到认证成功,通常 **约 40 秒**。其中包括: - WiFi 重连:约 5 秒 - 等待 IP 获取:约 10 秒 - HTTP 认证:约 3 秒 - 网络生效:约 20 秒 **每天 23:45 定时重连**:学校 23:45 断网重置,脚本会先等待认证服务器就绪(最多 60 秒),然后最多重试 3 次认证(每次间隔 10 秒),确保成功率。整个过程约 1-2 分钟内完成。 ### Q11:会不会和 VPN / 加速器冲突? 有可能。如果同时使用了 VPN 或游戏加速器,它们可能劫持网络流量导致认证失败。建议认证期间关闭 VPN,认证成功后再开启。 ### Q12:支持有线网吗? 支持。守护进程和定时认证都会检测有线网络,如果已连接有线且走同样的认证页面,会自动认证。配置方式:在 `config.ini` 中添加 `[ETH_1]` 段,指定接口名即可。 ```ini [ETH_1] INTERFACE=Ethernet AUTH_HOST=192.168.255.4 USER=你的学号 PASS=你的密码 ISP= ``` --- ## 卸载 ```cmd 右键 uninstall.bat -> 以管理员身份运行 ``` 预期输出: ``` === 校园网自动认证 - 卸载 === 正在删除计划任务 CampusAuthDaemon... 正在删除计划任务 CampusAuthTimed... 卸载完成! ``` 然后删除整个项目文件夹即可。 --- ## 相关链接 - **项目地址**:https://gitee.com/GiveMePropofol/CZIT-Campus-Network-Auto-Authentication - **问题反馈**:https://gitee.com/GiveMePropofol/CZIT-Campus-Network-Auto-Authentication/issues - **Python 下载**:https://www.python.org/downloads/ - **常州工学院官网**:https://www.czu.cn --- ## 许可证 MIT License 本工具仅供学习交流使用,请遵守学校网络管理规定。