☰
青龙面板QLScriptPublic快速上手:拉库、code登录与通知配置
2026/10/20 2:45:22 网站建设 项目流程

青龙面板QLScriptPublic快速上手:拉库、code登录与通知配置

【免费下载链接】QLScriptPublic青龙面板脚本公共仓库 企鹅交流1021185005项目地址: https://gitcode.com/GitHub_Trending/ql/QLScriptPublic

想让青龙面板每天自动把十几个签到刷完,又不想一个个抄脚本?QLScriptPublic 公共脚本仓库把 150+ 个签到脚本打包好了:一条拉库命令接入,配好 code 登录变量和通知变量,几分钟跑通第一个签到脚本,之后全部交给定时任务。

一条命令接入青龙面板,先让一个脚本跑起来 🏁

先说结论:接入只需一条拉库命令。打开青龙面板的终端,粘贴执行:

ql repo https://gitcode.com/GitHub_Trending/ql/QLScriptPublic.git

拉完库,青龙会按每个脚本头部的 cron 声明自动建任务。以 wxapp/nestle.js 为例,头部写着:

/* cron: 20 8 * * * */

意思是每天 08:20 执行一次,daily/和wxapp/下的脚本基本都是这种写法,你不用手动建任务。目录上大致是:daily/放日常签到,wxapp/放微信小程序脚本,jd/放京东系列,tools/放公共模块,任务页里全都能找到。

接下来是最小环境变量配置。仓库里的脚本分两类变量需求:

  • Cookie 型:只配一个变量,比如 daily/360.py 需要BBS360_COOKIE;
  • code 登录型:配 openid 变量 +wx_server_url/wx_auth两个公共变量。

最快的验证方式:环境变量页加好变量后,到任务页找到对应脚本点"运行一次"。3 分钟内你应该能看到"共找到1个账号""登录:成功"这类输出。

最常见的坑,先排一遍再往下走:

  • 日志报未配置 wx_auth,无法从 wx_server 获取 code→ 你忘了配wx_auth,它是必填的;
  • 报未配置 nestle→ openid 变量没写对名字,code 路线的变量名就是脚本名(nestle);
  • Cookie 脚本提示缺少必要字段 → Cookie 没复制全,比如 360 要求含__cfduid、uid。

跟着一个脚本走完全链路:调度 → 取码 → 登录 → 签到 → 通知

📦 下面拿雀巢脚本 wxapp/nestle.js 当样本,按一次执行的时序把链路拆开,其他 code 登录脚本几乎同构。

  1. 调度:cron 到点,面板执行这个脚本。它先读nestle变量,按\n|&拆成 openid 列表,打印"共找到 N 个账号"。
  2. 先查缓存:登录前先看脚本同目录的nestle_token_cache.json。判断逻辑很短——缓存里有 token,且距离过期还超过 5 分钟,就直接复用:
const item = cache[this.cacheKey()]; if (!item?.authorization || !item?.expiresAt) return ""; if (Date.now() > Number(item.expiresAt) - 5 * 60 * 1000) return ""; return item.authorization;

为什么要有这层缓存?code 是一次性凭证,wx_server 只是中转服务,每天跑都重新取码既慢又多依赖一个外部服务。缓存里存的是 access_token,它的过期时间来自 JWT payload 的exp字段(脚本里decodeJwt做 base64 解码),没到期就完全不用碰中转服务。

  1. 取码:缓存失效时才走这段——向 wx_server 的/wx/code发 POST,请求头带auth: wx_auth,请求体是appid+openid:
const { status, data } = await request({ method: "POST", url: `${WX_SERVER_URL}/wx/code`, headers: { auth: WX_AUTH, "content-type": "application/json" }, data: { appid: APP.appid, openid }, }); const code = data?.data?.code || data?.code;

wx_server_url没配时会落到默认值http://192.168.31.196:8787,加载时还会把尾部斜杠去掉。

  1. 换 token:拿到 code 后,脚本请求雀巢的identityservice/connect/token,参数是client_id=wechatMini、grant_type=wechat_auth_code、auth_code=code,返回access_token,拼成Bearer <token>作为后续所有请求的 Authorization。日志里 token 是打码输出的,完整值只进缓存文件。
  2. 签到:带着 token 依次查用户信息、巢币余额、本月签到列表,再 POST 签到接口,最后把签到后的余额和状态打出来。
  3. 收尾:把新 token 连同exp写回缓存;多账号则等 800ms 后执行下一个(依次执行,不并发);全部跑完调用$.done(),它汇总日志并触发推送——这就接上了 tools/sendNotify.js。

code 登录 vs Cookie 登录:两条路线怎么选

维度code 登录路线Cookie 路线
登录方式wx_server 中转取 code,再向服务端换 token直接贴浏览器里复制的 Cookie
需要配哪些变量openid 变量 +wx_server_url+wx_auth单个 Cookie 变量(如BBS360_COOKIE)
典型脚本wxapp/nestle.js、wxapp/aima.jsdaily/360.py
失效时的表现取码失败或登录接口报未授权,多为 openid 未授权、wx_auth 配错403、提示未登录或 formhash 解析不到,基本是 Cookie 过期

