news 2026/5/12 3:26:34

Python自动化工具实现B站直播挂机与粉丝牌点亮

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python自动化工具实现B站直播挂机与粉丝牌点亮

1. 项目概述:一个魂的自动化守护者

作为一个经常因为加班、开会而错过A-SOUL直播的“一个魂”,我深知那种“今天又没挂上亲密度”的懊恼。粉丝牌暗了,亲密度涨得慢,明明心里惦记着,但现实生活总有忙不完的事。手动去直播间挂着不现实,用手机挂后台又耗电又可能被系统杀掉。市面上的一些工具要么依赖复杂的环境,要么协议已经失效。于是,我决定自己动手,用最轻量、最稳定的方式,打造一个纯粹的“赛博守候者”——这就是asoul-support项目的由来。

简单说,这是一个完全用 Python 编写的自动化工具包。它的核心目标就两个:第一,在成员开播时,自动帮你完成“观看直播”这个动作,稳定获取每日的亲密度上限;第二,自动发送弹幕,点亮你的粉丝牌,保持牌子的“常亮”状态。除此之外,它还提供了视频点赞、动态点赞等锦上添花的功能。整个工具没有花哨的界面,就是一系列脚本,可以跑在你的电脑、服务器上,或者利用 GitHub Actions 免费云服务来执行,真正做到“设置一次,安心守护”。

这个工具特别适合那些和我一样,工作学习繁忙但依然想默默支持A-SOUL的粉丝。你不用懂复杂的编程,按照教程一步步来,半小时内就能搭建好自己的自动化应援体系。下面,我就把这套方案的里里外外、怎么搭建、怎么避坑,毫无保留地分享出来。

2. 核心原理与技术方案拆解

在动手之前,我们得先搞清楚B站亲密度和粉丝牌背后的运行机制,以及我们的工具是如何模拟真人操作的。知其然,更要知其所以然,这样出了问题你才知道从哪里排查。

2.1 B站亲密度与粉丝牌规则解析

B站的亲密度系统,本质上是平台为了鼓励用户深度参与互动而设计的。对于直播场景,主要的增长途径就是“观看直播”。根据我的实测和官方规则的梳理,其核心逻辑如下:

  • 观看直播亲密度:当你在一个直播间内持续观看,系统会大约每5分钟进行一次“心跳”检测。每次有效心跳可以为你增加6点对该主播的亲密度。这里有个每日上限机制:每个主播,每天通过观看直播获得的亲密度上限是30点。这意味着,你只需要挂机观看约25分钟(5次心跳),就能拿满当日的直播亲密度。超过这个时间,继续挂机也不会再增加亲密度。
  • 粉丝牌点亮机制:粉丝牌(粉丝勋章)点亮需要你在直播期间发送弹幕。通常,发送约10条弹幕即可点亮。点亮后的粉丝牌会有一个持续约3天的“可见”有效期。如果在有效期内没有新的互动,牌子就会“灰掉”(对你不可见,但亲密度等级和牌子本身还在)。我们的工具就是通过自动发送弹幕,来维持这个“常亮”状态。
  • 其他亲密度途径:除了观看直播,投币(1硬币=10亲密度)、分享直播等也能增加亲密度。但我们的工具默认不进行投币操作,因为这会消耗你账户里宝贵的硬币,必须由用户显式授权开启。

注意:这些规则是B站平台制定的,存在变更的可能。我们的工具实现是基于当前(项目v4版本发布时)有效的协议。如果未来B站调整规则,工具可能需要相应更新。

2.2 工具核心工作流程

我们的工具要自动化完成上述任务,需要解决几个关键问题:如何知道主播开播了?如何模拟“观看”行为?如何安全地发送弹幕?整个工作流可以拆解为以下几个核心环节:

  1. 开播检测:工具会定期(例如每30分钟)查询预置的A-SOUL成员直播间状态。这是通过调用B站开放的直播间状态查询API实现的。如果检测到主播在线,则触发后续流程。
  2. 身份认证:任何模拟用户的操作都需要身份凭证。这里我们使用从浏览器获取的B站登录Cookie(主要是SESSDATAbili_jct)。工具会安全地存储和使用这些信息来代表“你”进行操作。
  3. 心跳挂机:这是最核心的技术点。工具需要模拟移动端App在直播间内发送的“心跳”包,以告诉服务器“我还在看”。v4版本之前,很多工具依赖的x25Kn协议已经失效。本项目v4升级到了mobileHeartBeat协议,并实现了纯Python的请求签名算法,确保了稳定性。
  4. 弹幕发送:为了点亮粉丝牌,工具需要在开播期间,以你的身份向直播间发送指定数量的弹幕。这里会控制发送频率,避免被系统判定为刷屏或恶意行为。
  5. 任务调度:为了让以上流程自动、持续地运行,我们需要一个“调度器”。你可以选择在本地电脑或服务器上用cron(Linux/Mac)或“任务计划程序”(Windows)来定时执行脚本;也可以使用GitHub Actions,利用其免费的云服务器来定时运行,完全不需要自己的设备一直开机。

