news 2026/9/16 18:57:57

BiliBiliToolPro 腾讯云云函数(SCF)部署完整指南:Actions 自动部署与 ZIP 手动部署

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BiliBiliToolPro 腾讯云云函数(SCF)部署完整指南:Actions 自动部署与 ZIP 手动部署

BiliBiliToolPro 腾讯云云函数(SCF)部署完整指南:Actions 自动部署与 ZIP 手动部署

【免费下载链接】BiliBiliToolProB 站(bilibili)自动任务工具,支持docker、青龙、k8s等多种部署方式。全面拥抱AI。敏感肌也能用。项目地址: https://gitcode.com/GitHub_Trending/bi/BiliBiliToolPro

本指南以 tencentScf/README.md 为主体,系统讲解 BiliBiliToolPro 部署到腾讯云云函数(Serverless Cloud Function,SCF)的两种完整方案:GitHub Actions 自动部署(推荐,可自动定期更新代码)与上传 ZIP 包手动部署(直观,但版本固定)。读者按本文操作后,可独立完成云函数创建、环境变量与触发器配置、函数测试,并掌握通过附加消息传递任务编码(如DailyLiveLottery)实现定时自动化运行的完整能力。

1. 部署前的准备:注册账号与免费额度

腾讯云云函数(SCF)是腾讯云提供的 Serverless 计算服务,使用前需先注册腾讯云账号。注册成功后,需要激活云函数 SCF 功能。由于腾讯云会赠送免费额度,正常使用是免费的(SCF 官方文档对产品本身的介绍可参考腾讯云官网的产品文档,本仓库只关注其在 BiliBiliToolPro 上的实际落地)。

2. 两种部署方式总览

方式适用场景代码更新方式复杂度
方式一:Actions 自动部署(推荐)希望代码始终跟随仓库最新版本定时自动部署,配合仓库自动同步配置一次 Secrets,后续基本免维护
方式二:上传 ZIP 包部署追求简单直观、上手快手动上传固定版本,更新需重新上传全程控制台点击操作

以下两种方式任选一个适合自己需求的即可。

3. 方式一:Actions 自动部署(推荐)

该方式通过 GitHub Actions 工作流调用腾讯云 Serverless Framework(scf组件)完成部署,可以实现自动定期部署,保证云函数中的代码始终是最新版本。仓库中已内置完整的工作流文件 .github/workflows/auto-deploy-tencent-scf.yml 与发布脚本 tencentScf/publish.sh。

3.1 Fork 仓库到自己的 GitHub

点击本仓库右上角的Fork按钮,复刻本项目到自己的 GitHub 仓库。后续所有 Actions、Secrets 配置都在你自己的 fork 仓库中进行。

3.2 到腾讯云获取密钥

手动部署时,可以通过扫描二维码来进行授权,但为了避免人工重复授权,这里采用密钥授权的方式,步骤如下:

  1. 登录腾讯云后,进入腾讯云密钥管理页面(云 API 密钥管理,cam/capi)。
  2. 如果提示创建子账号,可以先拒绝,简单起见直接使用主账号创建即可。
  3. 点击新建密钥按钮,创建一个密钥,复制并保存SecretIdSecretKey两项内容,后续配置 Secrets 时会用到。

在 Actions 工作流中,这两个密钥通过环境变量TENCENT_SECRET_IDTENCENT_SECRET_KEY注入到 Serverless Framework,从而决定部署到哪个腾讯云账户的 SCF 下(见 .github/workflows/auto-deploy-tencent-scf.yml)。

3.3 通过 Secrets 添加配置

进入自己 fork 的仓库,点击Settings → Secrets → New repository secret,依次添加以下 Secrets 作为配置。

3.3.1 密钥相关配置

这两个配置决定了会部署到哪个腾讯云账户的 SCF 下面:

配置名称NameValue
IdTENCENT_SECRET_ID刚才在官网获取到的 SecretId
KeyTENCENT_SECRET_KEY刚才在官网获取到的 SecretKey
3.3.2 云函数配置(serverless.yml)

Actions 使用Serverless Framework来部署,通过serverless.yml来配置函数信息(如函数应用名称、区域、环境变量和触发器等),仓库中提供了完整的默认配置示例 tencentScf/serverless.yml。

配置步骤如下:

  1. 拷贝或下载 tencentScf/serverless.yml 文件内容到本地文件,开始编辑内容。其中主要需要改的是最下方的环境变量——这些环境变量在部署后会添加到云函数中(即云函数控制台看到的环境变量集合),它们将作为应用配置传入 bilibili_tool 程序。