几个要点:

  • wx_server_url默认http://192.168.31.196:8787,可在环境变量里覆盖;wx_auth必填,缺失时取码环节直接抛错,不会继续往下跑。
  • 首次使用code 路线,先别急,一般要先在对应微信小程序内完成注册、授权或绑定手机号,否则这个 openid 签不了到——这是新手最高频的"脚本没错但签不上"的原因。
  • Cookie 路线的变量看脚本头部注释即可,例如 360 脚本要求 Cookie 含__cfduid、uid;返回 403 时它会提示"可能需要绑定手机号"。

变量怎么写:多账号分隔与常用变量速查

多账号约定:&或换行分隔。两处实现互相印证——wxapp/nestle.js 里的splitAccounts按\n|&正则拆;公共模块 tools/env.js 的checkEnv会先判断变量里含&还是换行,用对应分隔符拆分,再打印"共找到 N 个账号"。所以你配完变量跑一次,日志里报的账号数就是它实际拆出来的数量,对不上就是分隔符写错了。

注意:单任务多账号是依次执行而非并发。nestle 的主循环是 for +wait(800),一个账号跑完(含失败)才轮到下一个,某个账号报错不会拖垮整批。

常用变量速查:

变量名是否必填默认值一句话说明
nestle是无wx_server 里的 openid,&或换行分隔
wx_server_url否http://192.168.31.196:8787code 中转服务地址
wx_auth是无wx_server 鉴权值,缺失直接抛错
BBS360_COOKIE是无360 社区 Cookie,需含__cfduid、uid
BARK_PUSH否无bark 推送地址或设备码
PUSH_KEY否无Server 酱,自动兼容 Turbo 版
SKIP_PUSH_TITLE否无按回车分隔,命中的标题不推送

每个脚本到底要配哪些变量,以脚本头部注释和 wxapp/README.md、daily/README.md 为准,不要凭记忆猜。

通知渠道:配哪个变量,走哪条通道 📣

先分工:Python 脚本走根目录 notify.py,JS 脚本由 tools/env.js 的Env.sendMsg()调 tools/sendNotify.js,后者内置与 notify.py 对应的push_config,HTTP 层用 undici 实现。两套的变量名基本一致——配哪个变量,就走哪条通道,变量留空等于关闭该通道,启动时会用同名环境变量覆盖默认值:

环境变量推送通道
BARK_PUSHbark(另有BARK_LEVEL/BARK_URL等细项)
DD_BOT_TOKEN+DD_BOT_SECRET钉钉机器人,支持 HMAC 加签
FSKEY+FSSECRET飞书机器人
PUSH_KEYServer 酱
PUSH_PLUS_TOKENpushplus(模板、渠道等可再配)
TG_BOT_TOKEN+TG_USER_IDTelegram(支持TG_PROXY_*代理)
QYWX_AM/QYWX_KEY企业微信应用 / 机器人
SMTP_SERVER+SMTP_EMAIL等邮件,SSL 由SMTP_SSL控制

一个实用开关:SKIP_PUSH_TITLE(回车分隔多个标题)。"今日已签到"这类天天必来的标题加进去就不再推送,能明显降噪。notify.py 的send()是统一入口,命中的标题直接跳过,其余渠道多线程并发发送。

怎么判断 QLScriptPublic 脚本现在还能不能用

仓库没有"全部可用"的静态承诺,判断方法看 README.md 里两张自动维护的脚本表(位于<!-- README_TABLE_START -->等注释标记之间),每张表三列:脚本名称 / 最后一次更新时间 / 当前状态(✅)。

实操就是两步:看状态列是不是 ✅,看"最后一次更新时间"新不新。两项都满足,基本可以放心跑;状态列变 ❌ 就说明上游已确认失效。

脚本突然不工作时,按这个顺序排查,能覆盖九成问题:

  1. 任务页确认 cron 任务被面板识别了——头部cron:缺失时根本不会定时触发;
  2. 读执行日志的报错关键词:未配置 wx_auth、获取code失败 HTTP …、未解析到 formhash、403 Forbidden各自指向不同环节;
  3. 核对变量时效:Cookie 是否过期、openid 是否还在 wx_server 的授权列表里;
  4. 对照 README 状态列:显示 ❌ 或更新时间很旧的,先等上游修复;
  5. 看该脚本文件的最近提交——维护者通常在坏掉后很快跟进。

边界与使用须知

最后照例提醒几句,别等出问题再翻 README:

  • 仓库脚本仅用于个人学习和测试,禁止商用;作者不保证脚本的合法性、准确性与有效性,跑出问题的损失自负;
  • 仓库资源禁止公众号、自媒体任何形式的转载发布;
  • 认为某个脚本侵权的,带上身份证明和所有权证明反馈给作者,核实后会删除;
  • 一旦使用并复制了脚本,即视为接受全部条款;间接使用(比如自建服务)引起的隐私问题同样自担。

到这里,拉库、配变量、跑通脚本、收通知这条闭环就齐了。剩下的事很简单:把要签到的项目变量一个个加进环境变量页,让青龙面板替你值班。

【免费下载链接】QLScriptPublic青龙面板脚本公共仓库 企鹅交流1021185005项目地址: https://gitcode.com/GitHub_Trending/ql/QLScriptPublic

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询