1.购买服务器阿里云:服务器购买地址https://t.aliyun.com/U/mS108v若失效,可用地址
阿里云:
服务器购买地址
https://t.aliyun.com/U/mS108v若失效,可用地址
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.代码如下
/*** 稀土掘金* 填写示例:* export JUEJIN_COOKIE = 'sessionid#uuid=123456&spider=0&msToken=xxxxxx&a_bogus=xxxxxx'* 多账号用换行,不要用 &* const $ = new Env('稀土掘金')* cron: 5 10 * * **/const initScript = require('init')const {$, notify, sudojia, checkUpdate} = initScript('稀土掘金');const jueJinList = process.env.JUEJIN_COOKIE ? process.env.JUEJIN_COOKIE.split(/\n/) : [];let message = '';// 接口地址const baseUrl = 'https://api.juejin.cn';// 请求头const headers = {'Accept': '*/*','Accept-Encoding': 'gzip, deflate, br, zstd',"Content-type": "application/json",'Referer': 'https://juejin.cn/','Origin': 'https://juejin.cn','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',};!(async () => {await checkUpdate($.name, jueJinList);// console.log(`\n已随机分配 User-Agent\n\n${headers['user-agent'] || headers['User-Agent']}`);for (let i = 0; i < jueJinList.length; i++) {const [juejinCookie, urlList] = jueJinList[i].split('#');headers.Cookie = `sid_tt=${juejinCookie}; sessionid=${juejinCookie}; sessionid_ss=${juejinCookie}`;const index = i + 1;console.log(`\n*****第[${index}]个${$.name}账号*****`);if (await checkStatus()) {console.error('Cookie 已失效');await notify.sendNotify(`「Cookie失效通知」`, `${$.name}账号[${index}] Cookie 已失效,请重新登录获取 Cookie\n\n`);continue;}message += `📣====${$.name}账号[${index}]====📣\n`;await $.wait(sudojia.getRandomWait(800, 1200));await main(urlList);await $.wait(sudojia.getRandomWait(2000, 2500));}if (message) {await notify.sendNotify(`「${$.name}」`, `${message}`);}})().catch((e) => $.logErr(e)).finally(() => $.done());/*** 主函数** @returns {Promise<void>}*/async function main(urlList) {await getUserName();await $.wait(sudojia.getRandomWait(2300, 2700));await checkIn(urlList);await $.wait(sudojia.getRandomWait(3000, 3500));await getOreNum(urlList);await $.wait(sudojia.getRandomWait(3000, 3500));await getCount();}/*** 获取用户信息*/async function getUserName() {try {const data = await sudojia.sendRequest(baseUrl + '/user_api/v1/user/get_info_pack?aid=2608', 'post', headers, {"pack_req": {"user_counter": true,"user_growth_info": true,"user": true}});// 用户昵称const userName = data.data.user_basic.user_name;message += `【账号昵称】${userName}\n`;console.log(`【账号昵称】${userName}`);} catch (e) {console.error(`获取用户信息发生异常: ${e.response.data}`);}}/*** 检查状态** @return {Promise<*>}*/async function checkStatus() {const data = await sudojia.sendRequest(baseUrl + '/growth_api/v1/get_today_status', 'get', headers);return 403 === data.err_no;}/*** 签到函数** @returns {*}*/async function checkIn(urlList) {try {// uuid=7402961076386793000&spider=0&msToken=6N7P3ETmcpkVBSBdIEAoOvIE5TlEhnAmt382dbZpa1tNLnKhYR8QkGIKTJINouJxXGwc-JkvcwmUPhinCBGBtXg7ZsNn5LZzJtOpR4PSuRejD4spLQYUJ3tJdEurDng%3D&a_bogus=mX-QkcZ8Msm1Zhvtkhkz9GWEeOm0YWRkgZENqN9HUUo7const data = await sudojia.sendRequest(baseUrl + `/growth_api/v1/check_in?aid=2608&${urlList}`, 'post', headers);if (15001 === data.err_no) {console.log(data.err_msg);message += `【签到信息】${data.err_msg}\n`return;}console.log(`签到成功,获得 ${data.data.incr_point} 矿石`);message += `【签到信息】签到成功, 获得 ${data.data.incr_point} 矿石\n`} catch (e) {console.error(`签到时发生异常: ${e.response.data}`);}}/*** 获取总账号矿石数*/async function getOreNum(urlList) {const data = await sudojia.sendRequest(baseUrl + `/growth_api/v1/get_cur_point?aid=2608&${urlList}`, 'get', headers);console.log(`当前矿石数:${data.data}`);message += `【总矿石数】${data.data} 矿石\n`}/*** 查询免费抽奖次数*/async function queryFreeLuckyDrawCount(urlList) {try {const data = await sudojia.sendRequest(baseUrl + `/growth_api/v1/lottery_config/get?aid=2608&${urlList}`, 'get', headers);// 获取免费抽奖次数return data.data.free_count;} catch (e) {console.error(`查询免费抽奖次数时发生异常: ${e.response.data}`);return 0;}}/*** 统计签到天数*/async function getCount() {const data = await sudojia.sendRequest(baseUrl + '/growth_api/v1/get_counts?aid=2608', 'get', headers);console.log(`已连续签到${data.data.cont_count}天、累计签到${data.data.sum_count}天`);message += `【签到统计】已连续签到${data.data.cont_count}天、累计签到${data.data.sum_count}天\n`}
解析
这脚本自动为稀土掘金进行每日签到,获取矿石奖励,并输出账户昵称、当前矿石数量与签到天数统计。
功能总览:
JUEJIN_COOKIE 环境变量,用换行分隔多个账号 | |
5 10 * * *(每天 10:05) | |
方法说明:
main(urlList)
getUserName()获取用户昵称;checkIn(urlList)执行签到;getOreNum(urlList)查询当前矿石数量;getCount()获取连续与累计签到天数。
getUserName()
作用:通过
/user_api/v1/user/get_info_pack接口获取用户昵称(user_basic.user_name)。请求方式:
POST,附带请求体pack_req。
checkStatus()
作用:检测当前 Cookie 是否有效。
实现方式:请求
/growth_api/v1/get_today_status,若返回403说明已失效。若失效,将发送专门的失效通知(标题为
Cookie失效通知)。
checkIn(urlList)
作用:调用
/growth_api/v1/check_in进行签到。请求参数拼接了
uuid、spider、msToken和a_bogus等参数(urlList变量)。成功返回获得的矿石数,失败返回错误信息(如已签到)。
getOreNum(urlList)
作用:查询当前账户总矿石数,接口为
/growth_api/v1/get_cur_point。
queryFreeLuckyDrawCount(urlList)(未调用)
用于获取免费抽奖次数(备用函数,当前未使用)。
getCount()
作用:获取签到天数统计(连续天数与累计签到天数)。
接口:
/growth_api/v1/get_counts
配置说明:
JUEJIN_COOKIE | sessionid#uuid=...&spider=0&msToken=...&a_bogus=... |
headers.Cookie |
封装说明:
initScript() | $, notify, sudojia 等 |
sudojia.sendRequest() | |
$.wait() | |
notify.sendNotify() |
这是一个为稀土掘金平台编写的签到脚本,支持多账号签到、查询矿石、获取昵称及签到统计,因平台接口防护复杂,需要手动抓取参数组合,仅适用于签到任务。
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论