利用云函数进行自动签到(有手就行) nodejs+serverless云函数
【工具】
- 免费的云函数服务(阿里云、百度云)
- Chrome、FireFox或者一切可以打开控制台的浏览器(用于捕捉请求)
- Postman(用于一键生成请求代码)
- nodejs(如果不在本地调试而是直接在云函数端调试则无需安装)
【流程】
- 进入签到页面
- 打开浏览器控制台执行签到请求
- 获取请求的curl
- 到postman页面生成nodejs代码
- 生成package.json并根据对应平台的云函数格式调整nodejs代码
- 在控制台新建云函数、提交代码并设置固定时间的触发器
- 完成并点赞!
【详情】
1、进入签到页面
选择你要自动签到的网页打开,这里使用某论坛的打卡签到(切记先不要点击!否则没法捕捉到请求了):
2、打开浏览器控制台执行签到请求
打开浏览器控制台(一般就是F12),点netwrok或网络标签:
这里要注意两点:
- 勾选上“保留日志”或“preserve log”,避免页面跳转当前页请求消失
- 如果下面列表中已经存在之前的请求的,点击清除按钮清除之前的请求,避免跟要捕捉的签到请求混淆
然后进行签到操作,此时列表里就会出现签到的请求了(一般都是第一个请求,因为加载了图片或跳转页面会出现多个请求,这个就只能自己通过地址名称、响应内容进行甄别了):
3、获取请求的curl
在刚才的请求上单击右键,选择复制-以cURL(bash)copy格式复制: (英文版是copy-Copy as cURL(bash))
注意:这个代码里包含着你账号的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,粘贴刚才的代码点击确定:
这时候请求就直接导入到postman中了(你也可以点击send发送请求进行测试):
点击右侧代码样式的按钮:
其中就可以生成各个语言下的签到请求代码,可以随意挑选,这里用我比较熟悉的axios框架为例:
5、生成package.json并根据对应平台的云函数格式调整nodejs代码
axios需要运行在nodejs下并且需要安装依赖,安装nodejs的步骤就不说了,直接新建文件夹,在控制条中执行下面的代码:
npm init -y
npm install axios
创建index.js文件,粘贴刚才postman中生成的代码,也可以在控制台输入node index.js发送请求进行测试:
这时候,签到请求的代码就完成了,但是要放到云函数上的时候还要做一点修改,以百度云函数为例:
exports.handler = (event, context, callback) => {
// 这里放进去你生成的代码即可
callback(null, "Hello world!");
// 当然如果想查看接口返回信息的话可以把callback方法写在请求的回调中,第二个参数替换成接口的回调:
// axios(config)
// .then(function (response) {
// callback(null, JSON.stringify(response.data));
// })
};
(具体的格式一般在各个平台的云函数生成时都会有示例代码,只要按照示例代码正常返回值即可)
6. 在控制台新建云函数、提交代码并设置固定时间的触发器(以百度云函数为例)
进入百度智能云控制台,选择“函数计算CFC”
时间的填写方式参考下表或百度云官方文档:
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包”,压缩刚才的代码文件并上传:
上传成功后,你也可以点击测试手动触发一次来查看签到是否成功。 到此为止,自动签到就完成了!等着第二天查看成果吧! 【注意】 部分cookie可能一段时间(一般至少几个月)会过期,重复步骤1-5重新上传代码即可。
转载自:https://juejin.cn/post/7124865201442127902