例如,需要增加一个环境变量时,在最下方添加内容应该是(注意缩进问题):

environment: variables: # 根据自己的需要修改 Ray_BiliBiliCookies__1: 123 # cookie,必填 Ray_Security__RandomSleepMaxMin: 20 Ray_Security__IntervalSecondsBetweenRequestApi: 20

cookie 是必填项。其他应用配置也可以通过添加相应的环境变量实现,建议自己添加 UA、推送等配置。更多配置项请参考 docs/configuration.md(仅用于参考环境变量,请只关注表格中的"环境变量"一项,并参照上面的方式添加)。

关于环境变量命名,docs/configuration.md 中有明确说明:Console 项目(青龙)的环境变量需要添加Ray_前缀,比如原始配置 Key 为BiliBiliCookies__1,在 Console 中则为Ray_BiliBiliCookies__1;配置项之间用双下划线__分隔层级,数字编号表示数组下标,从而支持Ray_BiliBiliCookies__1Ray_BiliBiliCookies__2多账号配置。配置文件、环境变量、命令行三种配置源的优先级由低到高依次是:json 文件 < 环境变量 < 命令行。

如果你不熟悉 yml 或者部署时遇到格式问题,建议花几分钟阅读 YAML 入门教程。

常犯错误: Q:我在 Github Secrets 中添加了NUMBEROFCOINS,值为 2,为啥投币数量还是 5? A:所有自定义配置项(环境变量)不能通过 Github Secrets 添加,只能写在serverless.yml中。你应该参考上面的例子添加环境变量Ray_DailyTaskConfig__NumberOfCoins

  1. 拷贝修改后的内容,将其整个添加到 Secrets 中:
配置名称NameValue
serverless.yml内容TENCENT_SERVERLESS_YML刚才拷贝的整个文件内容

工作流在部署时会读取该 Secret:如果未配置TENCENT_SERVERLESS_YML,则使用仓库内默认的 serverless.yml;配置了则用 Secret 中的内容覆盖(见 .github/workflows/auto-deploy-tencent-scf.yml)。

仓库默认的 tencentScf/serverless.yml 是一个可直接参考的完整示例,它声明了如下关键信息:

  • 函数基础信息:函数名${name}_scf(即bilibili_tool_scf)、运行环境CustomRuntime、执行方法index.main_handler、默认区域广州(region: ap-guangzhou)、内存 128MB;
  • 超时与执行initTimeout: 30(初始化超时 30 秒)、timeout: 86400(执行超时 86400 秒)、asyncRunEnable: true(异步执行)、traceEnable: true(状态追踪);
  • 触发器events段):默认内置了 4 个定时触发器,分别是每日任务(DailyTask,每天 12:30)、天选抽奖(LiveLotteryTask,每 4 小时)、自动取关(UnfollowBatchedTask,每周一零点)、大会员积分(VipBigPointTask,每天 01:07);
  • 环境变量environment.variables段):Ray_BiliBiliCookies__1: 123,即 cookie 占位配置,需要替换成你自己的值。

注意:仓库默认 serverless.yml 中的 Cron 表达式是七段式(秒 分 时 日 月 星期 年),如"0 30 12 * * * *";而在云函数控制台手动创建触发器时,常见写法是五段式(分 时 日 月 星期),如10 15 * * *表示每天 15 点 10 分运行。两种写法分别对应文件内配置与控制台配置,不要混淆。

3.3.3 自动定时更新部署配置

添加如下配置即可开启自动定时部署:

配置名称NameValue
定时自动部署IS_AUTO_DEPLOY_TENCENT_SCFtrue

工作流默认按cron: "0 2 * * 1,3,5"(每周一、三、五)定时触发,并通过pre-check任务判断开关状态,只有开启时才真正执行部署(见 .github/workflows/auto-deploy-tencent-scf.yml)。

注意:自动部署只是定时将你自己仓库的代码部署到云函数,想要自动更新到上游作者的最新代码,还需要开启仓库的自动同步——详见常见问题文档中《我 Fork 之后如何同步原作者的更新内容?》章节(见 docs/questions.md)。

3.4 手动执行 Actions

在自己仓库页面,依次点击Actions → auto-deploy-tencent-scf → Run workflow,即可手动触发部署工作流。

3.5 测试云函数

如果部署成功,登录自己的腾讯云函数控制台,就可以看到对应的函数应用了。请参考下文《测试》章节进行手动测试函数运行。

4. 方式二:上传 ZIP 包部署

该方式比较简单直观,但代码上传的是固定版本,想更新的话需要再次手动上传。

