🤖
AI审核中

抖音续火花助手:支持定时发送、网页管理和登录态更新

Java 6分钟 116浏览 0评论

每天都要打开抖音,找到固定的几位好友,再逐个发送消息续火花。偶尔忘记一次,积累了很久的聊天火花就可能中断。

为了把这件重复而机械的事情自动化,我开发了一个开源项目——抖音续火花助手(Douyin Spark Keeper)

项目地址:

https://gitee.com/zou-xiangfa/douyin-spark

它能做什么?

抖音续火花助手是一个可以部署在自己服务器上的自动化程序。配置好好友和消息后,程序会通过浏览器自动打开抖音聊天页面,依次给指定好友发送续火花消息。

项目提供了完整的网页管理后台,不需要每天登录服务器执行命令。

目前支持:

  • 网页维护续火花好友名单
  • 配置一条或多条消息模板
  • 每天定时自动发送
  • 干跑测试,不真实发送消息
  • 手动立即发送
  • 随时停止正在执行的任务
  • 查看登录态、执行结果和运行日志
  • 自动识别登录失效、发送失败和平台限流
  • 从Windows工具同步登录态及聊天联系人
  • 发送失败后进行有限次数的补发
  • 任务超时后自动回收Chromium

后台页面使用Vue 3和Element Plus,后端采用FastAPI,抖音页面操作由Playwright完成。

为什么不需要填写账号密码?

这个项目不会要求用户在后台填写抖音账号密码。

登录时,用户在自己的电脑上打开真实浏览器,使用抖音App扫码。登录成功后,工具只会导出Playwright所需的登录状态,再通过HTTPS上传到自己的服务器。

这样做有几个好处:

  1. 不需要把账号密码交给程序;
  2. 扫码过程在本机完成;
  3. 登录态过期后可以随时重新扫码更新;
  4. 登录状态、访问令牌和运行数据都不会提交到代码仓库。

需要注意的是,state.json 本质上仍属于敏感的账号会话凭证,不能发送给别人,也不能上传到公开网盘或代码仓库。

两种定时运行方式

项目支持应用内定时和服务器托管两种模式。

应用内定时

用户可以直接在网页后台设置每天的发送时间和随机延迟窗口。

到达设定时间后,程序会自动启动发送任务,无需额外配置系统定时器。

服务器托管模式

对于已经有统一任务调度方案的服务器,可以启用服务器托管模式,由外部systemd timer或其他调度器调用发送接口。

网页后台会明确显示:

  • 当前是否为服务器托管模式
  • 下一次自动发送时间
  • 任务预计完成时间
  • 最大发送超时时间

托管模式下,程序会强制关闭应用内部的每日定时,避免两个调度器同时运行而造成重复发送。

防止错发和任务失控

自动发送最怕两件事:发错人,以及任务卡住后无限运行。

项目针对这些情况增加了多层保护。

会话切换校验

点击好友后,程序会检查聊天窗口标题,确认当前会话确实属于目标好友,再继续发送。

搜索兜底

如果好友不在最近聊天列表,程序会尝试通过搜索功能找到对应用户并打开聊天。

发送结果校验

消息进入输入框、按下回车、输入框内容消失,这几个步骤全部完成后,才会将本次操作记录为成功。

限流熔断

如果页面出现“操作频繁”“安全验证”等提示,本轮任务会停止,避免连续操作触发更严格的风控。

超时和进程回收

发送任务运行在独立子进程中。无论正常完成、手动停止还是运行超时,程序都会尝试回收Playwright和Chromium进程,避免浏览器长期占用服务器资源。

登录态过期怎么办?

抖音登录态不是永久有效的,过期后需要重新扫码。

项目提供了Windows登录态更新工具,使用过程很简单:

  1. 双击运行更新工具;
  2. 输入后台地址和访问令牌;
  3. 在弹出的抖音页面扫码登录;
  4. 工具自动读取聊天联系人;
  5. 通过HTTPS上传登录态和联系人;
  6. 回到网页后台执行一次干跑测试。

正常上传成功后,本机不会保留state.json。如果上传失败留下了该文件,手动上传完成后应立即删除。

如何部署?

项目支持两种常见部署方式:

  • Debian、Ubuntu原生Python部署
  • CentOS 7 Docker部署

拉取代码:

git clone https://gitee.com/zou-xiangfa/douyin-spark.git
cd douyin-spark

Debian或Ubuntu可以执行:

sudo bash deploy/deploy.sh

CentOS 7 Docker环境可以执行:

sudo bash deploy/install-centos7-docker.sh

部署脚本会生成后台访问令牌。

部署完成后,打开管理页面并依次完成:

  1. 输入后台访问令牌;
  2. 上传登录态;
  3. 同步或填写好友名单;
  4. 配置续火花消息;
  5. 执行干跑测试;
  6. 确认无误后启用每日发送。

完整的环境变量、接口说明、Nginx配置和故障排查方法都已经写在项目README中。

适合哪些人?

这个项目更适合以下场景:

  • 只有一个自用抖音账号
  • 每天只给少量固定好友发送一次消息
  • 拥有自己的Linux服务器
  • 能接受登录态需要定期扫码更新
  • 希望通过网页查看执行状态和日志
  • 想学习FastAPI、Playwright和自动化任务调度

它不适合批量营销、多账号运营、群发广告或高频私信。

技术栈

项目主要使用:

  • Python
  • FastAPI
  • Playwright
  • APScheduler
  • Vue 3
  • Element Plus
  • Docker
  • systemd
  • Nginx

前端依赖已经保存在项目本地,后台页面不依赖公共CDN。即使服务器无法访问外部前端资源,管理页面也可以正常加载。

数据安全

项目已经默认忽略以下敏感内容:

  • .env
  • data/state.json
  • 好友和消息配置
  • 运行记录
  • 日志文件
  • Python虚拟环境
  • 本地缓存

公开仓库中不包含任何真实Cookie、登录态或后台访问令牌。

部署时仍建议:

  • 只通过HTTPS访问管理后台
  • 使用足够随机的访问令牌
  • 不要公开分享state.json
  • 不要在截图和日志中暴露Cookie
  • 定期备份配置,并限制数据目录权限

写在最后

这个项目最初只是为了解决“每天别忘了续火花”这样一个小问题,但在实际开发过程中,又陆续处理了登录态更新、好友错发、浏览器回收、任务超时、限流识别和服务器部署等问题。

如果你也有类似需求,或者正在学习Playwright自动化、FastAPI和服务器定时任务,可以到Gitee查看源码:

https://gitee.com/zou-xiangfa/douyin-spark

欢迎Star、Fork、提交Issue,也欢迎一起完善项目。

风险提示:自动化发送私信可能违反抖音平台规则,并可能导致验证码、限流或封号。项目仅供学习和个人低频自用,请勿用于骚扰、营销或其他违规用途。

0 条评论
如果你觉得文章对你有帮助,那就请作者喝杯咖啡吧☕
微信
支付宝
  0 条评论