利用云函数进行自动签到(有手就行) nodejs+serverless云函数

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

【工具】

  • 免费的云函数服务(阿里云、百度云)
  • Chrome、FireFox或者一切可以打开控制台的浏览器(用于捕捉请求)
  • Postman(用于一键生成请求代码)
  • nodejs(如果不在本地调试而是直接在云函数端调试则无需安装)

【流程】

  1. 进入签到页面
  2. 打开浏览器控制台执行签到请求
  3. 获取请求的curl
  4. 到postman页面生成nodejs代码
  5. 生成package.json并根据对应平台的云函数格式调整nodejs代码
  6. 在控制台新建云函数、提交代码并设置固定时间的触发器
  7. 完成并点赞!

【详情】

1、进入签到页面

选择你要自动签到的网页打开,这里使用某论坛的打卡签到(切记先不要点击!否则没法捕捉到请求了):

image.png

2、打开浏览器控制台执行签到请求

打开浏览器控制台(一般就是F12),点netwrok或网络标签:

image.png 这里要注意两点:

  • 勾选上“保留日志”或“preserve log”,避免页面跳转当前页请求消失
  • 如果下面列表中已经存在之前的请求的,点击清除按钮清除之前的请求,避免跟要捕捉的签到请求混淆

然后进行签到操作,此时列表里就会出现签到的请求了(一般都是第一个请求,因为加载了图片或跳转页面会出现多个请求,这个就只能自己通过地址名称、响应内容进行甄别了):

image.png

3、获取请求的curl

在刚才的请求上单击右键,选择复制-以cURL(bash)copy格式复制:
(英文版是copy-Copy as cURL(bash))

image.png 注意:这个代码里包含着你账号的cookie等信息,不要泄露给其他人

curl 'https://xxx.cn/home.php?mod=task&id=2&referer=%2F' \
  -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
  -H 'Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6' \
  -H 'Connection: keep-alive' \
  -H 'Cookie: 重要的cookie内容,千万不要随便发给别人'\
  -H 'Referer: https://xxx.cn/' \
  -H 'Sec-Fetch-Dest: document' \
  -H 'Sec-Fetch-Mode: navigate' \
  -H 'Sec-Fetch-Site: same-origin' \
  -H 'Sec-Fetch-User: ?1' \
  -H 'Upgrade-Insecure-Requests: 1' \
  -H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36' \
  -H 'sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "Windows"' \
  --compressed

4、到postman页面生成nodejs代码

打开postman(版本尽量新一点,旧的版本没有生成代码的功能),点击import,选择Raw text,粘贴刚才的代码点击确定:

image.png

image.png

image.png

这时候请求就直接导入到postman中了(你也可以点击send发送请求进行测试):

image.png 点击右侧代码样式的按钮:

image.png 其中就可以生成各个语言下的签到请求代码,可以随意挑选,这里用我比较熟悉的axios框架为例:

image.png

5、生成package.json并根据对应平台的云函数格式调整nodejs代码

axios需要运行在nodejs下并且需要安装依赖,安装nodejs的步骤就不说了,直接新建文件夹,在控制条中执行下面的代码:

npm init -y
npm install axios

创建index.js文件,粘贴刚才postman中生成的代码,也可以在控制台输入node index.js发送请求进行测试:

image.png 这时候,签到请求的代码就完成了,但是要放到云函数上的时候还要做一点修改,以百度云函数为例:

exports.handler = (event, context, callback) => {
    // 这里放进去你生成的代码即可
    callback(null, "Hello world!");
    
    
    // 当然如果想查看接口返回信息的话可以把callback方法写在请求的回调中,第二个参数替换成接口的回调:
    // axios(config)
    //  .then(function (response) {
    //    callback(null, JSON.stringify(response.data));
    //  })
};

(具体的格式一般在各个平台的云函数生成时都会有示例代码,只要按照示例代码正常返回值即可)

6. 在控制台新建云函数、提交代码并设置固定时间的触发器(以百度云函数为例)

进入百度智能云控制台,选择“函数计算CFC”

image.png

image.png 时间的填写方式参考下表或百度云官方文档

cron表达式(UTC时间) 解释
cron(0 10 * * ?) 每天上午的 10:00 (UTC) 触发;对应Asia/Shanghai为每天下午18:00执行
cron(30 10 * * ?) 每天上午的 10:30 (UTC) 触发 ;对应Asia/Shanghai为每天下午18:30执行
cron(10,11,12 * * * ?) 每小时的10分,11分,12分(UTC) 触发
cron(0 8 1 * ?) 每月第 1 天的上午 8:00 (UTC) 触发;对应Asia/Shanghai为每月第 1 天的下午16:00执行
cron(0/10 * * * ?) 每10分钟 (UTC) 触发
cron(0/10 8-10 ? * MON-FRI) 每星期一到星期五的上午 8:00 和 10:00 (UTC) 之间,每10分钟触发一次;对应Asia/Shanghai为每星期一到星期五的下午16:00和18:00之间执行,每10分钟触发一次

函数创建完毕之后,进入函数代码,选择“上传函数.zip包”,压缩刚才的代码文件并上传:

image.png

上传成功后,你也可以点击测试手动触发一次来查看签到是否成功。
到此为止,自动签到就完成了!等着第二天查看成果吧!
【注意】 部分cookie可能一段时间(一般至少几个月)会过期,重复步骤1-5重新上传代码即可。

猜你喜欢

转载自juejin.im/post/7124865201442127902
今日推荐