feat: add protected public web lyrics workflow

This commit is contained in:
Flechazo committed 2026-08-25 23:08:28 +08:00
1 parent e71e0c74dd
commit 54167c1b59
13 files changed
+425 -57

No files matched your search

+8 -5
View File
@@ -1,18 +1,20 @@
# LRC Local
一个本地优先的 QQ 音乐歌词搜索与导出工具,使用 Go 编写。
一个可直接在网页使用、也提供可选本机版的 QQ 音乐歌词搜索与导出工具,使用 Go 编写。
公开下载页:<https://lrc.flechazo.xin>
## 为什么不是纯网页
## 网页版与本机版
QQ 音乐接口拒绝第三方网页的跨域请求,并校验来源。浏览器页面无法安全地修改 `Origin` 和 `Referer`。LRC Local 因此以本机单文件程序运行:程序只监听随机的 `127.0.0.1` 端口,浏览器 UI 和外部请求均由用户自己的电脑处理;公开服务器只分发静态页面和二进制文件。
QQ 音乐接口拒绝第三方网页的跨域请求,并校验来源。浏览器页面无法直接调用,因此网页版由本站 Go 后端转发到源码中固定的搜索和歌词接口。请求正文、搜索词和歌词不写入数据库或访问日志。
公开页面同时保留本机单文件程序。如果不希望查询经过本站,可以下载本机版:程序只监听随机的 `127.0.0.1` 端口,浏览器 UI 和外部请求均由用户自己的电脑处理。
## 功能
- 搜索歌曲并显示歌手、专辑和时长。
- 导出原文 `.lrc`、翻译 `.trans.lrc` 或无时间轴 `.txt`。
- 不创建账号,不保存搜索历史,不向本站服务器上传任何内容。
- 不创建账号,不保存搜索历史;网页版仅在请求期间处理查询与歌词,本机版不向本站发送这些内容。
## 安全边界
@@ -23,6 +25,7 @@ QQ 音乐接口拒绝第三方网页的跨域请求,并校验来源。浏览
- 限制请求体、上游响应体、并发、频率和超时。
- 页面启用严格 CSP、禁止嵌入、禁止外部脚本和外部资源。
- 所有公开构建均提供 SHA-256 校验值;Linux 和 macOS 使用归档保留可执行权限。
- 公开模式按客户端和全局限频,限制并发、请求体与上游响应大小;Caddy 覆盖真实客户端地址头。
## 本地构建与测试
@@ -40,7 +43,7 @@ go build -trimpath .
## 部署
生产变更必须先提交并推送到自建 Gitea,再由生产机检出明确提交。`docker compose up -d --build` 会从同一提交交叉编译四个平台的程序,并以无特权、只读容器提供静态下载页。Caddy 只反向代理 `127.0.0.1:8083`。
生产变更必须先提交并推送到自建 Gitea,再由生产机检出明确提交。`docker compose up -d --build` 会先执行测试,再从同一提交构建公开 Go Web 服务并交叉编译四个平台的本机程序。容器无特权、根文件系统只读;Caddy 只反向代理 `127.0.0.1:8083`。
## 声明