夜雨聆风学习资料网

ARTICLE · 1041670

WorkBuddy每天自动签到领积分(电脑无需开机登陆·小白完整版)

WorkBuddy每天自动签到领积分(电脑无需开机登陆·小白完整版)

编者案:个人从网上查找学习实践,很多方式可以实现每天自动签到领积分,对比运用WorkBuddy签到助手、设置每天自动化以及云服务器,通过各种方式实践对比,只有云服务器真正能够实现不用打开电脑、全程自动化实现每天自动签到领积分!本人已亲自验证有效!!!

一、方案核心优势

为什么这套方案最适合你?抛弃了GitHub Actions海外IP风控、抛弃了本地脚本依赖电脑、抛弃了付费服务器,保留了原版PHP脚本最稳的先查后签、状态判断、错误分级核心能力,是目前 免费、稳定、低风控、零运维 的最优解。

  • 全程不用电脑开机
    :云端自动跑,关机休眠不影响
  • 完全免费
    :腾讯云SCF免费额度每日足够签到百次,个人用永久免费
  • 最强稳签逻辑
    :原版工业级「先查后签幂等机制」,绝不重复签到、极低风控
  • 小白零难度
    :复制粘贴即可,无需代码基础、无需服务器、无需挂机
  • 官方真实接口
    :使用你抓取到的最新官方接口,无失效占位地址

风险提示:自动化签到属于技术学习用途,存在极小概率风控、积分回收风险,日常稳定可用,后果自用自负。

二、前置准备(仅一次,5分钟搞定)

1. 注册/登录腾讯云

打开官网:https://cloud.tencent.com/,微信扫码登录即可,无需实名认证付费。

2. 获取你的 WorkBuddy Token(关键)

打开电脑端 WorkBuddy/CodeBuddy,抓包或查看本地缓存,获取你的 Bearer Token(JWT三段式字符串)。

步骤 1:打开电脑缓存目录

