1.购买服务器
阿里云:
服务器购买地址
https://t.aliyun.com/U/wrtp9T若失效,可用地址
https://www.aliyun.com/activity/wuying/dj?source=5176.29345612&userCode=49hts92d腾讯云:
https://curl.qcloud.com/wJpWmSfU若失效,可用地址
https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=ad201ee2ef3b771157f72ee5464b1fea&from=console华为云
https://activity.huaweicloud.com/cps.html?fromacct=64b5cf7cc11b4840bb4ed2ea0b2f4468&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=2019052.部署教程
3.代码如下
const axios = require('axios');const headers = {'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',"X-Requested-With": "XMLHttpRequest",'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',"cookie": config.hifini.cookie};async function getSign() {const url = 'https://www.hifini.com/sg_sign.htm';try {const res = await axios.get(url, {headers});const sign = res.data.match(/sign = \"(.*?)\";/);return sign[1];} catch (err) {console.error("获取sign出错", err);return null;}}async function task() {const url = 'https://www.hifini.com/sg_sign.htm';const sign = await getSign();if (!sign) return "【HiFiNi每日签到】:签到接口请求出错";try {const res = await axios.post(url, {sign}, {headers});const msg = res.data.message;console.log(msg);return "【HiFiNi每日签到】:" + msg;} catch (err) {console.error("签到接口请求出错", err);return "【HiFiNi每日签到】:签到接口请求出错";}}module.exports = task;
解析
这个脚本是用来自动化HiFiNi网站的每日签到功能。
1. 配置请求头:
使用了
axios发送 HTTP 请求,设置了请求头headers,包括:content-type: 设置请求体类型为application/x-www-form-urlencoded,表明发送的内容是 URL 编码格式。X-Requested-With: 设置为XMLHttpRequest,通常用于表示 AJAX 请求。user-agent: 设置为浏览器的标识,模拟浏览器请求。cookie: 从config.hifini.cookie获取的 cookie,通常包含登录后的会话信息,用于保持会话状态。
2. 获取 sign:
getSign函数通过发送一个GET请求到
https://www.hifini.com/sg_sign.htm页面,获取页面内容并从中提取 sign 字段。
使用
res.data.match(/sign = \"(.*?)\";/)正则表达式来从页面源码中提取sign的值。
3. 签到操作:
task函数首先调用getSign获取sign,如果获取失败,则返回签到失败的消息。获取到
sign后,发送POST请求到同一个 URL,并将sign作为请求数据提交。请求头与之前相同。根据返回的响应,获取
message字段并输出签到结果。
4. 错误处理:
在请求过程中,如果发生错误,会捕获并输出错误信息,同时返回相应的错误提示。
5. 模块导出:
module.exports = task;使得task函数可以在其他文件中调用。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论