青龙面板与WxPusher联动实战:资产变动推送全流程指南
在数字化资产管理时代,实时掌握账户变动已成为刚需。本文将手把手带你完成青龙面板与WxPusher的深度整合,实现从零配置到稳定接收推送的全过程。不同于基础教程,我们特别针对KR库用户可能遇到的sendNotifybyWxPucher is not a function等典型问题,提供经过验证的解决方案。
1. 环境准备与基础配置
1.1 WxPusher服务端搭建
访问 WxPusher官网 完成以下操作:
- 使用微信扫码注册开发者账号
- 进入「应用管理」→「创建应用」,填写基础信息后生成专属Token
- 关键操作:立即复制生成的AppToken(界面关闭后将无法再次查看)
# 建议将Token保存至安全位置 echo "您的AppToken" > ~/wxpusher_token.txt常见疏漏点:
- 未及时备份Token导致需要重置
- 应用名称填写不规范影响后续管理
- 忽略用户关注二维码的有效期(临时/永久)
1.2 青龙面板基础设置
确保青龙面板版本≥2.10.0,通过SSH连接后执行环境检查:
# 检查Node.js版本 node -v # 应显示v14.x或更高版本 # 检查Python版本 python3 --version # 应显示3.8+在「环境变量」页面添加新变量:
| 变量名 | 值类型 | 说明 |
|---|---|---|
| WP_APP_TOKEN_ONE | 字符串 | 填入之前获取的AppToken |
| WP_APP_TOPIC_ID | 字符串 | 可选,用于群发消息 |
2. KR库适配方案详解
2.1 通知模块问题排查
当执行任务出现notify.sendNotifybyWxPucher is not a function报错时,按以下流程处理:
- 定位通知文件路径:
find /ql -name "sendNotify.js" - 验证文件内容差异:
// 在sendNotify.js中搜索关键函数 grep -n "sendNotifybyWxPucher" /ql/scripts/sendNotify.js
解决方案矩阵:
| 问题类型 | 解决措施 | 影响范围 |
|---|---|---|
| 函数缺失 | 替换为KR库最新版sendNotify.js | 当前脚本 |
| 文件被覆盖 | 禁用原拉库任务中的sendNotify更新 | 所有依赖脚本 |
| JSON配置文件缺失 | 创建CK_WxPusherUid.json | 用户绑定关系 |
2.2 用户绑定配置
在/ql/data/scripts/目录创建CK_WxPusherUid.json:
[ { "pt_pin": "JD_COOKIE中pt_pin的值(不含分号)", "Uid": "WxPusher用户管理中的UID" } ]注意:pt_pin需与京东cookie中的值完全一致,建议使用
console.log输出验证
3. 资产监控任务改造
3.1 脚本防覆盖方案
针对KR库的自动更新机制,推荐采用以下防护措施:
- 创建副本脚本:
cp /ql/scripts/KingRan_KR/jd_bean_change_pro.js /ql/scripts/new_bean_change_pro.js - 修改通知引用逻辑:
// 原代码 const notify = require('./sendNotify'); // 修改为 const notify = require('./newsendNotify');
3.2 定时任务配置
在青龙面板「定时任务」页面新建任务:
task KingRan_KR/new_bean_change_pro.js执行频率建议:
- 资产变动监控:每30分钟一次
- 大额交易提醒:即时触发(需修改脚本逻辑)
4. 高阶调试技巧
4.1 日志分析要点
通过/ql/log目录下的日志文件排查问题:
# 实时监控任务日志 tail -f /ql/log/bean_change/$(date +%Y-%m-%d).log常见错误代码对照表:
| 错误代码 | 含义 | 解决方案 |
|---|---|---|
| 1001 | Token无效 | 检查环境变量是否被覆盖 |
| 2003 | 用户未关注 | 重新发送关注二维码 |
| 3005 | JSON格式错误 | 验证CK_WxPusherUid.json语法 |
4.2 消息模板定制
在sendNotify.js中修改消息格式:
function formatMessage(change) { return `【资产变动提醒】\n` + `时间:${new Date().toLocaleString()}\n` + `类型:${change.type}\n` + `金额:${change.amount.toFixed(2)}元\n` + `余额:${change.balance.toFixed(2)}元`; }5. 系统稳定性优化
5.1 异常处理机制
在脚本中添加重试逻辑:
async function safeSendNotify(message, retry = 3) { while(retry--) { try { return await notify.sendNotifybyWxPucher(message); } catch(e) { console.error(`发送失败,剩余重试次数${retry}`, e); await new Promise(resolve => setTimeout(resolve, 5000)); } } throw new Error('消息发送最终失败'); }5.2 监控看板搭建
推荐使用Grafana+Prometheus构建可视化监控:
- 安装数据采集器:
npm install -g qinglong-api-exporter - 配置数据源:
# prometheus.yml 追加 - job_name: 'qinglong' static_configs: - targets: ['localhost:9100']
6. 安全防护策略
6.1 敏感信息保护
使用环境变量替代硬编码:
// 不安全写法 const token = 'abcdef123456'; // 推荐写法 const token = process.env.WP_APP_TOKEN_ONE;6.2 权限控制清单
关键文件权限设置建议:
| 文件路径 | 推荐权限 | 说明 |
|---|---|---|
| /ql/data/scripts/*.json | 600 | 仅所有者可读写 |
| /ql/scripts/*.js | 644 | 所有者可写,其他只读 |
| /ql/config/config.sh | 400 | 仅所有者可读 |
7. 故障应急方案
当推送服务异常时,按以下步骤排查:
验证WxPusher服务状态:
curl -X GET "https://wxpusher.zjiecode.com/api/v1/health" -H "accept: application/json"正常应返回:
{"code":1000,"msg":"服务正常"}检查青龙面板网络连通性:
ping wxpusher.zjiecode.com telnet wxpusher.zjiecode.com 443本地测试消息发送:
// 在Node REPL中测试 const notify = require('./sendNotify'); notify.sendNotifybyWxPucher('测试消息');