4.1 下载压缩包到本地

从项目 Release 页面选择最新版本的tencent-scf.zip,下载到本地。仓库中的 tencentScf/publish.sh 展示了该压缩包的生产方式:

dotnet publish --configuration Release --runtime linux-x64 --self-contained true -p:PublishTrimmed=true -o ../../tencentScf/bin/publish cp -r ./bootstrap ./index.sh ./bin/publish/ chmod 755 index.sh bootstrap zip -r -q ../tencent-scf.zip ./*

即先以linux-x64自包含模式发布 .NET 程序(启用裁剪PublishTrimmed),再把云函数运行所需的bootstrap启动脚本与index.sh函数入口一并打包进 zip。Windows 用户可参考同目录下的 tencentScf/publish.bat。

4.2 云函数控制台新增函数服务

  1. 进入腾讯云云函数控制台,单击左侧导航栏【函数服务】,进入"函数服务"页面。顶部地域选择一个靠近自己位置的区域,点击新建按钮。

  1. 填写基本信息:
    • 创建方式:选择自定义创建
    • 函数名称:bilibili_tool
    • 地域:刚才已经选过了
    • 运行环境:CustomRuntime
    • 函数代码提交方式:本地上传zip包
    • 执行方法:index.main_handler
    • 函数代码:点击后选择之前本地下载好的 zip 包

  1. 点击展开高级配置,添加配置:
    • 初始化超时时间:30
    • 执行超时时间:86400(会警告超范围,先不用管,下面开启异步之后就好了)
    • 环境变量(这里先加 2 个配置就行了,后续可以再添加其他的):
      • cookie 配置:key 为Ray_BiliBiliCookies__1,value 为之前浏览器抓取到的 cookie 字符串
      • 随机睡眠配置:key 为Ray_Security__RandomSleepMaxMin,value 为0(为了方便测试先关掉,后面测好之后再删掉该配置,或者自己改一个 value 值)
      • 指定任务:key 为Ray_RunTasks,value 为Test(供首次部署时测试使用,后续将通过触发器传递功能任务)

  1. 继续下滚,找到执行配置模块:
    • 异步执行:勾选启用
    • 状态追踪:勾选启用

  1. 点击完成按钮,创建函数。触发器配置先不用管,可以等测试完成后再添加。

4.3 手动运行测试

参考下文《测试》章节进行手动测试。

4.4 配置触发器,设定运行时间和频率

  1. 点击左侧【触发管理】导航,点击"创建触发器"按钮。

  1. 填写触发器信息:
    • 触发方式:定时触发
    • 定时任务名称:DailyTask
    • 触发周期:自定义触发周期
    • Cron 表达式:自己根据需求指定,10 15 * * *表示每天 15 点 10 分运行(五段式:分 时 日 月 星期)
    • 附加信息:
    • 信息内容:Daily
    • 立即启用:勾选启用

填完后点击提交按钮提交,即可完成。

这里的附加信息将作为 runTasks(欲运行的任务编码)配置,通过命令行传入程序。想多个任务共用一个触发器的话,可以使用&号拼接任务编码填入附加信息,如Daily&LiveLottery

等到触发器设定的时间,对应的触发器就会去运行应用,自动完成任务。

4.5 触发消息是如何传给程序的:index.sh 原理

从源码结构看,ZIP 包中携带的 tencentScf/index.sh 是函数真正的入口,其核心逻辑为:

EVENT_DATA=$1 runTasks="" if [[ $EVENT_DATA == *Message* ]] then eventMsg=$(echo $EVENT_DATA | grep -Po 'Message[" :]+\K[^"]+') echo "触发事件中的附加消息(任务编码)为:$eventMsg" runTasks="--runTasks=$eventMsg" fi ./Ray.BiliBiliTool.Console $runTasks

也就是说,触发器传递的"附加信息"(如DailyLiveLottery)会出现在触发事件的Message字段中,index.sh将其解析后拼装为--runTasks=xxx命令行参数传给 Ray.BiliBiliTool.Console 运行;如果触发事件中没有附加消息,则不带参数运行(此时会执行默认任务集)。而 tencentScf/bootstrap 则是 CustomRuntime 环境要求的启动引导脚本,它根据_HANDLER环境变量加载对应的函数文件(index.sh),完成初始化就绪信号上报后,进入长轮询循环持续监听并处理事件调用。

5. 测试云函数

  1. 成功部署好函数后,会看到函数管理页面,点击顶部函数代码Tab 页,准备测试。

  1. 下拉找到测试按钮,点击运行测试,页面下方会同步显示日志。如果运行正常,则表示部署已成功。

  1. 返回函数配置页面,将之前配置的环境变量Ray_RunTasks删除,后续函数将自动执行触发器中配置的功能任务。

注意:ZIP 部署方式在控制台手动添加的环境变量(如Ray_RunTasks: Test)只用于首次部署验证;正式使用后应删除该变量,改用触发器"附加信息"来指定任务,二者都是通过--runTasks参数生效的(前者是环境变量注入,后者由index.sh从触发事件解析)。

6. 关于腾讯云日志与费用

腾讯云云函数默认将运行日志写入 CLS 日志服务,需要关注其计费情况:

  1. 腾讯云关于 CLS 日志的免费额度说明如下(官方文档截图,每月提供一定免费额度)。

  1. 实测每日运行函数日志的花费大约如下图所示(量级极小,通常在免费额度覆盖范围内)。

  1. 如果需要完全白嫖(即不需要任何费用),可以切至腾讯云日志服务页。
  2. 点击侧边栏的日志主题,并找到云函数所在地域。
  3. 点击删除,删除该日志主题后,云函数因为无法定位到日志集,就不会产生额外费用。

7. 小结:两种部署方式的决策建议

  • 追求"一次配置、长期免维护、代码跟随上游更新",首选方式一 Actions 自动部署:只需 Fork 仓库、配置 4 个 Secrets(TENCENT_SECRET_IDTENCENT_SECRET_KEYTENCENT_SERVERLESS_YMLIS_AUTO_DEPLOY_TENCENT_SCF),工作流会自动完成发布与scf deploy(见 .github/workflows/auto-deploy-tencent-scf.yml);
  • 追求"上手快、逻辑直观",选择方式二 ZIP 包部署:从 Release 下载tencent-scf.zip,按控制台向导逐步创建函数并配置触发器即可,缺点是需要手动更新版本。

无论哪种方式,部署完成后,BiliBiliToolPro 都会按触发器设定的时间自动运行,通过index.sh解析附加消息中的任务编码,完成每日任务、天选抽奖、自动取关、大会员积分等自动化操作。

【免费下载链接】BiliBiliToolProB 站(bilibili)自动任务工具,支持docker、青龙、k8s等多种部署方式。全面拥抱AI。敏感肌也能用。项目地址: https://gitcode.com/GitHub_Trending/bi/BiliBiliToolPro

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

会话卡死?TaoToken 把 Claude Code 的 Base URL 指向 /api 再试 Managed Agents

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/16 18:56:38

配置Hadoop集群文件详细步骤(CentOS Stream 10)

集群化环境前置准备&#xff08;三台机器都进行&#xff09;部署步骤1&#xff1a;配置多台虚拟机步骤2&#xff1a;准备主机名映射步骤3&#xff1a;配置ssh免密登录集群化环境配置步骤4&#xff1a;安装jdk环境&#xff08;这里使用的是 JDK8&#xff09;&#xff08;只在nod…

作者头像 李华
网站建设 2026/9/16 18:56:29

机器人控制器为何必须采用PCIe架构:实时性与确定性数据流的底层支撑

1. 为什么机器人控制器正在集体转向PCIe架构——不是跟风&#xff0c;是刚需倒逼的底层重构你拆开一台2023年后出厂的工业协作机器人控制器&#xff0c;大概率会看到一块标着“PCIe x4”的板卡插在主板上&#xff1b;再打开一台AGV调度主控箱&#xff0c;里面那块负责激光SLAM建…

作者头像 李华
网站建设 2026/9/16 18:55:24

MATLAB粒子群优化PSO实战:从向量化实现到工程部署

简介&#xff1a;本资源是一份面向MATLAB初学者与电力系统优化方向学习者的粒子群优化&#xff08;PSO&#xff09;算法入门实践包&#xff0c;聚焦于最优潮流&#xff08;OPF&#xff09;等典型工程优化问题的求解。压缩包共3个文件&#xff0c;含2个核心MATLAB源码文件&#…

作者头像 李华
网站建设 2026/9/16 18:54:58

ACTF新生赛Include 1题解:PHP文件包含与php://filter绕过

做CTF新生赛Web题有个规律&#xff0c;题目名字往往直白得可怕。ACTF2020新生赛里这道[ACTF2020 新生赛]Include 1&#xff0c;光看题名就能猜到考点是文件包含&#xff0c;而且专门标注了“新生赛”&#xff0c;难度就是给刚入门的选手入门用的。我当时第一次刷这道题的时候&a…

作者头像 李华