按下键盘 Win + R((就是按键盘左下角带这个

的键和R键),粘贴("%localappdata%\CodeBuddyExtension\Data\Public\auth")路径回车:

步骤 2:找到密钥文件

文件夹里有文件workbuddy-desktop.info:

步骤 3:获取 Token

  1. 用记事本打开该文件
  2. 找到字段:"accessToken":"这里就是你的Token"
  1. 复制 引号内一整段(三段式、带两个小数点 JWT 字符串)

✅ 格式特征:

以 eyJhbGci 开头,中间两个 .一共三段,就是正确可用的 Bearer Token

步骤 4:粘贴到腾讯云 SCF

回到腾讯云函数 → 环境变量 WB_TOKEN,粘贴保存即可。

三、完整手把手部署步骤(小白照做即可)

步骤1:进入云函数SCF控制台

直接打开地址:https://console.cloud.tencent.com/scf

点击「函数服务」→「新建函数」

步骤2:创建空白函数(严格按以下选择)

  • 创建方式:空白函数
  • 函数名称:workbuddy_sign(随便填)
  • 地域:选 广州(国内最快、风控最低)
  • 运行环境:PHP 7.2
  • 启用外网访问:无需开启

点击「完成」创建函数。

步骤3:粘贴我给你的【SCF专属改造后完整代码】

删除控制台默认全部代码,全文复制下方代码覆盖(已适配SCF、无本地文件、无锁、兼容云端环境、保留原版所有稳签逻辑)

<?php/** * WorkBuddy 腾讯云SCF专属签到脚本 * 适配云端、无需本地文件、无需电脑开机、幂等先查后签 * 退出码:0成功/已签  2Token失效  3服务异常  4配置错误 */// ========== 官方真实接口(你提供的最新有效接口) ==========define('STATUS_URL', 'https://www.codebuddy.cn/v2/billing/meter/checkin-activity-status');define('CHECKIN_URL', 'https://www.codebuddy.cn/v2/billing/meter/daily-checkin');define('TIMEOUT', 15);define('CONNECT_TIMEOUT', 5);date_default_timezone_set('Asia/Shanghai');// 统一日志输出(适配SCF控制台日志)function log_msg(string $msg): void{    echo '[' . date('Y-m-d H:i:s') . '] ' . $msg . PHP_EOL;}// 从SCF环境变量读取Token(安全、不明文存代码)function load_token(): string{    $token = trim(getenv('WB_TOKEN'));    if (empty($token) || substr_count($token, '.') !== 2) {        log_msg('❌ 未配置或Token格式错误,请检查环境变量 WB_TOKEN');        exit(4);    }    return $token;}// 通用POST请求function http_post(string $url, string $token): array{    $ch = curl_init($url);    curl_setopt_array($ch, [        CURLOPT_POST => true,        CURLOPT_POSTFIELDS => '{}',        CURLOPT_HTTPHEADER => [            'Content-Type: application/json',            'Authorization: Bearer ' . $token,            'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',            'Accept: application/json',        ],        CURLOPT_RETURNTRANSFER => true,        CURLOPT_TIMEOUT => TIMEOUT,        CURLOPT_CONNECTTIMEOUT => CONNECT_TIMEOUT,        CURLOPT_SSL_VERIFYPEER => false,        CURLOPT_SSL_VERIFYHOST => false,    ]);    $body = curl_exec($ch);    $errmsg = curl_error($ch);    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);    curl_close($ch);    $json = json_decode($body, true);    if (!is_array($json)) $json = [];    return [$code, $json, $errmsg];}// 结果状态归一化(防误判)function classify(int $httpCode, array $resp): string{    if ($httpCode === 401 || $httpCode === 403) return 'auth';    $bizCode = $resp['code'] ?? '';    if ($bizCode === 0 || $bizCode === 'SUCCESS') return 'ok';    if ($bizCode === 10001) return 'already';    $msg = strtolower($resp['message'] ?? '');    if (str_contains($msg, '已签到') || str_contains($msg, 'already')) return 'already';    return 'failed';}// 格式化输出积分/连续天数信息function summarize(array $resp): string{    if (!isset($resp['data']) || !is_array($resp['data'])) return json_encode($resp, JSON_UNESCAPED_UNICODE);    $data = $resp['data'];    $txt = [];    if (isset($data['today_checked_in'])) $txt[] = '今日已签到:' . ($data['today_checked_in'] ? '是' : '否');    if (isset($data['streak_days'])) $txt[] = '连续签到:' . $data['streak_days'] . '天';    if (isset($data['total_credits'])) $txt[] = '账户积分:' . $data['total_credits'];    return implode(' | ', $txt);}// Token失效统一退出function exit_auth(){    log_msg('❌ Token已失效,请重新抓取更新!');    exit(2);}// ========== 云函数入口主函数 ==========function main_handler($event, $context){    log_msg('--- WorkBuddy 云端签到任务启动 ---');    $token = load_token();    log_msg('✅ Token加载成功');    // 1. 先查询今日是否已签到(幂等核心)    [$sCode, $sResp, $sErr] = http_post(STATUS_URL, $token);    log_msg("状态查询 HTTP {$sCode} | " . summarize($sResp));    $status = classify($sCode, $sResp);    if ($status === 'auth') exit_auth();    if ($status === 'already') {        log_msg('⏰ 今日已完成签到,无需重复执行');        log_msg('--- 任务结束 ---');        return '已签到';    }    // 2. 未签到则执行签到    log_msg('🚀 开始执行今日签到');    [$cCode, $cResp, $cErr] = http_post(CHECKIN_URL, $token);    log_msg("签到请求 HTTP {$cCode} | " . summarize($cResp));    $cStatus = classify($cCode, $cResp);    if ($cStatus === 'auth') exit_auth();    if ($cStatus === 'ok') {        log_msg('🎉 签到成功!积分已到账');    } elseif ($cStatus === 'already') {        log_msg('⏰ 并发兜底:今日已签到');    } else {        log_msg('❌ 签到失败,网络或服务异常');        exit(3);    }    log_msg('--- 今日签到任务完成 ---');    return '签到成功';}?>

步骤4:配置私密Token(最重要!小白必看)

左侧菜单栏 →函数配置 → 点击“编辑”,下拉找到「环境变量」→ 添加变量

  • 变量Key:WB_TOKEN
  • 变量Value:粘贴你自己抓到的WorkBuddy Token

点击保存!(Token存在这里绝对安全,不会泄露)

步骤5:测试代码是否可用(一键验证)

回到「代码编辑」页面 → 点击右上角 测试 → 直接点「提交测试」

成功日志会显示:✅ Token加载成功、今日已签到/签到成功

报错401 = Token过期/错误,重新抓取即可。

步骤6:配置定时自动签到(彻底解放双手)

左侧 → 触发器管理 → 新建触发器

  • 触发方式:定时触发
  • 触发器名称:随便填 sign_everyday
  • 触发周期:自定义CRON表达式
  • 填写表达式:0 30 9 * * *

含义:每天早上 9:30 自动签到(避开整点风控,最稳时间)

点击提交,全自动生效!

四、最终效果

  • ✅ 电脑永久不用开机、不用挂机、不用联网
  • ✅ 每天9:30云端自动执行签到
  • ✅ 自带幂等机制,永不重复签到
  • ✅ 控制台可随时查看每日签到日志

五、常见小白问题排查

  • 报错401/403
    :Token过期,重新抓包替换环境变量里的WB_TOKEN即可
  • 提示请求失败
    :网络波动,第二天自动重试即可
  • 不会抓Token
    :告诉我,我发你一键抓包极简教程
  • 想改签到时间
    :我可以给你任意时间的CRON表达式

相关学习资料