# 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项及旧版安装包。