在日常运维和自动化场景中,我们常常需要定时访问某些接口,以触发任务或拉取数据。在 青龙面板(Qinglong Panel) 中实现“定时访问 URL 并输出反馈”。


一、需求

用户需求:

  • 使用青龙面板定时访问两个接口:

    1. https://video.020915.xyz/api.php/timming/index.html?enforce=1&name=bfall

    2. https://video.020915.xyz/api.php/timming/index.html?enforce=1&name=ffall

  • 在指定时间(如每周一早上 6:50)自动执行;

  • 在执行过程中输出成功或失败的反馈日志。


二、脚本编写

青龙支持多种运行环境,其中最常见的是 Node.js。基于 axios 库,可以快速完成一个定时访问脚本:

const axios = require('axios');

const urls = [
  'https://video.020915.xyz/api.php/timming/index.html?enforce=1&name=bfall',
  'https://video.020915.xyz/api.php/timming/index.html?enforce=1&name=ffall'
];

(async () => {
  const timestamp = new Date().toISOString();
  for (const url of urls) {
    const name = url.split('name=')[1];
    try {
      const res = await axios.get(url, { timeout: 30000 }); // 超时 30 秒
      console.log(`[${timestamp}] ✅ ${name} SUCCESS: ${res.status}`);
    } catch (err) {
      console.error(`[${timestamp}] ❌ ${name} ERROR: ${err.message}`);
    }
  }
})();

特点:

  • 支持多链接访问

  • 超时设置 30 秒,避免因接口卡住导致整个任务超时;

  • 输出信息清晰,适合青龙面板日志查看。

添加到青龙面板

  1. 打开青龙面板,进入左侧的 “定时任务”

  2. 点击右上角 “新增任务”

  3. 填写任务信息:

    • 任务名称:访问某个URL

    • 命令node /ql/data/scripts/visit_url.js(根据你的脚本实际路径调整)

    • 定时规则:如 0 */1 * * * 表示每小时执行一次(Cron表达式)。

    • 备注:可填写“用于定时访问接口 + 记录反馈”

  4. 点击 “确定”


三、常见问题与解决方案

在实践过程中,遇到了一些典型报错,现总结如下:

1. 脚本路径错误

  • 报错信息:Cannot find module '/ql/data/scripts/visit_bfall.js'

  • 原因:青龙任务命令与实际文件名不一致。

  • 解决:确认脚本文件保存路径,并在任务命令中写入正确路径,如:

    node /ql/data/scripts/visit_bfall_ffall.js
    

2. 缺少依赖模块

  • 报错信息:Error: Cannot find module 'axios'

  • 原因:脚本依赖的 axios 未安装。

  • 解决:

    • 在青龙面板 → 【依赖管理】 → NodeJs → 安装 axios

    • 或进入容器执行 npm install axios

3. 日志目录不存在

  • 报错信息:ENOENT: no such file or directory, open '/ql/data/logs/xxx.log'

  • 原因:手动写日志文件时,指定路径不存在。

  • 解决:要么提前创建目录,要么改为直接使用控制台输出即可。后续优化时,我们选择了仅打印控制台日志,更轻便。

4. Cloudflare 524 超时错误

  • 报错信息:Request failed with status code 524

  • 含义:Cloudflare 已经连接到源站,但等待超过 100 秒无响应。

  • 可能原因:

    • 接口后端执行时间过长;

    • 源站服务器负载过高;

    • 网络链路不稳定。

  • 解决:

    • 优化接口本身的响应速度;

    • 在脚本端设置 timeout,避免长时间等待。


四、定时任务配置

在青龙面板中,新增任务时设置 Cron 表达式 即可实现定时运行。

示例:每周一早上 6:50 执行

50 6 * * 1

解释:

  • 分钟 = 50

  • 小时 = 6

  • 日 = *(每天)

  • 月 = *(每月)

  • 周 = 1(周一)


五、实践经验

  1. 脚本路径和依赖管理 是初学者最常遇到的问题。确保路径正确、依赖安装完整,是任务成功运行的前提。

  2. 日志管理 不一定要落盘到文件。对于青龙面板,直接使用 console.log 即可,面板日志功能足够。

  3. 接口异常(如 524 超时) 往往来自后端服务,而非青龙本身,需要结合后端优化。

  4. Cron 表达式灵活,既可设置分钟级任务,也能实现精确到周的计划任务。