此脚本增强了uim.xjtlu.edu.cn的自动登录,可自动完成二次验证,无需手动输入账号和OTP码
- 🔑 UIM自动登录 (核心): 后台发送请求,以快速登录UIM
- ⏩ 跳过OTP (核心): 检测到需要二次验证(OTP)时,自动计算并发送请求,无需手动输入
- 🌱 原版机制 (Vanilla Mechanism): 不同IP、UserAgent会触发OTP; 环境异常 (机房IP/Tampermonkey歧视(未验证)) 可触发严格速率限制和高难度校验 (已修复: 429/"过快"消息触发自动重试)
- ⏳ 时间消耗 (Time Consuming): 二次验证恐怖谷效应; 前端设计严重反人类 (点击"OTP"/"Microsoft Authenticator"->六位数字格子,无法直接粘贴(Bug)->未自动确认->成功确认时OTP码可能已经失效) ,边缘情况下花费时间超出1分钟,你的AMS签到二维码已失效,邮件内的活动名额已被抢光,TimetablePlus课程已满员 ......; 安装此模组,登录时间缩短到10秒内 (5s max 页面加载 + 5s max 滑块验证码),你省下的不仅是时间,还是你的数字人生的主导权--你的账号你做主,而不是"为你好"。
- 📋 复用Cookie与会话存储: 2.0版已重构网络请求部分--废弃
GM_xmlhttpRequest,改为Javascript 原生fetch逻辑(非跨站请求无需GM_xhr)--登录请求返回set-cookie直接保存到浏览器--消灭"登录过期"问题,减少环境异常和429重试,避免低效率滑块验证码
- 🛡️ 数字生命安全守护: 账号/密码错误时自动禁用登录功能--避免频繁重试,防止异常请求导致账户锁死--你等不起24小时
最近通知:
- Greasyfork (greasyfork.org) 从2025年开始在墙内无法访问 (参见 Greatfire Test),开启***、旧版本、装满扩展/插件的浏览器可访问性也较差 (例如: "Cloudflare Challenge"小方框无限循环),因此所有脚本将会同时提供 OpenUserJS 和 Github 平台的下载方式。
- 😟 部分子站点 已添加瑞数防火墙(WAF)以防止"网络攻击"
- ⚠ ((NOT HATE SPEECH)) 实际上也在阻止用户自定义和优化;后台一直在尝试启动 "debugger" 进程,额外加密和解密增加运行负担,使所有用户成为"正版受害者"
- 🎯 已知影响范围 (省略
.xjtlu.edu.cn):
- 📅 timetableplus
- 🧬 peselection (?)
- 💳 uim
- 旁路:
Click to expand:
- 🔌 使用浏览器插件: 不仅强制禁用"debugger",还可以去除循环运行代码,拒绝CPU杀手
- ✂️ Chromium
或Firefox 代码更改并重新编译/使用无"debugger"行为的浏览器: 从根源上拒绝"debugger"陷阱
- 🦊 使用Firefox开发人员工具,转到调试器面板,取消勾选"断点->在调试器语句上暂停": 简单拒绝"debugger"陷阱,无需重新编译
- 需要 firefox>=121.0 (Release Notes)
- 或者修改
about:config -> devtools.debugger.pause-on-debugger-statement=false
- 🔑 启动页面之前,打开开发人员工具,转到Sources面板,激活"Deactivate breakpoints": 可阻止本次运行中的强制"debugger",但可能因页面切换而失效;无法调试脚本(因为已经阻止所有断点)
- 🔄 更改User-Agent: 精准命中UA分流规则,完全停止WAF运行,性能提升100%
安装:
- 安装/升级此脚本
- 修改配置
- 如果没有开启OTP功能,开启,将secret保存到安全的地方,然后编辑脚本,设置"secret"值;如果已开启过,重新绑定,或者从你的OTP应用程序导出secret值
- 测试此脚本是否正常运行: 先退出登录,然后重启路由器或开关飞行模式以改变你的IP地址,清除*.xjtlu.edu.cn的Cookie,然后尝试登录。
- 假设你要访问 core.xjtlu.edu.cn/my/courses.php (HOST="core.xjtlu.edu.cn", PATH="/my/courses.php")
- 访问此页面,会跳转到 uim.xjtlu.edu.cn 进行登录验证,如果未使用 西浦自动登录 则手动输入用户名和密码
- 如果登录过程没有弹出二次验证页面,则此脚本的基本功能(登录和OTP)正常生效
- 如果能正常回到需登录的页面,而不是留在UIM或失去 "PATH" 信息,则"记住Refer"功能正常生效
修改配置:
- 如果首次安装,进入UIM页面(配置初始化)前,可直接在脚本
DEFAULT_CONFIG 处设置:
- enabled: 是否启用
- username: 用户名
- password: 密码
- secret: TOTP的secret
- forceOtpAfterSuccess: 强制发送OTP验证
- maxRetriesX: 登录步骤"X"的最大重试次数
- retryDelayMsX: 登录步骤"X"的重试间隔
- 已初始化或升级后,在Tampermonkey菜单更改配置
运作方式:
- 记住Refer信息
- 获取动态的公钥,用于加密发送的密码
- 发送数据包尝试直接登录
- 如果检测到需要二次验证,自动计算OTP码并发送数据包完成验证
- 如果找到Refer信息,登录完成时自动尝试跳回,避免停留在UIM界面
建议同时使用:
- 西浦自动登录: 可以在登录页面自动点击登录
已知问题:
- 如果请求速度太慢,会出现二次验证页面,而且刷新页面无法跳过
- 如果多次输入错误密码,你需要手动完成(数字|滑块)验证码
- 如果使用无痕模式,跳过OTP功能可能失效 (无法获取
用户名+密码临时登录状态,导致OTP登录时 "登录过期")
错误排查:
- 在登录前,按下F12打开开发者工具,进入 "控制台" 并启用 "保留日志",然后进行登录,查看控制台输出
- 如果出现访问请求错误,请检查用户名、密码、secret是否设置正确
- 如果仍无法使用,可以在 "反馈" 页面提交控制台输出
使用的库:
- JsEncrypt: 用于加密网络请求中的 "password" 字段
- TOTP Generator: 用于计算OTP值
更新日志
- 2.0:
- 📬 请求部分重构: 杜绝"面向
GM_xmlhttpRequest编程"
- 一种用了Tampermonkey就一定要使用特权函数的坏习惯(大部分AI就好这口)
- 只有跨域请求才会用此方法绕过限制
- 使用Javascript原生fetch代替
- 🔍 更多请求错误检查:
- 🧩 滑块验证码 (SSO10094): 提示并退出此脚本
- 🚫 用户名或密码错误 (SSO10002): 关闭此脚本功能,并立即退出,避免频繁重试,防止异常请求导致账户锁死--你等不起24小时
- 🌍 其他错误兜底 (非0): 提示其他错误
- ⚙️ 独立于脚本的配置: 更新脚本时避免重写登录信息,对于开发者降低泄露账号的风险
XJTLU自动登录系列:
- 西浦自动登录: 自动登录LearningMall Core、UIM、sso、mail、eBridge、IDP
- XJTLU box 自动登录: 自动登录box,并自动勾选
7天内保持登录
- XJTLU UIM 自动登录 (请求用户名+密码+OTP): UIM自动登录(自动完成二次验证)
- XJTLU xpcyjgy 自动登录: XJTLU(TC)线上自助服务自动登录
XJTLU体验提升 (QoL):
- XJTLU AMS Sign-in Code 优化
- XJTLU utalk 不要欢迎视频
- XJTLU utalk 调整 (专为低性能设备优化)