Repository navigation
Releases: rongyuio/aiotieba-go
Release list
v1.7.0
变更
- 最低 Go 版本由
1.26.0提升至1.27.3,CI 矩阵随之收敛为 1.27。
原因是crypto/x509的证书链验证缺陷(CVE-2026-111943 / GO-2026-6809):
Verify未拦截经由已撤销中间证书的链,Go 1.26.10 与 1.27.3 修复。
本库唯一执行证书校验的路径是 BLCP 的 TLS 连接(core/blcp.go的Connect),
其余 HTTP 与 WebSocket 通路均不校验证书,不额外扩大暴露面。
使用 Go 1.26 的调用方在默认的GOTOOLCHAIN=auto下会自动下载 1.27.3,无需改代码;
关闭自动工具链切换的构建需要手动升级工具链
完整变更清单:CHANGELOG.md
Full Changelog:v1.6.0...v1.7.0
v1.6.0
新增
-
新增
Client.Share,上报主题帖的分享行为,会驱动帖子的分享数。
该接口只上报行为、不返回分享链接,并且没有 WebSocket 通路,仅走 HTTP。参数为
Share(ctx, tid, fid, shareChannel):tid是被分享的主题帖,
fid是该帖所在吧的 fid(分享前会先调一次getShareInfo,它需要forum_id),
shareChannel对应抓包中的share_channel,实测服务端不校验该字段,默认传 0。实现要点:请求体
data.log_id承载的是被分享帖子的 tid,不是随机数 ——
服务端只校验这一个字段,填错则回errorno=0却不记账。详见docs/share.md第九节。
内部
- 新增
core.HttpCore.LastCall(),记录最近一次 app 调用(路径、服务端 logid、
耗时、错误码),供Share申报CommonReq的m_api/m_logid/m_cost/
m_result四元组。纯增量,不改变任何既有请求的行为。
完整变更清单:CHANGELOG.md
Full Changelog:v1.5.1...v1.6.0
v1.5.1
修复
- JSON 接口解析失败时,错误消息里带上响应体开头一段(折叠空白后截到 200 个字符)。
上游返回 HTML(风控页 / 网关页)而不是 JSON 时,原来只报
invalid character '<' looking for beginning of value,分不出是哪种情况,
拿到这条错误的人无从判断该重试还是该停手;现在能直接看出返回的是什么。
错误消息因此变长,且会包含响应体的开头——把错误原文写进自己日志的调用方请注意
完整变更清单:CHANGELOG.md
Full Changelog:v1.5.0...v1.5.1
v1.5.0
新增
GetComments新增GetCommentsArgs.Sort,与 Python 版get_comments的sort参数对齐。
服务端当前不采纳该参数——传时间顺序 / 时间倒序 / 热门序得到的返回顺序完全相同,HTTP 与
WebSocket 两条传输都如此。保留是为了与上游保持一致,服务端实现后即自动生效
变更
- 客户端版本号(
consts.LatestVersion)由22.6.5.1升至22.10.1.0,与上游 Python 版对齐。
所有使用该常量的接口都会以新版本号上报;get_comments也从旧版格式(12.64.1.1)切到该版本
修复
- 修复 WebSocket 传输从未生效的问题。此前握手委托给
gorilla/websocket,而它拒绝调用方设置
贴吧 IM 要求的非标准握手头Sec-WebSocket-Extensions: im_version=2.3,导致握手必然失败:
WithTryWebsocket(true)与InitWebsocket恒为失败,所有能走 WebSocket 的接口都静默回退到
HTTP。依赖 WebSocket 的SendMsg、SetMsgReaded、GetGroupMsg在此前版本中完全不可用,
现已恢复 - 握手与 WebSocket 帧层改为自行实现(与 Python 版的做法一致),不再依赖
github.com/gorilla/websocket
内部
- 重新生成受版本号影响的 15 个请求黄金向量(
api/*/testdata/req*.hex):先用 Python 绑定复现
旧向量、确认解码与重编码逐字节无损,再按新版本号重出,保证 Go 与 Python 的输出仍逐字节一致 AGENTS.md与.github/CONTRIBUTING.md补充仓库操作约定:已发布的 tag 不可移动(Go 模块代理与
校验和数据库均不可撤销)、master的 HEAD 停在最新 release tag 上、分支保护与合并方式的现状,
以及发版 PR 的命名与 tag 形态AGENTS.md新增「与上游同步」:写明移植基线、同步只跟上游对百度接口行为的适配(上游没有
CHANGELOG,改为按路径过滤git log)、基线是参考而非权威,以及不要引入上游 tag 的原因
(本库 module path 无/vN后缀,只能有 v0 / v1)CI.yml显式声明permissions: contents: read;.gitignore中的test规则锚定为根目录
/test,避免以后新建的test/目录被静默忽略
完整变更清单:CHANGELOG.md
Full Changelog:v1.4.1...v1.5.0
v1.4.1
内部
AGENTS.md新增「注释与中文文案」:记录中文文案的来源基线(迁移前 Python 源码
0847e2aa~1)、读取方式,以及api/*/_api.py中只有search_global有 docstring 等事实.github/CONTRIBUTING.md新增「注释规范」:说明「参数」段的书写形态,以及 Go 1.19 起
gofmt会把缩进注释行重排为 preformatted 代码块这一行为- 新增
SECURITY.md,安全漏洞改走私密漏洞报告而非公开 issue .github/ISSUE_TEMPLATE/补上默认标签与config.yml(关闭空白 issue,提供文档与安全报告入口),
并移除与已关闭的 Discussions 功能冲突的discussion.mddependabot.yml的检查频率由每天改为每周,减少更新 PR 的噪音
完整变更清单:CHANGELOG.md
Full Changelog:v1.4.0...v1.4.1
v1.4.0
变更
- 项目协议由 Unlicense(公有领域)改为 MIT。此前已发布的版本(含 v1.3.1)仍为 Unlicense,
已获得的授权不受影响;自本次改动起,分发或修改需要保留版权声明与许可声明 go.mod的go指令由1.27.1下调为1.26.0:Go 1.26 及以上都能引入本库,1.27.x 用户
不受影响。1.26.0 是依赖(golang.org/x/image、x/net、x/sys)声明的最低版本
内部
- 修正
go.mod中github.com/rs/zerolog与gopkg.in/natefinch/lumberjack.v2的// indirect
错标——两者都被logging包直接导入,此前因缺少一次go mod tidy而被记为间接依赖 - CI 增加
go mod tidy -diff守卫(CI.yml与release.yml),go.mod 不整洁会直接失败 - CI 由单版本改为 Go 1.26 / 1.27 双版本矩阵,并新增同名的
Test聚合任务以维持分支保护
所需的检查名(矩阵会让检查名变成Test (1.26)) PULL_REQUEST_TEMPLATE.md与CONTRIBUTING.md的检查清单补上go mod tidy
完整变更清单:CHANGELOG.md
Full Changelog:v1.3.1...v1.4.0
v1.3.1
修复
AddPost补上成功日志。Python 版add_post的装饰器标注了ok_log_level=logging.INFO,
Go 版此前只在失败时记录,成功时少输出一行
内部
- 新增
TestBoolResponseMethodsLogSuccess,断言返回exception.BoolResponse的公开方法
都会记录成功日志(唯一例外JoinChatroom,对应 Python 未标注ok_log_level的join_chatroom)
完整变更清单:CHANGELOG.md
Full Changelog:v1.3.0...v1.3.1
v1.3.0
破坏性变更
- 日志改用 zerolog:
logging.GetLogger()的返回值由*slog.Logger
变为*zerolog.Logger,logging.SetLevel的参数由slog.Level变为zerolog.Level。
原先通过log/slog接管日志的调用方需要改为传入 zerolog 记录器
新增
logging包新增PyRepr/PyArgs/PyErr/PyKw,把参数与异常渲染成 Python 风格文本
变更
- 日志消息体与 Python 版 aiotieba 对齐,形如
[sign_forum] Succeeded. args=('盗墓笔记',) kwargs={};
失败日志的正文改为异常本身,例如*exception.TiebaServerError{Code: 340011}渲染为(340011, '') - 客户端日志改为在方法内部记录:同一方法无论失败在哪一步,参数都恒为调用方实参;
50 个写操作(返回exception.BoolResponse的方法)新增成功日志 logging.EnableFileLog的写入端改为无颜色输出并交给 lumberjack 轮转(单文件 10MB、保留 5 份)
修复
SetThreadPrivacy此前只记录失败日志,现补齐成功日志,与SetThreadPrivate/SetThreadPublic行为一致
内部
- 依赖新增
github.com/rs/zerolog、gopkg.in/natefinch/lumberjack.v2,移除对log/slog的使用 - 新增
logging_args_test.go,解析client.go语法树校验日志参数一致性 - AGENTS.md / README.md / CONTRIBUTING.md 与实际实现对齐
- 新增
changelog.yml守住变更清单;Release 说明改为从CHANGELOG.md生成,
并附上变更清单入口与与上一版本的对比链接 - README 的 API 列表拆分为
docs/api.md,逐条列出接口与用途
完整变更清单:CHANGELOG.md
Full Changelog:v1.2.0...v1.3.0
v1.2.0
破坏性变更
GetThreads的第一个参数由fname string改为ref ForumRef,以对齐 Python 版的fname_or_fid;
调用方需改用ByFName("天堂鸡汤")或ByFID(123)传参
内部
- 依赖升级:
actions/checkout4 → 7、actions/setup-go5 → 7
完整变更清单:CHANGELOG.md
Full Changelog:v1.1.1...v1.2.0
v1.1.1
新增
- 新增 Release workflow,推送
v*tag 后自动校验版本号并创建 GitHub Release
变更
- CI 覆盖范围扩展到
master分支
修复
- 测试中 User-Agent 的期望值改为从
consts.Version推导,避免版本升级后失效
内部
- 补全各包的中文文档注释(顶层包与 client 门面、api 请求层、api 结果类型、core 与 helper、genproto 工具)
- 执行
go mod tidy整理依赖
完整变更清单:CHANGELOG.md
Full Changelog:v1.1.0...v1.1.1