fix: 修复登录假成功,Cookie 改为每会话注入

根因:linux.do 登录表单启用 hCaptcha 人机验证,自动化浏览器无法通过,
旧自动登录永远不可能成功;而抓取的 _forum_session 是匿名会话本就存在的
cookie,误报「自动登录成功」,导致受限主题一直 404。

修复:
- 移除无效的账号密码自动登录(_auto_login_and_capture)
- Cookie 改为每个 StealthySession 会话都重新注入(旧代码跨请求丢失)
- 登录校验端点改用 /notifications.json(匿名 403 / 登录 200),
  弃用对匿名也返回 404 的 /session/current_user.json
- Cookie 配置支持多格式:完整 Cookie 头、单 name=value、裸值(向后兼容)

linuxdo_username/password 保留仅为兼容,不再生效。
This commit is contained in:
RainySY
2026-06-16 23:52:59 +08:00
parent d27c006217
commit c67b7779ab
5 changed files with 140 additions and 132 deletions

View File

@@ -3,6 +3,19 @@
本项目所有显著变更都记录在此文件中。格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/)
版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
## [1.2.1] - 2026-06-16
### 修复
- **修复登录始终“假成功”问题**linux.do 登录表单启用了 hCaptcha 人机验证,自动化浏览器无法通过,原自动登录永远不可能成功;而旧代码抓取的是匿名会话本就存在的 `_forum_session` cookie 并误报“自动登录成功”,导致受限主题一直返回 404。现在改为明确提示自动登录不可用降级为匿名访问
- **修复 Cookie 注入跨请求丢失**StealthySession 每次请求都是新建的浏览器上下文,旧代码首次校验后缓存了登录态却不再向新会话注入 Cookie导致只有插件加载后第一条消息能登录、之后全部匿名。现在改为【每个会话都重新注入】配置的 Cookie
- **更换可靠的登录校验端点**`/session/current_user.json` 对匿名用户也返回 404无法区分登录与否改用 `/notifications.json`(匿名 403、登录 200
- **Cookie 配置支持多格式**`linuxdo_session_cookie` 现支持完整 Cookie 头(`_t=xxx; _forum_session=yyy`)、单个 `name=value`(已知 cookie 名)、以及裸值(向后兼容当作 `_forum_session`。Discourse 会话值是 base64 常带 `=` 填充,解析器已正确区分裸值与 name=value
### 变更
- 移除无效的账号密码自动登录代码(`_auto_login_and_capture``linuxdo_username` / `linuxdo_password` 配置项保留仅为兼容,不再生效
- 推荐改用长效的 `_t` cookie约 1 年有效期)而非短效 `_forum_session`(约 2 周)
- 配置项 hint、README 登录说明同步更新
## [1.2.0] - 2026-06-16
### 新增