项目代码 戳这里
使用问题,欢迎留言
项目初衷
之前用 腾讯云 部署过自动化脚本,就试了下掘金自动签到,搭配 pushPlus进行微信推送,发现可行,所以分享出来。
经jym测试 got 11.8.3以上版本不支持使用
require
语法,仓库已锁版本号,如需使用以上版本,package.json
中添加"type": "module"
,并修改相关文件的导入导出方式
你需要用到什么
Github
、nodejs
这些就不说了,标配。
- 腾讯云账号,用来发布脚本
- pushplus账号,用来接收签到结果,需要使用微信关注公众号激活消息
使用步骤
-
拉代码,安装依赖,项目使用 got 进行接口请求,具体使用方法戳链接查看。
-
打开项目,安装依赖,配置一下
config.js
中的内容。module.exports = { cookie: '', aid: '', uuid: '', _signature: '', PUSH_PLUS_TOKEN: '' }
标题 cookie 打开控制台可以找到任意juejin请求,找到Request Header中的cookie aid, uuid, _signature 这三个请求可以将浏览器断网之后手动点击一下签到按钮,查看请求拿到 PUSH_PLUS_TOKEN pushplus 推送用到的token,下面说明有获取方式 -
微信搜索
pushplus推送加
,关注之后激活消息。 -
打开公众号底部菜单栏的
pushplus官网
,进入官网后右上方菜单展开有个一对一推送
,可以查看pushplus
的推送token -
打开 [腾讯云函数](函数服务 - Serverless - 控制台 (tencent.com))登录
-
新建云函数,选择
自定义创建
, 运行环境选择Nodejs 12.16
提交方式选择本地上传文件夹,将项目代码整个传上去
node_modules文件夹也一并上传
-
创建完成之后配置一下项目触发器,这里使用的是自定义触发周期,要用到
corn表达式
,corn表达式
使用方法:(云函数 定时触发器说明 - 触发器 - 文档中心 - 腾讯云 (tencent.com))图上的
0 30 9 * * * *
意思就是每天的09:30执行一次代码
本地调试
打开项目,执行node app.js
云函数调试
云函数新建完毕之后,点击函数管理
下面的函数代码
,执行方式默认不用修改,先点击部署
,再点测试
, 这时候手机微信就会收到一条微信通知了,也可以在日志查询
Tab内查看具体执行日志。
项目目录结构说明
app.js
: 项目主代码
config.js
: 项目的一些配置信息
index.js
: 云函数入口,如果本地调用则不需要在意该文件
项目代码
app.js
const got = require('got')
const { cookie, aid, uuid, _signature, PUSH_PLUS_TOKEN } = require('./config')
const BASEURL = 'https://api.juejin.cn/growth_api/v1/check_in' // 掘金签到api
const PUSH_URL = 'http://www.pushplus.plus/send' // pushplus 推送api
const URL = `${BASEURL}?aid=${aid}&uuid=${uuid}&_signature=${_signature}`
const HEADERS = {
cookie,
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67'
}
// 签到
async function signIn () {
const res = await got.post(URL, {
hooks: {
beforeRequest: [
options => {
Object.assign(options.headers, HEADERS)
}
]
}
})
console.log(res.body)
handlePush(res.body)
}
// push
async function handlePush (desp) {
const body = {
token: `${PUSH_PLUS_TOKEN}`,
title: `签到结果`,
content: `${desp}`
};
const res = await got.post(PUSH_URL, {
json: body
})
console.log(res.body)
}
signIn()
config.js
module.exports = {
cookie: '',
PUSH_PLUS_TOKEN: '',
aid: '',
uuid: '',
_signature: ''
}
index.js
'use strict';
exports.main_handler = async (event, context, callback) => {
require('./app.js')
}