零依赖B站自动化签到工具:Python脚本实现每日任务与直播签到
1. 项目概述一个零依赖的B站自动化签到工具如果你是一个B站深度用户每天打开App第一件事就是签到、看视频、投币只为那一点点经验值那么你大概率会和我一样觉得这个过程既琐碎又浪费时间。更别提那些关注了十几个、几十个主播每天还要去不同直播间发弹幕签到的“打卡党”了。手动操作不仅枯燥一旦忘记连续签到记录就断了那种感觉实在让人不爽。“XiaoYiWeio/bili-checkin”这个项目就是为了解决这个痛点而生的。它是一个纯粹的Python脚本工具核心目标就一个帮你全自动完成B站每日经验任务和直播间弹幕签到。最吸引我的一点是它宣称“零依赖”——这意味着你不需要安装任何第三方Python库只要有Python 3.9或更高版本的环境就能直接运行。这对于讨厌复杂环境配置、或者希望在服务器上稳定运行的用户来说简直是福音。这个工具最初是为OpenClaw一个AI智能体平台设计的技能插件但它完全独立可以通过命令行直接调用。无论是想每天稳定收获65点经验还是想给喜欢的主播直播间增加人气和亲密度你只需要一次简单的Cookie配置之后就可以完全交给它了。接下来我会详细拆解它的工作原理、配置方法、使用技巧并分享我在长期使用中积累的一些实战经验和避坑指南。2. 核心设计思路与架构解析2.1 为什么选择“零依赖”与Cookie方案在开始动手之前理解作者的设计选择至关重要。市面上有很多B站自动化工具有的用selenium模拟浏览器有的用requests加各种加密库。这个项目选择了最轻量、最稳定的路径。首先关于“零依赖”。这意味着整个项目只使用了Python的标准库比如urllib.request,json,argparse,os等。这样做的好处极其明显环境纯净你不需要担心版本冲突也不需要费心安装pip包。尤其是在Docker容器或一些受限的服务器环境里这种纯净性意味着极高的部署成功率。运行稳定第三方库可能会更新、弃用或者引入未知的Bug。只用标准库代码的行为在同一个Python主版本下几乎是一致的长期运行的稳定性更有保障。学习价值对于想学习如何用最基础的工具与网络API交互的开发者来说这是一个很好的范本。它展示了如何不借助高级框架完成登录态维持、请求发送和数据解析的全过程。其次关于Cookie方案。工具没有让你输入用户名密码而是让你从浏览器里复制SESSDATA和bili_jct这两个Cookie值。这是目前与B站API交互最安全、最可靠的方式之一。原理当你在浏览器登录B站后网站会下发这些Cookie到你的浏览器它们是你登录状态的“通行证”。脚本使用这些Cookie发起HTTP请求B站服务器就会认为这是“你本人在操作”。优势绕过复杂登录B站网页端的登录有滑块验证、短信验证等多种风控直接模拟非常困难且容易触发安全机制。使用现有Cookie完美避开了这个难题。效率高无需启动笨重的浏览器纯HTTP请求速度极快几秒钟就能完成所有任务。风险可控你不需要把密码交给第三方脚本。Cookie有一定的有效期通常一个月左右且可以在B站账号安全设置中随时清理。注意Cookie包含了你的登录会话权限务必像保管密码一样保管它。不要将包含Cookie的脚本或配置文件上传到公开的Git仓库。该项目脚本在保存Cookie时会将文件权限设置为600仅所有者可读写这是一个很好的安全实践。2.2 项目文件结构解读项目的结构非常清晰所有功能都集中在scripts/目录下的三个Python文件里各司其职。bili-checkin/ ├── SKILL.md # OpenClaw技能定义文件非核心 ├── persona.md # Agent交互指南非核心 ├── README.md # 项目说明文档 └── scripts/ # 核心脚本目录 ├── daily.py # 每日经验任务总控脚本 ├── checkin.py # 直播间弹幕签到脚本 └── lookup.py # UP主/直播间信息查询脚本daily.py这是主力脚本。它串联了登录、观看、分享、投币这一整套每日经验任务流程。我研究了一下它的代码发现它内部其实也是调用了checkin.py里的基础函数来完成“直播签到”这个子任务。逻辑很直白按顺序执行各个任务并打印出每个步骤的结果和最终的经验汇总。checkin.py这是与B站直播API直接交互的核心模块。它负责两件事一是向指定的直播间发送一条弹幕用于签到二是处理Cookie的保存与加载。所有网络请求的逻辑都封装在这里。lookup.py一个非常实用的辅助工具。B站的直播间IDroom_id和用户IDuid、直播间短链接、UP主名字常常让人混淆。这个脚本能帮你通过任意一种信息如主播名“老番茄”、UID、空间链接快速查找到对应的真实直播间ID为checkin.py提供准确的参数。这种模块化设计让代码易于维护和理解。如果你想自己定制功能比如修改签到弹幕的内容或者增加新的任务类型只需要在对应的文件里修改即可。3. 从零开始的详细配置与实操3.1 环境准备与项目获取首先你需要一个Python环境。打开终端Linux/macOS或命令提示符/PowerShellWindows输入python3 --version或python --version确认版本在3.9以上。如果没有请去Python官网下载安装。接下来获取代码。如果你在使用OpenClaw可以直接用其命令安装。但对于大多数独立使用的用户我推荐克隆仓库的方式这样你可以随时查看和修改源码。# 克隆项目到本地的一个目录比如用户主目录下的某个文件夹 git clone https://github.com/XiaoYiWeio/bili-checkin.git ~/my-bili-checkin # 进入项目目录 cd ~/my-bili-checkin3.2 关键一步获取并配置你的B站Cookie这是整个流程中最重要的一步也是唯一需要手动操作的一步。登录B站用你的Chrome、Edge或Firefox浏览器这里以Chrome为例正常访问bilibili.com并登录你的账号。打开开发者工具在B站首页任意位置按下键盘的F12键。或者右键页面选择“检查”。找到Cookie在开发者工具面板中切换到“Application”标签页中文可能是“应用程序”。在左侧侧边栏找到“Storage” - “Cookies” - “https://www.bilibili.com”。复制关键值在右侧会列出大量的Cookie条目。你需要找到并双击复制以下两个条目的“Value”SESSDATA这一串很长的加密字符串是你的核心会话凭证。bili_jct这是用于防止跨站请求伪造CSRF的令牌在投币等写操作时必须用到。实操心得Cookie列表可能很长你可以直接在表格上方的筛选框里输入“sessdata”或“jct”来快速定位。务必仔细核对不要复制到多余的空格或换行符。SESSDATA的值通常以一段百分号编码%开头。安全地保存Cookie拿到这两个字符串后我们通过项目提供的脚本将其加密保存到本地。在项目目录下运行python3 scripts/checkin.py --save-cookie --sessdata 你的SESSDATA字符串 --bili-jct 你的bili_jct字符串例如python3 scripts/checkin.py --save-cookie --sessdata a1b2c3d4e5f6%2F1234567890%3D%3D --bili-jct abcdef1234567890如果一切顺利命令行会提示“Cookie saved successfully.”。脚本会在当前用户的家目录下创建一个名为.bili_cookie的隐藏文件来存储这些信息。你可以用ls -la ~/.bili_cookie查看确认其权限是600即-rw-------这表示只有你能读写保证了基本的安全。3.3 基础功能使用与命令详解配置完成后你就可以开始享受自动化了。所有操作都在项目根目录下进行。1. 执行每日全部经验任务这是最常用的命令它会自动完成登录、看视频、分享视频、投5个币以及直播签到。python3 scripts/daily.py运行后你会看到类似下面的输出清晰地展示了每个任务的执行结果和获得的经验值[登录任务] 成功经验5 [观看任务] 已观看视频。经验5 [分享任务] 分享成功。经验5 [投币任务] 投币成功 (1/5)。硬币-1 [投币任务] 投币成功 (5/5)。硬币-5经验50 [直播签到] 进入直播间 22637261发送弹幕“签到”成功。经验5亲密度2 今日总计获得经验652. 执行任务但跳过投币如果你硬币比较紧缺不想每天自动消耗5个硬币可以使用--skip-coin参数。python3 scripts/daily.py --skip-coin这样你仍然可以获得登录5、观看5、分享5和直播签到5的共计20点经验而不会动用你的硬币储备。这对于小号或者想攒硬币抽奖的用户很实用。3. 单独进行直播间弹幕签到如果你只想给特定主播的直播间签到或者想发送自定义的弹幕内容就需要使用checkin.py脚本。为单个直播间签到# 使用直播间IDroom_id python3 scripts/checkin.py --room 22637261 # 发送自定义弹幕 python3 scripts/checkin.py --room 22637261 --msg “我来啦”默认的弹幕是“签到”你可以用--msg参数改成任何你想说的话需符合B站弹幕规范。批量为多个直播间签到python3 scripts/checkin.py --room 22637261,30858592,21672023只需用英文逗号分隔不同的room_id即可脚本会按顺序依次发送弹幕。4. 查询UP主的直播间ID当你只知道主播名字或空间页地址不知道room_id时lookup.py就派上用场了。# 通过主播名查询可能有多人同名返回第一个结果 python3 scripts/lookup.py “老番茄” # 通过UID查询唯一 python3 scripts/lookup.py “546195” # 通过空间链接查询 python3 scripts/lookup.py “https://space.bilibili.com/546195” # 通过直播间链接查询会直接解析出room_id python3 scripts/lookup.py “https://live.bilibili.com/21672023”执行后脚本会返回该UP主的UID、直播间ID、粉丝数等基本信息方便你后续使用。4. 进阶使用自动化部署与问题排查4.1 如何实现真正的“全自动”让脚本每天自动运行才是解放双手的终极目标。这里提供两种最主流的方法。方案一使用Linux系统的Cron定时任务推荐用于服务器/VPS如果你的脚本部署在Linux服务器上cron是最经典的选择。首先确定python3和脚本的绝对路径。在终端输入which python3和pwd在项目目录下来获取。编辑当前用户的cron表crontab -e在文件末尾添加一行例如设定每天上午9点30分执行30 9 * * * cd /home/yourname/my-bili-checkin /usr/bin/python3 scripts/daily.py /home/yourname/bili_checkin.log 2130 9 * * *表示每天9点30分。cd ...确保在正确的目录下执行。 ... 21将脚本的所有输出包括正常信息和错误信息追加到指定的日志文件中方便日后查看。方案二使用Windows系统的任务计划程序如果你希望在常开的Windows电脑上运行。搜索并打开“任务计划程序”。点击“创建基本任务”。按照向导设置名称、触发器例如“每天”、开始时间。在“操作”步骤选择“启动程序”。“程序或脚本”栏填写python.exe的完整路径如C:\Users\YourName\AppData\Local\Programs\Python\Python39\python.exe。“添加参数”栏填写daily.py脚本的完整路径如D:\my-bili-checkin\scripts\daily.py。“起始于”栏填写daily.py脚本所在的目录如D:\my-bili-checkin\scripts\。完成创建后可以在属性中设置更多选项比如电脑唤醒时运行等。4.2 常见问题与故障排除实录在实际使用中你可能会遇到下面这些问题。这里是我踩过坑后总结的排查思路。问题一运行脚本报错提示“Cookie not found”或“Invalid cookie”。可能原因1你还没有运行--save-cookie命令进行初始配置。排查运行python3 scripts/checkin.py --status检查Cookie状态。如果无效请严格按照3.2节步骤重新获取并保存Cookie。可能原因2Cookie已过期。B站的SESSDATA有效期通常是一个月左右。排查重新登录B站网页版重复3.2节的步骤获取新的Cookie并覆盖保存。可能原因3Cookie文件权限或路径问题多见于Linux。排查检查~/.bili_cookie文件是否存在以及权限是否为600。可以尝试删除该文件后重新保存。问题二投币任务失败提示“硬币不足”或“重复投币”。硬币不足脚本默认每天投5个币。如果你的硬币数量少于5个任务就会失败。可以使用--skip-coin参数跳过或者修改daily.py脚本中投币数量的逻辑默认为5。重复投币B站规则是每天最多只能给同一个视频投2个币。脚本内部已经处理了选择不同视频的逻辑。如果还报此错误可能是当天已经通过其他方式手动或脚本完成过投币任务了。脚本具有幂等性重复运行不会重复投币但会提示已投过。问题三直播弹幕签到失败提示“房间不存在”或“发送失败”。房间不存在确认你使用的room_id是否正确。最稳妥的方式是先用lookup.py脚本查询一次。发送失败/被拦截B站直播对弹幕有频率和内容限制。频率不要在极短时间内对大量不同直播间发送弹幕容易被风控。脚本自带的批量功能逗号分隔已有延迟处理但如果你自己写循环调用务必在每个请求间添加time.sleep(2)之类的间隔。内容避免发送完全无意义的乱码、广告、敏感词。使用默认的“签到”或一些简单的问候语最安全。问题四脚本执行无报错但经验值没有增加。可能原因B站的经验任务系统有延迟通常不是实时更新的。经验值会在任务完成后的一段时间内可能是几分钟到半小时增加到你的账户。排查登录B站App或网页端手动查看“任务中心”或“经验明细”。如果脚本输出显示所有任务都成功了那么请耐心等待一段时间再查看。也可以运行python3 scripts/daily.py --status查看今日各任务完成状态。问题五在OpenClaw中如何使用如果你恰好是OpenClaw用户那么集成起来更简单。将项目克隆到OpenClaw的技能目录后你只需要对AI智能体说“B站签到”、“帮我直播间签到 罗翔说刑法”、“B站全签”等指令它就会在后台自动调用对应的脚本。这相当于为自动化工具增加了一个自然语言的交互界面用起来更顺手。5. 安全须知与最佳实践建议最后结合我长期的自动化经验分享几个至关重要的安全和使用建议。Cookie即密码务必保密前面已经强调过SESSDATA和bili_jct能完全代表你的登录身份。绝对不要将它们分享给任何人绝对不要上传到GitHub等公开代码仓库。项目创建的~/.bili_cookie文件是隐藏的且权限受限这很好。如果你需要备份或迁移请妥善加密保管这个文件。定期检查与更新Cookie养成每月手动运行一次--save-cookie命令的习惯或者在脚本里增加一个检查Cookie有效性的逻辑比如尝试访问一个需要登录的API一旦失败就邮件通知你。避免因为Cookie过期导致签到中断一个月才发现。谨慎使用“硬币”功能自动投币会消耗你宝贵的硬币。对于新账号或硬币不多的账号建议长期使用--skip-coin参数。硬币可以用来给喜欢的视频充电其价值比换几点经验值更高。你可以根据自己的硬币储备在daily.py中修改投币数量比如从5个改为1个。尊重平台规则避免滥用虽然这个工具很方便但请合理使用。不要设置每分钟执行一次的极端定时任务不要用它来刷屏、发广告或进行任何干扰其他用户的行为。自动化工具应该用来提升个人体验而不是破坏社区环境。过度频繁的请求可能导致你的IP或账号被B站临时限制。作为学习范本如果你对Python网络编程感兴趣这个项目的代码非常值得一读。它展示了如何用标准库进行HTTP请求、处理JSON数据、解析命令行参数、安全地处理文件权限等。你可以基于它进行扩展比如增加银瓜子兑换、漫画签到等功能或者学习其代码结构编写其他网站的自动化脚本。这个“零依赖”的B站签到工具以其极简的设计和可靠的实现解决了一个非常具体的日常需求。它不追求大而全而是把“自动完成每日任务”这件事做到了简单、稳定、易用。无论是对于想要解放双手的普通用户还是对于希望学习纯净Python网络编程的开发者它都是一个很好的起点。