2.3 技术选型与v4版本升级考量

为什么选择纯Python方案?这是我在迭代了多个版本后的决定。

  • 零外部依赖:早期版本可能依赖Node.js环境或一些第三方系统服务(如pm2)。这增加了部署的复杂性,对于不熟悉前后端技术的用户来说是个门槛。v4版本彻底抛弃了这些,只使用Python 3.9+的标准库(如hashlib用于签名)和requests库(用于网络请求),真正做到开箱即用。
  • 协议对抗与维护:B站的反自动化策略在不断升级。mobileHeartBeat协议相比旧协议更稳定,但其请求签名算法更为复杂。v4版本用Python实现了完整的签名链(sha512 → sha3_512 → sha384 → sha3_384 → blake2b),这是工具能持续工作的关键。纯Python实现也使得代码更透明,更容易被社区审查和共同维护。
  • 跨平台与易集成:Python环境在Windows、macOS、Linux以及各种云服务器、NAS上都非常容易安装。这也使得工具能轻松地被集成到各种AI Agent框架(如OpenClaw、Hermes)中,实现“一句话部署”。
  • 安全优先:所有敏感信息(Cookie)都采用加密方式存储在本地的配置文件里,并且文件权限会被设置为仅当前用户可读。如果使用GitHub Actions,Cookie存储在GitHub的Secrets中,由平台提供加密管理,不会暴露在公开的代码里。

3. 从零开始:详细部署与配置指南

理论讲完了,我们进入实战环节。我会提供两种主流的部署方式:一种是使用AI Agent助手(最简单),另一种是纯命令行操作(最可控)。你可以根据自身情况选择。

3.1 方案一:使用AI Agent助手(推荐给新手)

如果你已经在使用OpenClaw、Hermes、QClaw这类AI Agent框架,那么部署过程会简单到不可思议。这相当于你有一个精通技术的助手帮你处理所有繁琐步骤。

操作流程:

  1. 启动你的AI助手,并确保它具备执行命令行和访问GitHub的能力。
  2. 直接发送安装指令:将下面这句话复制粘贴给你的助手。
    帮我安装这个项目并设置 A-SOUL 自动挂机:https://github.com/XiaoYiWeio/asoul-support
  3. 等待助手工作:一个合格的助手会依次执行以下操作:
    • 克隆项目代码到本地。
    • 检查并提示你安装必要的Python环境(如果尚未安装)。
    • 引导你获取B站Cookie。它可能会直接给你一个图文教程,教你如何在浏览器开发者工具中找到SESSDATAbili_jct
    • 将你提供的Cookie安全地保存到项目的配置文件中。
    • 询问你是否要设置定时任务。
  4. 设置定时任务:安装完成后,再给你的助手发送第二条指令:
    帮我设置一个定时任务,每 30 分钟检测 A-SOUL 成员是否在直播,在播就帮我挂机涨亲密度并点亮粉丝牌
    助手会根据你的操作系统,自动为你配置cron或“任务计划程序”,让脚本定时运行。

实操心得:这是目前最省心的方式。好的Agent助手甚至能处理运行中的错误,比如Cookie过期时提醒你更新。它的本质是把后面命令行方案的所有步骤,用自然语言交互的方式帮你自动化完成了。

3.2 方案二:纯命令行部署(适合喜欢动手的用户)

如果你没有使用Agent,或者希望更清晰地了解每一个步骤,那么请跟随这个手动教程。

3.2.1 环境准备与代码获取

首先,确保你的电脑或服务器上安装了Python 3.9或更高版本。打开终端(Windows用户建议使用PowerShell或WSL),执行以下命令检查:

python3 --version # 或 python --version

