阿里云:
服务器购买地址
https://t.aliyun.com/U/C6sVsb若失效,可用地址
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 { username,password } = config.linovelheaders = {referer: "https://www.linovel.net/my/profile","user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36","x-requested-with": "XMLHttpRequest",cookie: " "}function get(op, data) {return new Promise(async (resolve) => {try {let url = `https://www.linovel.net/my/${op}?xhr=1`;let res = await axios.get(url, {headers});if (data) res = await axios.post(op, data, {headers});if (res.data.code == 0) {msg = res.data.msgif (op == "qiandao") msg = `签到成功✅ 获得${res.data.data.base}墨水,连签${res.data.data.day}天`;if (op == "getMonthlyTicket") msg = `领取月票成功✅ 获得${res.data.data.now}月票`;} else {msg = res.data.msg}if (data) {ckk = res.headers["set-cookie"];ck = "";for (i = 0; i < ckk.length; i++) {ck += ckk[i].split("expires")[0] + ";"}headers.cookie = ck}resolve(msg)} catch (err) {console.log(err);resolve("签到接口请求出错")}resolve();});}async function login(kotori) {let loginRes = await get("https://www.linovel.net/auth/doLogin", `_kotori=${kotori}&lgt=1&redirect=%2F&username=${username}&password=${password}`)console.log(loginRes)if (loginRes == "登录成功") gg = trueelse gg = falsereturn gg}function getkotori() {return new Promise(async (resolve) => {try {let res = await axios.get("https://www.linovel.net/auth/login?lgt=1")let t = res.data.match(/\"_kotori\" value=\"(.+?)\"/)resolve(t && t[1])} catch (err) {// console.log(err);resolve()}resolve();});}async function linovel() {r = falselet kotori = await getkotori()if (kotori) r = await login(kotori)if (r) {let qdmsg = await get("qiandao")let ypmsg = await get("getMonthlyTicket")let Liresult = `【轻之文库】:\n签到:${qdmsg}\n领取月票:${ypmsg}`return Liresult} else return "【轻之文库】:登陆失败"}module.exports = linovel;
解析
这脚本用于轻之文库的网站自动化登录、签到和领取月票脚本。并且利用axios库来发送HTTP请求。
get(op, data):
该函数是一个通用的HTTP请求处理函数,用于发送GET或POST请求。 参数 op代表操作类型,用于构建URL路径。如果data存在,则发送POST请求;否则发送GET请求。函数根据操作类型 op(如"qiandao"、"getMonthlyTicket")调整返回的消息格式。如果请求中返回了cookie,该函数还会更新请求头中的cookie信息,以维持会话状态。 函数处理请求的结果,并返回相应的消息。 login(kotori):
该函数用于处理登录操作。它首先调用 get函数发送登录请求。参数 kotori是一个动态获取的安全令牌,用于增强登录安全性。根据登录结果更新全局变量 gg(可能是用于控制流程的标志),并返回登录是否成功的布尔值。getkotori():
这个函数用于从登录页面获取安全令牌 _kotori,该令牌通常用于防止跨站请求伪造(CSRF)。它通过解析登录页面的HTML内容来获取 _kotori值。如果成功获取到令牌,返回该令牌;否则返回空。 async function linovel():
这是模块的主控制函数,用于协调整个自动化过程。 它首先尝试获取 _kotori令牌,然后尝试使用该令牌登录。如果登录成功,它会继续执行签到和领取月票的操作,并格式化这些操作的结果为一段消息。 如果登录失败,返回一个表示登录失败的消息。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论