三个改动: 1) sendNotify.js 的 webhook 判据从 statusCode !== 200 改成 2xx 一律成功。 平台 /api/hooks/ql 按设计回 204(表示已接收且不写 event_logs), 原判据把 204 当失败 → 每轮日志都打「自定义发送通知消息失败!!」, 而投递其实成功了。这是纯假警报,也是这次误判的根因。 同时把状态码打进日志,真失败时能直接看出是 401/403/400/429。 2) _diag_notify.js → scrip_diag_notify.js。 订阅白名单是 scrip_,不带前缀的文件拉不下来,工具等于不存在。 加 // cron: 0 0 1 1 * 与 // name:,避免青龙自动建任务时落随机 cron。 正文补到六段:sendNotify 加载 / env / webhook 三前置条件与 body+headers 解析复刻 / 直打平台按状态码定位 / pushplus txt-vs-html 模板对比 / 完整 sendNotify 对照。 3) 文档补齐平台侧的两道硬校验:来源 IP 必须 127.0.0.1 或 172.16/12 (走公网域名会变成反代地址 → 403),回环带 XFF 一律 403。 给出指向平台的完整 env 写法(WEBHOOK_BODY 必须多行,单行 JSON 会被 parseString 整段吞掉 —— 已实测解析结果为 0 个 key)。 验证:node --check(sendNotify + 诊断)/ 5 个 mock 状态码用例 (204/401/403/400/429)全部被正确识别 / _probe_meta 四文件 PASS
94 lines
3.9 KiB
Markdown
94 lines
3.9 KiB
Markdown
# 青龙面板脚本库
|
||
|
||
这是一个专为青龙面板设计的脚本库,包含各种自动化脚本和工具。
|
||
|
||
## 简介
|
||
|
||
青龙面板是一个支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台。本仓库提供了一系列实用的脚本,帮助用户更好地使用青龙面板进行自动化任务管理。
|
||
|
||
## 功能特性
|
||
|
||
- 📦 丰富的脚本库
|
||
- 🔧 易于配置和使用
|
||
- 📝 详细的文档说明
|
||
- 🚀 持续更新维护
|
||
|
||
## 脚本列表
|
||
|
||
| 脚本名称 | 文件路径 | 功能描述 | 环境变量 | 定时规则 |
|
||
|---------|---------|----------|----------|----------|
|
||
| 京东Cookie辅助脚本 | `jd/scrip_moving_env_enhance.js` | 将JD CK进行重排序,保证所有账号都有助力与被助力的机会 | 需要修改脚本内域名(对应ql的域名) | `59 23 */3 * *` |
|
||
| 携趣白名单切换 | `xiequ/scrip_switch.js` | 多个携趣账号,多个IP,自动选择合适的携趣进行白名单切换 | `XQ_ACCOUNTS`<br />`XQ_WHITELIST` | `38 2,8,14,20 * * *` |
|
||
| QQ音乐自动签到 | `qqmusic/scrip_qqmusic_checkin.js` | QQ音乐会员成长值任务 + 会员福利站自动签到(签到/挂件/装扮/听书/节目/礼券/月里程碑/抽奖) | `SH_QQMUSIC_KEY`<br />(多账号同名多条,格式 `<uin>#<qm_keyst>`) | `1 0,6 * * *` |
|
||
| 通知链路诊断 | `scrip_diag_notify.js` | 排查「通知只收到标题」「自定义发送通知消息失败」:查 sendNotify 加载、env、webhook 前置条件、body 解析、直打平台、pushplus 模板对比 | 无(读现有通知 env) | `0 0 1 1 *`(等于不自动跑,手动执行) |
|
||
|
||
> **文件名约定**:订阅白名单是 `scrip_`,所有脚本文件必须带该前缀才会被拉取。
|
||
> 详见各目录下的 README。
|
||
|
||
|
||
## 安装使用
|
||
|
||
### 环境要求
|
||
|
||
- Node.js >= 14.0.0
|
||
- 青龙面板 >= 2.10.0
|
||
|
||
### 快速开始
|
||
|
||
1. 订阅
|
||
```bash
|
||
ql repo https://gitea.zhuhjay.cn/zhuhjay/ql-scripts.git "scrip_" "" "sendNotify|common" "js"
|
||
```
|
||
|
||
## 青龙自动建任务的元数据约定(必读)
|
||
|
||
订阅勾了「自动添加定时任务」时,青龙从**脚本正文**正则提取任务名与 cron。
|
||
两条正则都**不锚定行首、取全文第一个命中**(2026-11-04 真机踩坑实录):
|
||
|
||
| 项 | 青龙的提取规则 | 必须怎么写 |
|
||
|---|---|---|
|
||
| **任务名** | `/name:\s*(.+)/` | 文件最前面写一行 `// name: 中文任务名`。**全文任何位置都不能再出现「name + 冒号」的连写** —— `https.request({ hostname: u.hostname })` 会被抓成任务名 `u.hostname,`(已复现) |
|
||
| **cron** | `/\bcron:\s*([^\r\n]+)/`,**必须带冒号** | 写 `// cron: 1 0,6 * * *`,**独占一行、后面不跟任何注释**(同一行剩余文字会被一起吞进 schedule) |
|
||
|
||
两个都抓不到时的兜底:任务名 = 文件名;cron = 随机 `M H * * *`(这就是那次任务被建成 `18 21 * * *` 的原因)。
|
||
|
||
**自检**:
|
||
|
||
```bash
|
||
node _probe_meta.js # 扫描所有 scrip_*.js,复刻两个版本青龙的正则,验证提取结果
|
||
```
|
||
|
||
`_probe_meta.js` 是开发期工具,不带 `scrip_` 前缀,不会被订阅拉取。
|
||
新增脚本后跑一次,全 PASS 再提交。
|
||
|
||
### 各脚本的注解写法
|
||
|
||
```js
|
||
// cron: <表达式>
|
||
// name: <中文任务名>
|
||
/** 说明文字写这里,注意别写 "name:" 连写 */
|
||
```
|
||
|
||
用**行注释**而不是块注释:块注释里 cron 的 `*/` 会提前闭合注释,必须写成 `*\/`,
|
||
而青龙会把反斜杠一起提取出去导致 cron 非法。
|
||
|
||
## 脚本说明
|
||
|
||
### 使用方法
|
||
|
||
每个脚本都有详细的使用说明,请查看对应的文档或脚本内的注释。
|
||
|
||
## 注意事项
|
||
|
||
- 请确保脚本符合青龙面板的规范
|
||
- 使用前请仔细阅读脚本说明
|
||
- 定期更新脚本以获得最新功能
|
||
|
||
## 免责声明
|
||
|
||
本项目仅供学习交流使用,请勿用于非法用途。使用本项目所产生的一切后果由使用者自行承担。
|
||
|
||
---
|
||
|
||
⭐ 如果这个项目对你有帮助,请给个 Star 支持一下!
|