wujinjun / XJTLU UIM 自动登录 (请求用户名+密码+OTP)

Published:

Version: 2.0+e37d648 updated

Summary: XJTLU UIM 自动登录增强版,自动完成辅助验证,无需手动输入验证码/OTP -- 2.0已部分重构,提升成功率和安全性

Groups:

License: MIT

Antifeature: unspecified

此脚本增强了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杀手
        • Anti Anti Debug: 禁止debugger循环、getter陷阱、 Console.clear() 垃圾邮件
        • Anti Debugger Pro: ✔️ 智能绕过 Debugger 陷阱 ✔️ 开发者工具强制激活系统 ✔️ 企业级安全防护 ✔️ 开发者友好体验 🔧 前沿技术架构
        • AntiDebug Breaker: ✔️反反调试 ✔️加解密分析 ✔️多种Hook脚本 ✔️Vue渗透测试
      • ✂️ 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%
        • 👉 获取详情: LYJW131/xjtlu-uim-login@main/README#结论
        • 💡 方式:
          • 🩹 UA2F/UA3F: 修改所有User-Agent到特定值,影响所有应用
          • 🧑‍💻 Devtools 设备模拟: 精准作用于单个页面,避免复用和泄露
          • 👨‍💼 MITMproxy: 适用于一个或多个站点,无需手动启用 Devtools

安装:

  1. 安装/升级此脚本
  2. 修改配置
  3. 如果没有开启OTP功能,开启,将secret保存到安全的地方,然后编辑脚本,设置"secret"值;如果已开启过,重新绑定,或者从你的OTP应用程序导出secret值
  4. 测试此脚本是否正常运行: 先退出登录,然后重启路由器或开关飞行模式以改变你的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菜单更改配置

运作方式:

  1. 记住Refer信息
  2. 获取动态的公钥,用于加密发送的密码
  3. 发送数据包尝试直接登录
  4. 如果检测到需要二次验证,自动计算OTP码并发送数据包完成验证
  5. 如果找到Refer信息,登录完成时自动尝试跳回,避免停留在UIM界面

建议同时使用:

  1. 西浦自动登录: 可以在登录页面自动点击登录

已知问题:

  1. 如果请求速度太慢,会出现二次验证页面,而且刷新页面无法跳过
  2. 如果多次输入错误密码,你需要手动完成(数字|滑块)验证码
  3. 如果使用无痕模式,跳过OTP功能可能失效 (无法获取用户名+密码临时登录状态,导致OTP登录时 "登录过期")

错误排查:

  1. 在登录前,按下F12打开开发者工具,进入 "控制台" 并启用 "保留日志",然后进行登录,查看控制台输出
  2. 如果出现访问请求错误,请检查用户名、密码、secret是否设置正确
  3. 如果仍无法使用,可以在 "反馈" 页面提交控制台输出

使用的库:

  1. JsEncrypt: 用于加密网络请求中的 "password" 字段
  2. TOTP Generator: 用于计算OTP值

更新日志

  • 2.0:
    • 📬 请求部分重构: 杜绝"面向GM_xmlhttpRequest编程"
      • 一种用了Tampermonkey就一定要使用特权函数的坏习惯(大部分AI就好这口)
      • 只有跨域请求才会用此方法绕过限制
      • 使用Javascript原生fetch代替
    • 🔍 更多请求错误检查:
      • 🧩 滑块验证码 (SSO10094): 提示并退出此脚本
      • 🚫 用户名或密码错误 (SSO10002): 关闭此脚本功能,并立即退出,避免频繁重试,防止异常请求导致账户锁死--你等不起24小时
      • 🌍 其他错误兜底 (非0): 提示其他错误
    • ⚙️ 独立于脚本的配置: 更新脚本时避免重写登录信息,对于开发者降低泄露账号的风险

XJTLU自动登录系列:

  1. 西浦自动登录: 自动登录LearningMall Core、UIM、sso、mail、eBridge、IDP
  2. XJTLU box 自动登录: 自动登录box,并自动勾选 7天内保持登录
  3. XJTLU UIM 自动登录 (请求用户名+密码+OTP): UIM自动登录(自动完成二次验证)
  4. XJTLU xpcyjgy 自动登录: XJTLU(TC)线上自助服务自动登录

XJTLU体验提升 (QoL):

  1. XJTLU AMS Sign-in Code 优化
  2. XJTLU utalk 不要欢迎视频
  3. XJTLU utalk 调整 (专为低性能设备优化)

Rating: 0