如果版本符合,接下来获取项目代码:

# 克隆项目到本地 git clone https://github.com/XiaoYiWeio/asoul-support.git # 进入项目目录 cd asoul-support
3.2.2 关键步骤:获取并配置B站Cookie

这是整个流程中最关键的一步,Cookie相当于你的“门禁卡”。

  1. 登录B站:用你的浏览器(以Chrome为例)打开 bilibili.com ,并确保已经登录了你想要挂机的账号。
  2. 打开开发者工具:在页面任意位置按F12键,打开开发者工具。
  3. 找到Cookie:切换到Application(应用程序)标签页。在左侧导航栏中找到Storage->Cookies->https://www.bilibili.com。然后在右侧的表格中,找到名为SESSDATAbili_jct的行,复制它们的Value值。
    • SESSDATA:是主要的登录会话凭证。
    • bili_jct:是用于防止跨站请求伪造(CSRF)的令牌。

重要警告:这两个字符串是高度敏感信息,任何人获得它们都能以你的身份操作B站账号(包括发弹幕、投币等)。切勿在任何公开场合(如聊天群、论坛)分享,也不要上传到任何公开的代码仓库(如GitHub公开项目)

  1. 使用脚本安全保存Cookie:在项目目录下,运行以下命令,将你复制的值替换到引号中。
python3 scripts/checkin.py --save-cookie --sessdata "你的SESSDATA值" --bili-jct "你的bili_jct值"

这个命令会做两件事:第一,验证你提供的Cookie是否有效;第二,将加密后的Cookie保存到项目根目录下一个名为.asoul_config的隐藏文件中,并严格设置文件权限,防止其他用户读取。

3.2.3 功能测试与手动运行

配置好Cookie后,强烈建议先手动运行一下各个功能,确保一切正常。

  • 测试开播检测与挂机

    # 检测当前谁在直播,如果在播则开始挂机25分钟(拿满今日亲密度) python3 scripts/heartbeat.py

    运行后,观察终端输出。它会列出所有预设成员的开播状态,并对正在直播的成员开始执行心跳任务。你会看到类似“正在向[嘉然]直播间发送心跳...”的日志,并显示亲密度增加。

  • 测试粉丝牌点亮

    # 为当前正在直播的成员发送弹幕,点亮粉丝牌 python3 scripts/checkin.py --live-only

    这个命令会为每个开播的成员发送约10条弹幕。请注意,为了避免被风控,脚本内置了延迟,执行可能需要一两分钟。

  • 测试视频点赞

    # 为A-SOUL成员最近7天内发布的视频点赞 python3 scripts/videos.py --days 7
3.2.4 配置自动化定时任务

手动测试无误后,我们需要让脚本自动定时执行。这里以Linux/macOS系统的cron为例。

  1. 打开当前用户的cron配置表:

    crontab -e
  2. 在打开的编辑器中,添加一行配置。请将/path/to/asoul-support替换为你项目实际的绝对路径。

    */30 * * * * cd /path/to/asoul-support && /usr/bin/python3 scripts/heartbeat.py --until-offline > /tmp/asoul_heartbeat.log 2>&1
    • */30 * * * *:表示每30分钟执行一次。
    • cd /path/to/asoul-support:确保在项目目录下执行命令。
    • --until-offline:参数表示只要检测到开播,就会一直挂机,直到主播下播为止。这比只挂25分钟更能应对长时间直播。
    • > /tmp/asoul_heartbeat.log 2>&1:将脚本的输出和错误信息重定向到一个日志文件中,方便日后查看。
  3. 保存并退出编辑器。cron服务会自动加载新的配置。

对于Windows用户,可以使用“任务计划程序”来达到类似效果。创建一个基本任务,触发器设置为“每天”,重复任务间隔为30分钟,持续24小时。操作为“启动程序”,程序或脚本填写python.exe的完整路径,参数填写scripts/heartbeat.py --until-offline,起始于填写你的asoul-support项目目录。

4. 高级使用与个性化配置

基础功能跑通后,你可以根据自己需求进行更精细化的控制。

4.1 成员列表管理

工具内置了A-SOUL五位成员的房间号和UID。如果你想支持其他主播,或者只想关注其中某几位,可以轻松修改。

配置文件位于config/members.json。你可以看到如下结构的JSON数据:

