Files
lrc-local/README.md
T

2.3 KiB

LRC Local

一个可直接在网页使用、也提供可选本机版的 QQ 音乐歌词搜索与导出工具,使用 Go 编写。

公开下载页:https://lrc.flechazo.xin

网页版与本机版

QQ 音乐接口拒绝第三方网页的跨域请求,并校验来源。浏览器页面无法直接调用,因此网页版由本站 Go 后端转发到源码中固定的搜索和歌词接口。请求正文、搜索词和歌词不写入数据库或访问日志。

公开页面同时保留本机单文件程序。如果不希望查询经过本站,可以下载本机版:程序只监听随机的 127.0.0.1 端口,浏览器 UI 和外部请求均由用户自己的电脑处理。

功能

  • 搜索歌曲并显示歌手、专辑和时长。
  • 导出原文 .lrc、翻译 .trans.lrc 或无时间轴 .txt
  • 不创建账号,不保存搜索历史;网页版仅在请求期间处理查询与歌词,本机版不向本站发送这些内容。

安全边界

  • 只监听操作系统分配的随机 IPv4 回环端口。
  • 启动使用 256 位随机令牌,之后使用 HttpOnlySameSite=Strict 会话 Cookie。
  • 校验精确的 HostOrigin,不设置 CORS,拒绝 DNS rebinding 和跨站 API 请求。
  • 只连接源码中固定的两个 HTTPS 接口;禁止重定向,不提供通用代理。
  • 限制请求体、上游响应体、并发、频率和超时。
  • 页面启用严格 CSP、禁止嵌入、禁止外部脚本和外部资源。
  • 所有公开构建均提供 SHA-256 校验值;Linux 和 macOS 使用归档保留可执行权限。
  • 公开模式按客户端和全局限频,限制并发、请求体与上游响应大小;Caddy 覆盖真实客户端地址头。

本地构建与测试

go test ./...
go vet ./...
go build -trimpath .

运行:

./lrc-local

部署

生产变更必须先提交并推送到自建 Gitea,再由生产机检出明确提交。docker compose up -d --build 会先执行测试,再从同一提交构建公开 Go Web 服务并交叉编译四个平台的本机程序。容器无特权、根文件系统只读;Caddy 只反向代理 127.0.0.1:8083

声明

本项目不是 QQ 音乐官方产品,QQ 音乐是其权利人的商标。使用者应遵守相关服务条款与著作权规则,只访问和使用自己有权获取的内容。