天方云签(TFcloud)是一个基于 PHP 8.4、Webman、React 和 MySQL 的多平台自动签到系统,提供统一的账号管理、任务调度、执行记录和管理员后台。
本仓库仅适合个人自用、软件开发学习、合法授权测试和社区协作。所有配额、平台插件、任务规则和站点设置均由部署者在本地配置。
Important
使用本项目前,请务必阅读本文档中的《免责声明与使用边界》。
本项目仅用于合法授权的个人自动化、软件开发学习和安全研究。严禁将本项目用于代签到、代打卡、伪造出勤或履约记录、绕过平台安全验证、未经授权操作他人账号,以及其他违反法律法规或第三方平台规则的活动。
使用者应确保其对所配置的账号、凭据和数据拥有合法使用权限,并自行承担部署、配置、运行及使用本项目产生的责任。项目开源不代表作者授权使用任何第三方账号、接口、数据、商标或服务。
- 多平台插件签到:贴吧、哔哩哔哩、网易云音乐、爱奇艺、小米运动、天翼云盘、哔咔漫画等插件统一管理。
- 任务调度与失败重试:支持定时签到、任务执行明细、状态筛选和已执行任务的完整重试。
- 贴吧补签机制:仅对第三方平台请求失败的任务进行后续补签;已成功签到的任务当天不会重复执行,已关闭贴吧不会造成无限重试。
- B 站粉丝牌挂机:独立事件循环 Worker 以有限并发推进直播心跳,支持离线直播间过滤、异常会话恢复和任务状态自动收尾。
- 账号与登录:支持用户名、邮箱登录,邮箱验证码登录,以及 QQ 快捷登录中转配置。
- 安全凭据管理:平台 Cookie、Token 等敏感凭据使用 Sodium 加密保存,安装时生成应用密钥并写入持久化配置。
- 安装向导:检测 PHP、扩展、数据库和目录权限,并根据当前 CPU 与内存推荐 Webman 和任务进程数。
- 管理员后台:用户、平台账号、任务、日志、邮件、版本信息、QQ 快捷登录和站点设置统一管理。
- 版本检查:后台与远程版本信息对比,只显示当前是否为最新版本,不强制自动覆盖安装。
- Docker 部署:支持 MySQL、后端、前端一键编排;Composer 生产依赖在后端首次启动时自动安装。
backend/ PHP 8.4 + Webman API、插件和任务调度
frontend/ React 19 + Vite 用户端和管理员后台
scripts/docker-install.sh 本地 Docker 安装脚本
scripts/install-global.sh 海外版远程一键安装脚本
scripts/install-cn.sh 国内版 ghp.ci 镜像一键安装脚本
scripts/install.sh 一键安装核心脚本
docker-compose.yml 前端、后端、MySQL 编排文件
首次使用建议先阅读对应的安装方式。生产环境请使用 HTTPS,并妥善保存数据库、应用密钥和运行时数据。
要求服务器已安装 Docker 和 Docker Compose v2。在仓库根目录执行:
./scripts/docker-install.sh \
--site-url https://example.com \
--admin-username admin脚本会自动生成数据库密码和应用密钥,构建前后端镜像,启动 MySQL,首次启动后端时自动安装 Composer 生产依赖,并创建管理员账号。未填写 --password 时会在终端安全地提示输入密码。
只启动服务、稍后从安装页面配置:
./scripts/docker-install.sh --no-install启动后访问:
http://服务器IP:8080/install
海外服务器直接使用 GitHub:
curl -fsSL https://raw.githubusercontent.com/longfie/TFcloud/main/scripts/install-global.sh | \
bash -s -- --site-url https://改成你的域名 --admin-username admin国内服务器使用 ghp.ci 镜像:
curl -fsSL https://ghp.ci/https://raw.githubusercontent.com/longfie/TFcloud/main/scripts/install-cn.sh | \
bash -s -- --site-url https://改成你的域名 --admin-username admin国内镜像不可用时,可切换到海外版脚本。两种脚本都会把依赖安装、项目文件和 Docker 数据保存在服务器本地。
远程脚本默认安装到 /www/docker/tfcloud,支持自定义目录和端口:
curl -fsSL https://raw.githubusercontent.com/longfie/TFcloud/main/scripts/install.sh | \
bash -s -- --install-dir /opt/tfcloud --port 8080 --site-url https://example.com首次启动必须能够访问 Composer 和 GitHub 依赖源。依赖安装在 tf_vendor volume 中,后续重启不会重复下载。
- 在宝塔安装 Docker 管理器。
- 打开宝塔终端执行上面的远程一键安装命令,或将仓库上传到
/www/docker/tfcloud。 - 在 Docker → 容器编排 中选择该目录的
docker-compose.yml,构建并启动。 - 在 网站 → 反向代理 中将域名代理到
http://127.0.0.1:8080。 - 申请 SSL 后访问
https://你的域名/install完成安装。
宝塔官方参考:Docker 应用部署 · 容器编排
Docker 运行数据保存在以下 volumes 中:
tf_mysql MySQL 数据
tf_runtime 安装锁、环境配置和运行日志
tf_vendor Composer 生产依赖
不要删除 tf_mysql 和 tf_runtime。删除 tf_vendor 后可以在下一次启动时自动重新安装依赖。
- PHP 8.4,扩展:
curl、mbstring、openssl、pdo_mysql、pcntl、sodium - Composer 2
- MySQL 8.0 或更高版本
- Node.js 20+、pnpm 10(仅构建前端需要)
- Nginx 或 Apache(生产环境推荐 Nginx)
git clone https://github.com/longfie/TFcloud.git
cd TFcloudmysql -u root -p -e \
"CREATE DATABASE tf_sign CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u root -p tf_sign < backend/database/schema.sqlcd backend
cp .env.example .env
composer install --no-dev --optimize-autoloaderphp start.php start后端默认监听 127.0.0.1:8787。生产环境请使用 Supervisor、systemd 或宝塔进程守护保持运行。
将 frontend/dist 配置为 Nginx 网站根目录,并把以下路径反向代理到 http://127.0.0.1:8787:
/api/
/health/
/.well-known/
或者自行构建
cd ../frontend
pnpm install --frozen-lockfile
pnpm build可参考仓库中的 frontend/nginx.conf。手动部署时,将其中的 backend:8787 改为 127.0.0.1:8787。
浏览器访问:
https://你的域名/install
按照向导检测环境、填写数据库和创建管理员。安装完成后重启 Webman 进程,使应用密钥和后台任务配置生效。
后续可自行修改env配置更换服务器连接以及设置签到进程数、加密密钥等
编辑 .env,至少填写数据库连接和以下密钥:
DB_HOST=127.0.0.1
DB_PORT=3306
DB_NAME=tf_sign
DB_USER=tf_sign
DB_PASSWORD=你的数据库密码
APP_KEY=base64:随机生成的32字节密钥
CREDENTIAL_FINGERPRINT_KEY=另一组独立随机密钥
CORS_ALLOWED_ORIGINS=https://你的域名
SESSION_SECURE=true可以使用 PHP 生成随机值:
php -r "echo 'base64:'.base64_encode(random_bytes(32)), PHP_EOL;"
php -r "echo bin2hex(random_bytes(32)), PHP_EOL;"也可以通过命令行创建管理员:
ADMIN_PASSWORD='至少8位的强密码' \
php backend/scripts/create-admin.php --username=admin- 不要提交
.env、.env.docker、Cookie、Token、私钥、数据库备份和运行日志。 - 生产环境必须启用 HTTPS,并将
SESSION_SECURE=true。 - 不要把 MySQL
3306和 Webman8787暴露到公网,只开放网站反向代理端口。 - 安装锁会防止已安装站点被覆盖安装;如需重装,请先备份,并由管理员明确删除运行时安装锁。
- 修改
composer.lock后,Docker 启动脚本会检测哈希并重新安装生产依赖。 - 贴吧补签只针对第三方请求失败,不会因为关闭的贴吧无限执行。
- 不要在日志、截图、Issue 或交流群中公开 Cookie、Token、密码、验证码或数据库连接信息。
- 部署公开服务前,应配置访问控制、日志脱敏、数据备份、异常监控和安全更新机制。
- 不建议将本项目用于学校考勤、企业考勤、课程签到、考试验证等要求本人真实参与的场景。
- 在启用任何平台插件前,应先确认对应平台是否允许自动化访问。
管理员可以在后台“QQ 快捷登录”中一键申请 AppID 和 AppKey,也可以手动填写已有中转凭据。流程包括:
- 提交站点名称、当前域名、回调地址和持久化安装 UUID。
- 将挑战内容发布到
/.well-known/qq-login-verification.txt。 - 完成域名验证后保存加密凭据。
- 登录时使用随机
state,并校验issued_at、HMAC-SHA256 签名和subject。
请确保站点的回调域名、HTTPS 和反向代理配置正确。
使用 QQ 快捷登录及其他第三方登录功能时,部署者应自行确认相关中转服务、接口调用和用户信息处理活动符合适用法律法规及第三方平台规则。
# 后端
cd backend
php tests/run.php
# 前端
cd ../frontend
pnpm typecheck
pnpm build作者:龙辉
QQ:1790716272 · 交流群:701550577
官网:www.yunsign.net · 博客:blog.eirds.cn
如果遇到问题,请先查看安装日志、健康检查和任务执行详情,再提交 Issue。提交问题时请隐藏密码、Cookie、Token、邮箱验证码和数据库信息。
安全问题、凭据泄露或未公开漏洞不应直接发布在公开 Issue 中。请先通过项目公布的联系方式联系维护者,并在报告中删除真实账号信息和敏感凭据。
请在下载、安装、部署、修改、传播或使用本项目之前认真阅读本节内容。
使用本项目即表明使用者已经理解本项目的适用范围、潜在风险及自身应承担的合规责任。如不同意以下内容,请停止使用并删除本项目及其相关副本。
本项目仅供以下场景使用:
- 使用者对本人合法持有的账号进行个人自动化管理;
- 软件开发、自动化技术学习和非破坏性安全研究;
- 在获得账号所有者、系统所有者及相关平台明确授权的情况下进行测试;
- 其他符合所在地法律法规及第三方平台规则的合法用途。
本项目不应用于规避法律义务、平台管理规则、身份核验要求或真实履约要求。
严禁使用本项目实施、协助实施或促成下列行为:
- 未经授权登录、控制、测试或操作他人的账号、设备、系统或数据;
- 窃取、收集、买卖、共享、冒用或非法使用他人的 Cookie、Token、密码、验证码及其他身份凭据;
- 代替他人完成考勤签到、课程签到、会议签到、健康打卡、工作打卡、考试验证或其他需要本人真实参与的活动;
- 伪造出勤、学习、履约、活跃度、积分、资格、奖励领取或其他平台记录;
- 绕过验证码、访问控制、设备验证、频率限制、风控措施或其他安全机制;
- 对第三方平台发起恶意、高频、批量或超出合理范围的自动化请求;
- 干扰第三方服务正常运行,或对平台、用户及其他主体造成数据、业务、声誉或经济损害;
- 从事诈骗、账号交易、虚假流量、批量养号、非法获取活动权益、黑灰产经营或其他违法违规活动;
- 以本项目名义开展未经授权的商业运营、托管服务、代操作服务或账号集中管理服务;
- 通过修改、删除、隐藏本项目提示信息的方式误导用户或掩盖实际用途;
- 其他违反法律法规、监管要求、社会公共利益、公序良俗或第三方服务条款的行为。
使用者只能配置其本人合法持有,或者已经取得账号所有者明确授权的账号和凭据。
使用者应自行阅读并遵守相关第三方平台的用户协议、隐私政策、开发者规则、接口规范、自动化访问限制及其他适用规则。
即使某项功能在技术上可以运行,也不代表该功能已经获得第三方平台许可,或符合其服务条款。
如果第三方平台禁止自动化访问、限制非官方客户端、要求本人操作或者禁止共享账号,使用者应立即停止使用对应插件或功能。
第三方平台对账号采取验证、限流、限制功能、封禁、数据清除或其他处置措施的,使用者应自行承担相关后果。
本项目中出现的第三方平台名称、产品名称、接口名称、商标、Logo 和相关资料,仅用于说明兼容性或技术适配关系。
除非另有明确书面说明,本项目及其作者与相关第三方平台之间不存在隶属、授权、认证、代理、合作、赞助或背书关系。
第三方平台的商标、Logo、接口、数据、内容及其他知识产权归其各自权利人所有。
本项目的开源许可证仅适用于本项目原创代码,不授予使用者任何第三方接口、内容、商标、数据或服务的使用权。
使用者因调用、抓取、存储、展示、传播或修改第三方内容而产生的知识产权争议,由使用者自行处理并承担责任。
Cookie、Token、账号密码、邮箱、登录记录、设备信息及任务记录可能包含个人信息、敏感个人信息或重要身份凭据。
项目部署者应根据实际功能和数据流,依法履行相应的数据保护义务,包括但不限于:
- 仅处理实现功能所必需的数据;
- 在取得合法授权后处理相关账号和个人信息;
- 向实际用户清楚说明数据收集、存储、使用、传输和删除方式;
- 对敏感凭据采取加密、访问控制、日志脱敏和备份保护措施;
- 不得将用户凭据提交至公开仓库、Issue、日志、截图或第三方服务;
- 不得超出用户授权范围使用或共享账号数据;
- 在停止提供服务后及时删除不再需要的数据;
- 为用户提供必要的数据查询、更正、删除和账号注销渠道;
- 发生泄露、丢失、篡改或未授权访问时及时采取补救措施。
自行部署本项目的个人或组织,应根据其实际运营方式判断自身是否属于相关法律法规规定的个人信息处理者、网络运营者或服务提供者,并独立承担相应的告知、授权、安全保护、用户权利响应和合规责任。
项目作者仅提供开源软件代码,不当然参与各独立部署实例的数据处理活动,也无法控制或保证第三方部署者的数据处理行为。
本项目默认面向个人自用场景设计。
如使用者将本项目部署为面向不特定用户的公开服务、多用户服务、收费服务、托管服务或商业服务,使用者应自行评估并完成适用的法律、行政、网络安全、数据保护、消费者权益、税务和平台规则合规要求。
公开运营者可能还需要根据实际情况提供或完善:
- 用户协议;
- 隐私政策;
- 儿童或未成年人信息保护规则;
- 账号注销和数据删除机制;
- 投诉、举报和争议处理渠道;
- 数据保存期限说明;
- 安全事件应急响应机制;
- 服务中断和数据丢失处理方案;
- 必要的备案、许可或主体信息公示。
README 中的免责声明不能替代公开运营者应当履行的法定义务。
本项目按“现状”和“现有可用状态”提供。
在适用法律允许的范围内,作者及贡献者不对下列事项作出明示或默示保证:
- 软件不存在缺陷、漏洞、兼容性问题或配置错误;
- 所有插件能够长期、稳定或持续运行;
- 第三方接口、网页结构、验证机制和服务规则不会发生变化;
- 自动化任务能够按时执行或取得预期结果;
- 使用本项目不会触发第三方平台的风控、限制、验证、封禁或数据清理;
- 软件适用于任何特定用途、生产环境或商业场景;
- 使用者保存的数据、凭据和运行记录不会发生丢失、泄露或损坏;
- 项目能够满足特定安全、性能、可用性或合规标准;
- 项目不存在来自第三方依赖、社区插件或部署环境的安全风险。
使用者应在部署前审查代码,在隔离环境中完成测试,并自行建立备份、监控、访问控制、更新管理、异常处置和灾难恢复机制。
使用者应对其下载、部署、修改、传播、运营和使用本项目的行为承担责任,并自行处理由此产生的账号限制、服务中断、数据损失、第三方索赔、行政调查及其他争议。
在适用法律允许的最大范围内,作者及贡献者不对因使用或无法使用本项目而产生的间接损失、预期利益损失、业务中断、数据丢失、账号处罚、第三方争议或其他后果承担责任。
但是,本免责声明不排除或限制依法不得排除或限制的责任,也不适用于作者或相关责任主体因故意、重大过失或其他依法必须承担责任的情形。
任何人不得以本免责声明为依据,为违法违规行为、侵权行为或未经授权的操作主张免责。
项目作者在收到有效的权利通知、安全报告或合规风险报告后,有权采取删除代码、关闭功能、暂停发布、终止维护或发布风险提示等措施。
社区贡献的插件、脚本、配置及文档,由其贡献者对合法性、原创性、真实性和授权情况负责。
贡献者不得提交以下内容:
- 窃取、泄露或绕过身份凭据的代码;
- 用于规避安全验证或平台风控的功能;
- 未经授权复制的代码、接口文档、密钥或数据;
- 明显用于代签到、虚假履约、批量养号或其他违规活动的功能;
- 带有恶意代码、后门、数据外传或隐蔽远程控制功能的内容;
- 侵犯第三方著作权、商标权、专利权、商业秘密或其他合法权益的内容;
- 隐瞒网络请求、远程依赖或数据收集行为的功能。
项目维护者有权在不事先通知的情况下拒绝、删除或停止维护存在法律、安全、知识产权或平台合规风险的内容。
代码被合并、发布或长期存在于仓库中,不代表维护者对其合法性、安全性或持续可用性作出保证。
如发现本项目存在安全漏洞、凭据泄露、侵犯知识产权、违反平台规则或其他合规问题,请通过 GitHub Issue 或项目公布的联系方式与维护者联系。
涉及以下内容时,不应直接提交公开 Issue:
- 真实密码、Cookie、Token 或验证码;
- 可识别个人身份的信息;
- 未公开的高危漏洞细节;
- 可直接利用的攻击代码;
- 数据库备份、私钥或服务器配置;
- 尚未修复的远程代码执行、身份认证绕过或敏感数据泄露问题。
报告中请提供必要的复现步骤和影响范围,并对账号、密钥、域名、IP 地址和个人信息进行脱敏。
维护者在核实后可以采取删除内容、关闭功能、暂停发布、修复漏洞、发布安全公告或停止维护相关插件等措施。
法律法规、监管政策和第三方平台规则可能发生变化。
使用者应定期检查本项目及相关服务的合规要求,并根据变化及时停止、调整或删除相关功能。
某项功能在过去可以使用,不代表其现在或未来仍然合法、合规或被第三方平台允许。
本免责声明仅用于说明项目的使用边界和风险分配,不构成针对任何个人、组织或具体使用场景的正式法律意见。
用于公开运营、商业服务、多用户托管、大规模处理账号数据或涉及学校、企业、政府机构等场景前,建议由具有相应执业资格的专业人士进行专项合规审查。
TFcloud 原创业务代码采用 GNU Affero General Public License v3.0 or later(AGPL-3.0-or-later),详见 LICENSE。
选择 AGPL 是为了让基于本项目修改并通过网络提供服务的版本,也能向用户提供对应源代码。
AGPL 不禁止商业使用。它要求发布修改版或通过网络提供修改后服务时,按照协议履行相应的源代码提供义务。
如果需要禁止商业使用,应采用独立的商业授权或 source-available 协议,而不能将其称为标准开源协议。
以下内容不因本项目协议改变:
backend/、frontend/中已有的上游版权声明和许可证继续有效。- Composer、npm/pnpm 依赖及平台插件遵循各自的原始许可证。
- 天方云签、第三方平台名称、Logo、接口和商标归各自权利人所有。
- 本项目许可证不授予使用者任何第三方账号、接口、数据、内容、商标或服务的使用权。
- 使用、部署和传播本项目时,应遵守所在地法律法规、第三方平台服务条款以及本 README 中的《免责声明与使用边界》。
- 开源许可证不授权任何违法、侵权、未经授权或违反第三方平台规则的使用行为。
Copyright © 2016–2026 龙辉 / 天方云签。