{ "嘉然": { "room_id": 22637261, "uid": 672328094 }, "贝拉": { "room_id": 22632424, "uid": 672353429 }, ... }
  • 添加新成员:只需按照相同格式,添加新的昵称、房间号和UID即可。房间号可以在主播直播间网址中找到(live.bilibili.com/后面的数字),UID是个人空间网址中的数字。
  • 指定运行成员:在运行脚本时,可以使用--members参数指定只对某些成员生效,用逗号分隔。
    # 只检测和挂机嘉然和贝拉的直播间 python3 scripts/heartbeat.py --members 嘉然,贝拉

4.2 使用GitHub Actions实现“云挂机”

如果你没有24小时开机的设备,又不想折腾服务器,那么GitHub Actions是绝佳的免费方案。它特别适合运行“视频/动态点赞”这类不需要实时响应、周期性执行的任务。

重要提示:由于GitHub Actions的运行环境是随用随建的虚拟机,且每次运行IP都可能不同,不适合用于需要维持长时间稳定会话的“直播心跳挂机”,容易被B站风控。但它非常适合做每日/每两天的点赞任务。

设置步骤:

  1. Fork项目:点击项目GitHub页面的右上角Fork按钮,将仓库复制到你自己的账号下。
  2. 配置Secrets:进入你Fork后的仓库,点击Settings->Secrets and variables->Actions。点击New repository secret
    • 创建名为SESSDATA的Secret,填入你的Cookie值。
    • 创建名为BILI_JCT的Secret,填入你的另一个Cookie值。
  3. 启用Actions:点击仓库顶部的Actions标签页,点击绿色按钮启用工作流。
  4. 手动触发测试:在Actions页面,找到名为A-SOUL 自动应援的工作流,点击Run workflow手动运行一次,查看是否成功。

配置成功后,工作流会每两天自动运行一次,为你点赞成员的新视频和动态。你可以在.github/workflows/daily.yml文件中调整执行频率和启用/禁用动态点赞功能。

4.3 脚本命令参数详解

了解各个脚本的参数可以让你更灵活地使用工具。

  • heartbeat.py(心跳挂机脚本)

    • --check-only:仅检测开播状态,不执行挂机。用于快速查看谁在直播。
    • --members NAME1,NAME2:指定成员,多个用逗号隔开。
    • --until-offline:持续挂机,直到目标主播下播。这是推荐用于定时任务的参数,能最大化覆盖直播时段。
    • --interval SECONDS:自定义心跳间隔(秒),默认300秒(5分钟)。非特殊情况不建议修改。
  • checkin.py(签到与粉丝牌脚本)

    • --live-only:仅对正在直播的成员发送弹幕点亮粉丝牌。
    • --coin谨慎使用。启用此参数会在点亮粉丝牌的同时,尝试为直播投币(消耗你的硬币)。默认关闭。
  • videos.py(视频操作脚本)

    • --days N:处理最近N天内发布的视频。
    • --coin:为视频投币。
    • --fav:收藏视频。
    • --like:点赞视频(默认行为,通常不需要指定)。

5. 常见问题排查与实战经验

即使按照教程一步步来,在实际运行中也可能遇到各种问题。这里我把自己踩过的坑和解决方案总结出来。

5.1 Cookie相关问题

这是最高频的问题源。

  • 症状:脚本运行后立即报错,提示“登录失败”、“Cookie无效”或“请先登录”。
  • 排查
    1. Cookie过期:B站Cookie的有效期大约为6个月。长时间未使用工具后再次运行,很可能Cookie已失效。解决方案:重新按照“3.2.2”节的步骤,获取新的Cookie并运行--save-cookie命令更新。
    2. Cookie获取错误:确保复制的是SESSDATAbili_jctValue,而不是Name或其他Cookie。确保浏览器登录的是正确的账号。
    3. Cookie包含引号或特殊字符:复制的Cookie值有时会包含首尾的引号",或者在终端粘贴时出现格式问题。在--save-cookie命令中填入值时,确保字符串本身没有多余的引号。最稳妥的方式是:先将值复制到文本编辑器(如记事本)中检查,再粘贴到终端。

5.2 运行环境与依赖问题

  • 症状python3: command not foundModuleNotFoundError: No module named 'requests'
  • 排查
    1. Python未安装或版本过低:确认已安装Python 3.9+。在终端输入python3 --version查看。Windows用户如果只安装了Python,命令可能是python
    2. 依赖库缺失:项目依赖requests库。在项目目录下运行pip3 install -r requirements.txt一键安装所有依赖。如果只有requests缺失,也可以单独安装:pip3 install requests

