子非鱼,安知鱼之乐?
子非我,安知我不知鱼之乐?

前言

我怀着忐忑的心情在写,感觉在挑战官方【官方】的底线。但转念一想技术文章嘛,不至于被封吧!(其实心里心惊胆战 )。为了各位掘友的”懒人”生活,社区多账号自动签到和抽奖今天搞了!!!

邮箱推送

首先来一个签axios拦截器到完邮箱推送消息的”挂”。之所以先说邮箱推送是因为邮箱推送是免费的,人狠话不多,直接上手。

// index.js

"use strict"
// Nodemailer是一个简单易用的Node.js邮件发送组件
const nodeMailer = require('nodemailer');
// 易用、简洁且高效的http库
const axios = require('axios');
// 请求签到、抽奖的接口
const checkInApi = "https://api./growth_api/v1/check_in"
const drawApi = "https://api./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登录置云函数服务

云函数服务的配置就是为了每天自动给你签到和抽奖。

注册账号

首先打开 云函数服务 接下来就是一顿的微信扫码然后个人认证
如下图点击”新建”按钮 新建云服务↓

云函数定时触发掘金社区:自动签到 、自动免费抽奖
然后就是把nodejs菜鸟教程上面的代码放入新建的云服务中
如下图,先自定义函数服务↓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, 如下图↓

云函数定时触发掘金社区:自动签到 、自动免费抽奖
开始安装 “nodemajson是什么意思inodejs和java性能ler”、”axios”女配满眼都是钱
点击 终端 => 新终端
在终端输入:

  cd ./src  // 因为在src文件夹下 所以要先cd进去
  npm install // 安装依赖

安装完毕以后 得到我们需要的所有文件

云函数定时触发掘金社区:自动签到 、自动免费抽奖
全部准备完毕以后 先部署服务 再测试一下
最终就能得到我们要的结果
云函数定时触发掘金社区:自动签到 、自动免费抽奖
再看一下邮件有没有收到签到和抽奖的信息
结果肯定没问题啊 O(∩_∩)O哈哈~
云函数定时触发掘金社区:自动签到 、自动免费抽奖
到此自动签到和免费抽奖的邮件推送就OK了。

短信推送

其次再来一个签到完短信推送消息的”挂”。
短信推送和邮件推送其实只是签到和抽奖以后的消息推送的区别,相对于邮件推送不好的地方还是付费的,但短信推送在于简洁和便易nodejs和vue的关系查看。话不多说 搞!

互亿无线

这里用的短信发送平台是互译无限,没有打广告的意思啊,就是随便找了一个,发现这个比较简单,文档比较清晰就用他了。

创建账号

  • 首先是注册账号 互Node.js亿无线
  • 注册完成以后选择学习使用
  • 然后我斥巨资买了一个十块钱166条信息的套餐(为了文章,我也是下了血本。血汗钱 啊兄弟们)
  • 买完以后就进入主页面,

云函数定时触发掘金社区:自动签到 、自动免费抽奖

人狠话不多,直接上代码

"use strict"
// 易用、简洁且高效的http库
const axios = require('axios');
// 请求签到、抽奖的接口
const checkInApi = "https://api./growth_api/v1/check_in"
const drawApi = "https://api./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个阅读,若有帮助来了免费小心心呗!