CAU校园网接路由器(备忘)
校园网是30元包月不限流量3人拼每人每月10元1.路由器型号TP-Link AX3000京东购入134.5因为我们是实验室3个人拼所以一个人不超过50元2.路由器安装流程拿到手接通电源直接插上网线就行一般实验室到处都是网口但是我不知道宿舍可以用吗网页输入10.3.191.9就会弹出自动跳转跳转有线网登录界面输入学号密码登录即可农大校园网连手机经常会掉无感知绑定也没有用所以问了一下我师兄他说写个python脚本就行。3.python脚本使用方法文件名campus_autologin.py存放位置我是存放到了桌面D:\Users\Administrator\Desktop\3.1 配置虚拟环境就第一次安装的时候配置就行(一般学计算机的都默认有anaconda和就不讲这个了其实我也不知道是不是一定需要直接说命令了)conda create-nnetloginpython3.11-yconda activate netlogin pipinstallplaywright playwrightinstallchromium找到后台运行需要的pythonw的路径where pythonw输出结果(netlogin) C:\Users\Administratorwhere pythonw C:\Users\Administrator\.conda\envs\netlogin\pythonw.exe有用 C:\Users\Administrator\AppData\Local\Programs\Python\Python311\pythonw.exe3.2 首次测试step1打开anaconda prompt输入上述5行命令激活环境step2把脚本的L37改成False测试这个好像是可以可视化看到登录过程后续改成True就不看了step3把校园网注销step4运行程序Anaconda Prompt 里conda activate netlogin→cd /d D:\Users\Administrator\Desktop→python campus_autologin.py。看到浏览器自动登录、日志出现「网络正常 ✓」 成功。如果可以成功登录就行下面开始配置开机自启4.配置开启自启把xml文件导入进去输入WinR—taskschd.msc操作—导入任务把xml文件导入进去就行直接点击确定在左侧的任务计划程序库里面就能看到校园网自动重连判断进行有没有在运行打开任务管理器输入python就能查到程序了要把电脑设置成连接电源电脑不关机不睡眠。5.代码附件都有代码 校园网自动重连守护脚本网页认证版 · Dr.COM 适配 -------------------------------------------------- 定时检测能否上外网掉线时自动打开登录页、填账号密码、提交重新认证。 只操作可见登录框用原生 DOM 点击触发登录绕过元素遮挡/稳定性限制。 首次准备Anaconda Prompt / 已激活 netlogin 环境: conda create -n netlogin python3.11 -y conda activate netlogin pip install playwright playwright install chromium 运行: python campus_autologin.py # 前台能看日志调试用 pythonw campus_autologin.py # 无窗口后台运行HEADLESSTrue 时 停止: CtrlC importsysimporttimeimportloggingfromurllib.requestimporturlopen,Requestfromurllib.errorimportURLErrorfromplaywright.sync_apiimportsync_playwright# 配置区一般只改账号密码 LOGIN_URLhttp://10.3.38.8# 你的登录页地址USERNAME学号PASSWORD密码CHECK_INTERVAL30# 在线时每隔多久探测一次RETRY_INTERVAL10# 提交登录后多少秒再复查# 【重要】先用 False 测能看到浏览器自动填表登录。# 确认成功后改成 True才能无窗口后台运行、配开机自启。HEADLESSTrue# # 国内连通性检测返回 204 才算真能上外网掉线被门户拦截会被重定向据此识别CHECK_URLS[http://connect.rom.miui.com/generate_204,http://connectivitycheck.platform.hicloud.com/generate_204,]logging.basicConfig(levellogging.INFO,format%(asctime)s %(message)s,datefmt%H:%M:%S,handlers[logging.StreamHandler(sys.stdout),logging.FileHandler(campus_autologin.log,encodingutf-8),],)loglogging.getLogger()defis_online()-bool:访问 generate_204返回 204 才算真的能上外网。forurlinCHECK_URLS:try:reqRequest(url,headers{User-Agent:Mozilla/5.0})ifurlopen(req,timeout5).getcode()204:returnTrueexcept(URLError,OSError):continuereturnFalsedefwait_visible(page,selector:str,timeout_ms:int8000):在 timeout 内轮询返回第一个可见的匹配元素跳过隐藏登录框里的重复元素。endtime.time()timeout_ms/1000.0whiletime.time()end:forelinpage.query_selector_all(selector):try:ifel.is_visible():returnelexceptException:passpage.wait_for_timeout(300)returnNonedefdo_login()-None:打开登录页 - 填可见的账号/密码 - 原生点击登录按钮onclicklogin。log.info(检测到掉线尝试重新登录 …)try:withsync_playwright()asp:browserp.chromium.launch(headlessHEADLESS)pagebrowser.new_page()page.set_default_timeout(10000)page.goto(LOGIN_URL,wait_untildomcontentloaded)# 等到可见的密码框和用户名框跳过隐藏登录标签页pwwait_visible(page,input[typepassword])userwait_visible(page,input:not([typepassword]):not([typecheckbox]):not([typehidden]):not([typesubmit]):not([typebutton]):not([typeradio]))ifnotpwornotuser:log.warning(没找到可见的登录框可能已是登录状态或页面没加载出来)browser.close()returnuser.fill(USERNAME)pw.fill(PASSWORD)log.info(已填入账号密码准备提交 …)# 提交优先用原生 DOM click 触发按钮 onclicklogin()绕过遮挡/稳定性检查btnwait_visible(page,input[name0MKKey],3000)ifbtn:btn.evaluate(el el.click())log.info(已触发登录按钮原生点击)else:pw.press(Enter)log.info(未找到登录按钮改用回车提交)page.wait_for_timeout(2500)# 兜底若仍停留在登录页还能看到可见密码框再补一次回车stillwait_visible(page,input[typepassword],1500)ifstill:log.info(疑似未提交成功补一次回车兜底)try:still.press(Enter)exceptException:passpage.wait_for_timeout(2000)browser.close()log.info(登录动作已完成等待网络恢复 …)exceptExceptionase:log.warning(f登录过程出错{e})defmain()-None:log.info(校园网守护已启动开始监测 …)whileTrue:ifis_online():time.sleep(CHECK_INTERVAL)else:do_login()time.sleep(RETRY_INTERVAL)if__name____main__:try:main()exceptKeyboardInterrupt:log.info(已手动停止)?xml version1.0 encodingUTF-16?Taskversion1.2xmlnshttp://schemas.microsoft.com/windows/2004/02/mit/taskRegistrationInfoDescriptionCampus net auto re-login/Description/RegistrationInfoTriggersLogonTriggerEnabledtrue/EnabledDelayPT30S/Delay/LogonTrigger/TriggersPrincipalsPrincipalidAuthorLogonTypeInteractiveToken/LogonTypeRunLevelLeastPrivilege/RunLevel/Principal/PrincipalsSettingsMultipleInstancesPolicyIgnoreNew/MultipleInstancesPolicyDisallowStartIfOnBatteriesfalse/DisallowStartIfOnBatteriesStopIfGoingOnBatteriesfalse/StopIfGoingOnBatteriesAllowHardTerminatetrue/AllowHardTerminateStartWhenAvailabletrue/StartWhenAvailableRunOnlyIfNetworkAvailablefalse/RunOnlyIfNetworkAvailableIdleSettingsStopOnIdleEndfalse/StopOnIdleEndRestartOnIdlefalse/RestartOnIdle/IdleSettingsAllowStartOnDemandtrue/AllowStartOnDemandEnabledtrue/EnabledHiddenfalse/HiddenRunOnlyIfIdlefalse/RunOnlyIfIdleWakeToRunfalse/WakeToRunExecutionTimeLimitPT0S/ExecutionTimeLimitPriority7/Priority/SettingsActionsContextAuthorExecCommandC:\Users\Administrator\.conda\envs\netlogin\pythonw.exe/CommandArgumentsD:\Users\Administrator\Desktop\campus_autologin.py/ArgumentsWorkingDirectoryD:\Users\Administrator\Desktop/WorkingDirectory/Exec/Actions/Task