5.3 功能执行异常

  • 症状:脚本能运行,但日志显示“心跳失败”、“发送弹幕失败”或亲密度/粉丝牌没有变化。
  • 排查
    1. 网络问题:检查你的网络是否能正常访问B站。如果是服务器在国外,可能会遇到连接超时。
    2. B站风控:如果你的账号在短时间内有大量异常行为(如频繁登录、异地访问),可能会触发B站的风控策略,导致临时限制。解决方案:暂停使用工具24-48小时,用正常设备登录B站看一会儿视频或直播,解除风控状态。
    3. 协议更新:虽然概率较低,但如果B站更新了心跳或弹幕协议,工具可能会失效。关注项目GitHub仓库的Issue页面,看是否有其他用户反馈类似问题。开发者通常会及时跟进修复。
    4. 直播间状态判断:极少数情况下,B站API返回的开播状态可能有延迟或误差。可以手动打开直播间链接确认主播是否真的在播。

5.4 定时任务不执行

  • 症状:配置了cron或GitHub Actions,但到了时间没有运行。
  • 排查
    1. Cron路径问题:cron执行时的环境变量与你的终端环境不同。务必在命令中使用绝对路径(如/usr/bin/python3和项目完整路径)。使用which python3命令查看Python解释器的绝对路径。
    2. Cron日志:检查我们之前设置的日志文件/tmp/asoul_heartbeat.log,看是否有错误输出。
    3. GitHub Actions未触发:检查仓库的Actions页面,查看最近的工作流运行记录。如果是Fork的仓库,默认不会自动运行,你需要手动在Actions页面启用一次,或者修改工作流文件的触发条件。
    4. GitHub Secrets配置错误:确保Secrets的名字(SESSDATA,BILI_JCT)完全正确,且没有多余的空格。

5.5 安全与隐私提醒

  • 关于投币:脚本的投币功能(--coin参数)默认是关闭的。开启前请务必确认,这将会真实消耗你账户中的硬币。建议仅在特别日子或你想主动支持时手动开启一次,而不是放在定时任务中。
  • 关于账号安全:本项目所有代码开源,运行在你自己的环境中。Cookie本地加密存储,只要你不泄露配置文件,账号就是安全的。绝对不要将包含Cookie的配置文件上传到任何公开的Git仓库、网盘或发送给他人。
  • 理性使用:这个工具是为了弥补无法实时观看的遗憾,而不是替代真正的互动。B站直播的乐趣在于弹幕互动、观看表演本身。请在有空的时候,还是亲自去直播间支持你喜欢的成员,那份快乐是任何工具都无法替代的。

最后,如果这个项目帮到了你,欢迎到GitHub仓库点个Star,这能让更多有需要的“一个魂”发现它。如果在使用中遇到任何问题,或者有改进的想法,也欢迎在仓库中提交Issue。技术或许冰冷,但用它来守护的热爱,始终温暖。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/12 3:18:13

基于MCP与LLM的智能代码安全高亮编辑器:HaE_mcp实战指南

1. 项目概述:一个为安全工程师量身定制的“高亮编辑器”如果你是一名安全工程师、渗透测试人员,或者每天需要处理大量日志、代码和配置文件,那你一定对“信息过载”深有体会。面对一个动辄几百上千行的文本文件,如何快速定位到那些…

作者头像 李华
网站建设 2026/5/12 3:17:31

招聘信息聚合:自动采集各大招聘网站岗位,分析就业趋势

“想在BOSS直聘上看AI岗位薪资趋势,手动翻了200多页,重复信息一堆,眼睛都快瞎了……” “好不容易把数据采回来了,发现同一家公司同一岗位在智联和前程无忧上的薪资范围完全对不上,根本没法做横向对比……” “更崩溃…

作者头像 李华
网站建设 2026/5/12 3:13:33

ARMv8 A64指令集内存访问优化与LDRH/LDRSB指令详解

1. A64指令集与内存访问基础在ARMv8架构中,A64指令集作为64位执行状态的核心指令系统,其内存访问指令的设计直接影响处理器性能。与32位的A32指令集相比,A64在寄存器数量、地址空间和指令编码等方面都有显著改进。1.1 ARMv8内存访问特点ARM架…

作者头像 李华