Files
TPSchedule/docs/tpschedule-0.7.4-validation.md

30 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TPSchedule 0.7.4+22:重复登录继续链接与课表导入修复
2026-10-15,F:/program/app。用户0.7.3日志显示完整页恢复成功,学校页面已能显示;重复登录继续链接被HTTP导航策略拦截,恢复后状态读取出现FormatException,手动导入也提示“页面证据无效”。本记录不含原始HTML、原始URL查询或账号信息。
## 原因与修改
重复登录链接:原策略只将学校身份认证HTTP入口转为HTTPS,教务系统自身的HTTP继续链接被阻止。现对准确eams.uestc.edu.cn、默认HTTP端口、/eams系统路径的主页面导航升级到HTTPS,保留查询与片段;仍不直接加载HTTP,不接管POST提交,其他域名、用户信息和自定义端口不升级。
导入失败:原始学校依赖包含History API网址更新。原生模拟器复现:经现有loadDataWithBaseURL恢复页面,再调用history.replaceState,JavaScript的location.href已变为课表网址,而WebView.getUrl仍保留恢复时的地址。原实现把后者当作抓取脚本的确切地址,因而拒绝页面证据。
读取前现从实际文档取得location.href,先要求原生地址与文档地址均为准确学校HTTPS数据路径且同源,再将这一次实际地址与抓取结果严格比较。读取期间再次换网址仍拒绝;跨域、认证页、不安全地址、页面代次失效、体积上限和原数据保留规则不变。考试目标比较使用已验证的文档网址;实际文档与原生历史地址不一致时不重复执行完整页恢复。日志只记录history_state固定类别,不保存原始URL。
## 验证
先观察到重复登录链接未升级的回归失败;实现升级后通过。针对可见课表但原生历史地址未更新的会话测试,旧实现报“页面证据无效”,修复后识别18条测试课程并生成导入草稿。新测试继续确认跨域/HTTP/认证地址及抓取期间URL变化均拒绝。纯解码器保持精确地址校验。
完整Flutter套件271项通过,4个实际JavaScript脚本检查通过,静态检查无问题。Android JVM16项通过,API36实际WebView夹具检查通过,包含恢复后的中文/脚本/CSS/来源/会话/文档保护及History API使原生地址滞后的边界复现。模拟器Chromium133.0.6943.137,用户日志为156.0.8078.4。
独立复审未发现阻塞项:精确学校来源及抓取时网址校验保留,原完整页恢复原生文档保护不变。审查指出Android POST表单不会进入该主导航回调,升级范围符合点击继续链接的处理需求。
## 复测
覆盖安装0.7.4,校园网内登录本科系统。如出现重复登录提示,点击继续,确认进入完整学校页面;在网页打开课表、选择学期,再点“导入当前课表”应进入预览。线上账号与用户手机Chromium156仍需用户复测,模拟器133的复现和离线课程回归不能代替这一确认。
## 安装包
发布包com.tpschedule.app,versionName=0.7.4、versionCode=22,60155727字节。TPSchedule-0.7.4.apk与TPSchedule.apk一致,SHA256为5B529C611E625614905E972B857F31A3520F958188E5292FF1918C4903BFD3D8。与0.7.3签名证书逐字节一致,原签名文件保留。
源码包由最终提交生成,不包含原始学生HTML、私钥、运行缓存或登记材料;交付打包时重核0.5.4登记冻结18项及旧版安装包。