1.定时任务
推荐使用node-schedule库
- 什么是定时任务
- 定时任务就是在预定的时间 去执行 后台任务 如 数据备份 日志清楚 自动签到
2.安装依赖
npm install node-schedule
npm intall request
3.cron表达式
-
Cron表达式是一种用于指定定时任务执行时间的字符串表示形式。它由6个或7个字段组成,每个字段表示任务执行的时间单位和范围。
* * * * * * ┬ ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ │ │ └── 星期(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 月份Mthon 是 1-12 *, - ,/ 星期DayofWeek 是 [1, 7]或[MON, SUN]。若使用[1, 7]表达方式,1代表星期一,7代表星期日。 *, - ,/ ? L W 年year 否 1970+ *,- ,/ -
数值:表示具体的时间单位,如1、2、10等。
-
范围:使用
-连接起始和结束的数值,表示一个范围内的所有值,如1-5表示1到5的所有数值。 -
通配符:使用
*表示匹配该字段的所有可能值,如*表示每分钟、每小时、每天等。 -
逗号分隔:使用逗号分隔多个数值或范围,表示匹配其中任意一个值,如1,3表示1或3。
-
步长:使用
/表示步长,用于指定间隔的数值,如*/5表示每隔5个单位执行一次。 -
特殊字符:Cron表达式还支持一些特殊字符来表示特定的含义,如
?用于替代日和星期字段中的任意值,L表示最后一天,W表示最近的工作日等。
每个字段可以接受特定的数值、范围、通配符和特殊字符来指定任务的执行时间:
-
* * * * * *:每秒执行一次任务。 -
0 * * * * *: 每分钟执行一次任务 -
0 0 * * * *:每小时执行整点执行任务 -
*/5 * * * * *: 每5秒执行任务 -
0 0 * * 1 *:每周一 凌晨午夜执行任务这是因为在 `node-schedule` 的 Cron 表达式中,如果你只提供了五个字段(如 `0 0 * * 1 *`),那么这五个字段将按照以下顺序解析: 1. 秒(0 - 59) 2. 分钟(0 - 59) 3. 小时(0 - 23) 4. 日期(1 - 31) 5. 星期几(0 - 7)(0 和 7 都代表星期日) 所以在 `0 0 * * 1 *` 中,`1` 是在星期几的位置,代表星期一。 -
0 0 * * 1 2: 在1月每个星期二 午夜执行任务然而,如果你提供了六个字段(如 0 0 * * 1 2),那么这六个字段将按照以下顺序解析: 秒(0 - 59) 分钟(0 - 59) 小时(0 - 23) 日期(1 - 31) 月份(1 - 12) 星期几(0 - 7)(0 和 7 都代表星期日) 所以在 0 0 * * 1 2 中,1 是在月份的位置,代表一月,而 2 是在星期几的位置,代表星期二。
-
4. 代码编写(掘金自动签到)
index.js
import schedule from 'node-schedule';
import config from './config.js';
import request from 'request';
schedule.scheduleJob('30 0 0 * * *', function () {
request(
config.check_url,
{
method: 'POST',
headers: {
Referer: config.url,
Cookie: config.cookie,
},
},
(err, res, body) => {
if (!err && res.statusCode === 200) {
console.log(body);
}
}
);
});
config.js
export default {
cookie: 'sessionid=你的cookie',
url: 'https://juejin.cn/',
check_url: 'https://api.juejin.cn/growth_api/v1/check_in?aid=你的aid&uuid=你的uuid'
}
aid和uuid
cookie