云函数定时触发掘金社区:自动签到 、自动免费抽奖 🔥🔥
子非鱼,安知鱼之乐?
子非我,安知我不知鱼之乐?
前言
我怀着忐忑的心情在写,感觉在挑战官方【官方】的底线。但转念一想技术文章嘛,不至于被封吧!(其实心里心惊胆战 )。为了各位掘友的”懒人”生活,社区多账号自动签到和抽奖今天搞了!!!
邮箱推送
首先来一个签axios拦截器到完邮箱推送消息的”挂”。之所以先说邮箱推送是因为邮箱推送是免费的,人狠话不多,直接上手。
// index.js
"use strict"
// Nodemailer是一个简单易用的Node.js邮件发送组件
const nodeMailer = require('nodemailer');
// 易用、简洁且高效的http库
const axios = require('axios');
// 请求签到、抽奖的接口
const checkInApi = "https://api.juejin.cn/growth_api/v1/check_in"
const drawApi = "https://api.juejin.cn/growth_api/v1/lottery/draw"
// 请求接口的cookie配置 cookie的获取见下面的图片说明
const cookieInfo = `xxx`
// 发送邮件的配置
// user、from、to都填写自己的qq邮箱, pass的获取见下面的图片说明
const emailInfo = {
"user": "xxx@qq.com",
"from": "xxx@qq.com",
"to": "xxx@qq.com",
"pass": "xxx"
}
// 请求签到接口
const checkIn = async () => {
let {data} = await axios({url: checkInApi, method: 'post', headers: {Cookie: cookieInfo}});
return data
}
// 请求抽奖接口
const draw = async () => {
let {data} = await axios({ url: drawApi, method: 'post', headers: { Cookie: cookieInfo } });
return data
}
// 签到完成 发送邮件
const sendQQEmail = async (subject, html) => {
let {user, from, to, pass } = emailInfo;
const transporter = nodeMailer.createTransport({ service: 'qq', auth: { user, pass } });
transporter.sendMail({ from, to, subject, html }, (err) => {
if (err) return console.log(`发送邮件失败:${err}`);
console.log('发送邮件成功')
})
}
// 触发签到和抽奖的方法
exports.signIn = async () => {
const checkInData = await checkIn();
const drawData = await draw();
console.log('', checkInData, drawData)
if(checkInData.data && drawData.data) {
sendQQEmail('签到和抽奖成功', `签到成功!今日获得${checkInData.data.incr_point}积分,当前总积分:${checkInData.data.sum_point}。 免费抽奖成功, 获得:${drawData.data.lottery_name}`);
} else if(checkInData.data && !drawData.data) {
sendQQEmail('签到成功, 抽奖失败', `签到成功!今日获得${checkInData.data.incr_point}积分,当前总积分:${checkInData.data.sum_point}。 免费抽奖失败, ${JSON.stringify(drawData)}`);
} else if(!checkInData.data && drawData.data) {
sendQQEmail('签到失败, 抽奖成功', `签到失败!${JSON.stringify(checkInData)}。 免费抽奖成功, 获得:${drawData.data.lottery_name}`);
} else if(!checkInData.data && !drawData.data) {
sendQQEmail('签到和抽奖失败', `签到失败!${JSON.stringify(checkInData)}。 免费抽奖失败, ${JSON.stringify(drawData)}`);
}
};
cookie的获取说明
- 首先,登录账号
- 其nodejs菜鸟教程次,F12 -> Network -> Fetch/XHR -&女配末世养崽日常gt; 随便男配每天都在体内成绩选择一个http 500接口 -> 找到Cookie -> 右键axiosCookie值 -> Copy value。 就能得到Cookie值了,如下图↓
qq邮箱的pass获取
- 首先,登陆网页版QQ邮箱
- 其次,设置 -> 账户 -> POP3/IMAP/SMTP/Exchange/CardDAV/Canodejs菜鸟教程lDAV服务 -> 开启服务 -> 生成授权码 -> 复制授权码。就能得到pass值了,如下图↓
配http://192.168.1.1登录置云函数服务
云函数服务的配置就是为了每天自动给你签到和抽奖。
注册账号
首先打开 云函数服务 接下来就是一顿的微信扫码然后个人认证
如下图点击”新建”按钮 新建云服务↓
如下图,先自定义函数服务↓axios
这里需要说明的是 “index.signIn”男配们的幸福千帆过尽 指的是 index.js 文件中的 s女配末世养崽日常ignIn 方法。
index.js 文件就是上面咱们编写的代码
package.json 文件就是 index.js 文件引用的包文件
{
"name": "juejin",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"axios": "^0.21.4",
"nodemailer": "^6.7.2"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
配置云服务触发器
需要说明的是 “0 0 8 * * * *” 就是每一天八点axios面试题触发
点击jsonp完成以后,回到 函数服务
再点击函数名称 juejin, 如下图↓
点击 终端 => 新终端
在终端输入:
cd ./src // 因为在src文件夹下 所以要先cd进去
npm install // 安装依赖
安装完毕以后 得到我们需要的所有文件
最终就能得到我们要的结果
结果肯定没问题啊 O(∩_∩)O哈哈~
短信推送
其次再来一个签到完短信推送消息的”挂”。
短信推送和邮件推送其实只是签到和抽奖以后的消息推送的区别,相对于邮件推送不好的地方还是付费的,但短信推送在于简洁和便易nodejs和vue的关系查看。话不多说 搞!
互亿无线
这里用的短信发送平台是互译无限,没有打广告的意思啊,就是随便找了一个,发现这个比较简单,文档比较清晰就用他了。
创建账号
- 首先是注册账号 互Node.js亿无线
- 注册完成以后选择学习使用
- 然后我斥巨资买了一个十块钱166条信息的套餐(为了文章,我也是下了血本。血汗钱 啊兄弟们)
- 买完以后就进入主页面,
人狠话不多,直接上代码
"use strict"
// 易用、简洁且高效的http库
const axios = require('axios');
// 请求签到、抽奖的接口
const checkInApi = "https://api.juejin.cn/growth_api/v1/check_in"
const drawApi = "https://api.juejin.cn/growth_api/v1/lottery/draw"
// 请求接口的cookie配置 cookie的获取见下面的图片说明
const cookieInfo = `xxx`
// 发送信息的配置
const mobileInfo = {
// 其实就是上图中 绿色框中的 APIID
"account": "xxx",
// 其实就是上图中 绿色框中的 APIKEY
"password": "xxx",
// 接收信息的电话号码
"mobile": "xxx",
// 短信模板需要审核 就先用这个默认的吧
"content": "您的验证码是:1234。请不要把验证码泄露给其他人。"
}
// 请求签到接口
const checkIn = async () => {
let {data} = await axios({url: checkInApi, method: 'post', headers: {Cookie: cookieInfo}});
return data
}
// 请求抽奖接口
const draw = async () => {
let {data} = await axios({ url: drawApi, method: 'post', headers: { Cookie: cookieInfo } });
return data
}
// 签到完成 发送信息
const sendMessage = (checkInData, drawData) => {
// content 为短信模板 需要审核 需要什么模板可以根据checkInData和drawData信息配置后去申请,这里就先不做过多赘述。
let {account, password, mobile, content} = mobileInfo;
axios.get(`https://106.ihuyi.com/webservice/sms.php?method=Submit&account=${account}&password=${password}&mobile=${mobile}$content=${content}`)
.then((res) => {
console.log('短信发送成功');
})
}
exports.signIn = async () => {
const checkInData = await checkIn();
const drawData = await draw();
sendMessage(checkInData, drawData)
};
到此自动签到和免费抽奖的短信推送就OK了。
个人建议还是用邮箱推送信息不较好,毕竟是免费的,自给自足比较方便。短信推送不仅仅需要花钱,还要各种配置,相对还是费劲一点。
最后悄悄告诉XDM, 可以配置多个账号哦
你的一个赞能抵100个阅读,若有帮助来了免费小心心呗!