node - 定时任务

定时任务 - 掘金每天自动签到

环境准备

npm install node-schedule
npm install request

node-schedule 文档

一般定时任务都是用 cron 表达式去表示时间的

cron 表达式

Cron 表达式是一种用于指定定时任务执行时间的字符串表示形式。它由 6 个或 7 个字段组成,每个字段表示任务执行的时间单位和范围。

Cron 表达式的典型格式如下:

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └── 星期(0 - 6,0表示星期日)
│    │    │    │    └───── 月份(1 - 12)
│    │    │    └────────── 日(1 - 31)
│    │    └─────────────── 小时(0 - 23)
│    └──────────────────── 分钟(0 - 59)
└───────────────────────── 秒(0 - 59)
是否必须 取值范围 特殊字符
秒 Seconds [0, 59] * , - /
分钟 Minutes [0, 59] * , - /
小时 Hours [0, 23] * , - /
日期 DayofMonth [1, 31] * , - / ? L W
月份 Month [1, 12]或[JAN, DEC] * , - /
星期 DayofWeek [1, 7]或[MON, SUN]。若使用[1, 7]表达方式,1 代表星期一,7 代表星期日。 * , - / ? L #
年 Year 1970+ - * /

每个字段可以接受特定的数值、范围、通配符和特殊字符来指定任务的执行时间:

  • 数值:表示具体的时间单位,如 1、2、10 等。
  • 范围:使用-连接起始和结束的数值,表示一个范围内的所有值,如 1-5 表示 1 到 5 的所有数值。
  • 通配符:使用表示匹配该字段的所有可能值,如表示每分钟、每小时、每天等。
  • 逗号分隔:使用逗号分隔多个数值或范围,表示匹配其中任意一个值,如 1,3 表示 1 或 3。
  • 步长:使用/表示步长,用于指定间隔的数值,如*/5 表示每隔 5 个单位执行一次。
  • 特殊字符:Cron 表达式还支持一些特殊字符来表示特定的含义,如?用于替代日和星期字段中的任意值,L 表示最后一天,W 表示最近的工作日等。

以下是一些常见的 Cron 表达式示例:

* * * * *:每分钟执行一次任务。
0 * * * *:每小时的整点执行一次任务。
0 0 * * *:每天的午夜执行一次任务。
0 0 * * 1:每周一的午夜执行一次任务。
0 0 1 * *:每月的1号午夜执行一次任务。
0 0 1 1 *:每年的1月1日午夜执行一次任务。

代码

// index.js
import schedule from "node-schedule";
import request from "request";
import config from "./config.js";
schedule.scheduleJob("0 30 0 * * *", () => {
  request(
    config.check_url,
    {
      method: "post",
      headers: {
        Referer: config.url,
        Cookie: config.cookie,
      },
    },
    function (error, response, body) {
      if (!error && response.statusCode == 200) {
        console.log(body);
      }
    }
  );
});
// config.js
export default {
  cookie: "sessionid=你的sessionid",
  url: "https://juejin.cn/",
  check_url:
    "https://api.juejin.cn/growth_api/v1/check_in?aid=你的aid&uuid=你的uuid", // 签到接口地址
};
posted @ 2024-12-10 14:44  进击的娃哈哈  阅读(2)  评论(0编辑  收藏  举报