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=201905
2.部署教程
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
函数可以在其他文件中调用。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论