我用80行核心JS代码每个月躺着挣一瓶肥宅快乐水

今年520活动和618活动开始的时候,京东的京豆签到福利很大,动不动就是1020个京豆,看的小编是激动不已。

接下来小编给大家分享一下自动领京豆的JS代码思路,核心代码只需要80行,就可以在Node端成功领取京豆啦!

重要声明:本文只分享自动脚本的思路和部分核心代码逻辑,旨在帮助大家更好的学习Node端技术云函数的相关知识。为了规避相关风险,文章内并不会直接提供源码,思路实现有困难的小伙伴可以咨询小编帮助~

重要声明:少量刷京豆可以怡情,挣几个硬币。不要利用相关技术从事商业活动呦!

如果这篇文章能给您带来一点点的帮助的话,麻烦移动下鼠标点个❤️赞❤️吧!您的点赞会给笔者带来更新的持续动力!

Step.1 身份验证–获取用户cookie

显然第一步我们先要获取我们的用户信息才能每次用脚本自动签到。作为JS前端开发人员,大家都知道用户信息一般都会存储在cookie中(京东的cookie有效时间为30天)。接下来我们只需要登录移动版m.jd.com,通过用户名和密码登录(切记),登录完成之后我们就可以在接口找到request请求携带的cookie,如下图所示:

我们只要登录完成之后,取出request头里的必要cookie值即可,第一步已经完成了,是不是很简单呢!⭐️

Step.2 服务端发送自动签到接口

拿到cookie之后,我们只需要找到签到领取京豆的相关接口,把cookie按照正确的格式传过去就好啦!代码也很简单(每一行都有注释哦):

const request = require('request');
//步骤一种的cookie值
const KEY = 'pt_pin=xxxxx;pt_key=xxxxx;';
// post通用函数
const postMethod = (options, callback) => {// 补上通用的headersoptions.headers['User-Agent'] = 'JD4iPhone/167169 (iPhone; iOS 13.4.1; Scale/3.00)'if (options.body) {options.headers['Content-Type'] = 'application/x-www-form-urlencoded'}request.post(options, (error, response, body) => {callback(error, response, body)})
}
//先去查询用户基本情况 预签到接口
// key:活动关键字 用去区分多种活动title: 活动标题 acData: 活动编码ask:加密活动秘钥(非必须) 
function JDUserSignPre(key, title, acData, ask) {return new Promise((resolve, reject) => {const JDUrl = {url: 'https://api.m.jd.com/?client=wh5&functionId=qryH5BabelFloors',headers: {Cookie: KEY},//京东接口要求的业务字段 需要去自行爬接口哦opts: {'filter': 'try{var od=JSON.parse(body);var params=(od.floatLayerList||[]).filter(o=>o.params&&o.params.match(/enActK/)).map(o=>o.params).pop()||(od.floorList||[]).filter(o=>o.template=="signIn"&&o.signInfos&&o.signInfos.params&&o.signInfos.params.match(/enActK/)).map(o=>o.signInfos&&o.signInfos.params).pop();var tId=(od.floorList||[]).filter(o=>o.boardParams&&o.boardParams.turnTableId).map(o=>o.boardParams.turnTableId).pop();var page=od.paginationFlrs;return JSON.stringify({qxAct:params||null,qxTid:tId||null,qxPage:page||null})}catch(e){return `=> 过滤器发生错误: ${e.message}`}'},//京东接口要求的业务字段 需要去自行爬接口哦body: `body=${encodeURIComponent(`{"activityId":"${acData}"${ask ? `,"paginationParam":"2","paginationFlrs":"${ask}"` : ``}}`)}`};postMethod(JDUrl, async function (error, response, data) {try {if (error) {throw new Error(error)} else {const resultData = JSON.parse(data || '{}');if (data.match(/enActK/)) { // 含有签到数据console.log(`${title}活动查询成功,含有签到数据, 此处可以集中存储${key}用于统一统计活动情况`);const params = resultData.qxAct || (resultData.floatLayerList || []).filter(o => o.params && o.params.match(/enActK/)).map(o => o.params).pop()resolve({params: params}); // 执行签到处理}}} catch (eor) {reject()}})})
}
//签到接口
function JDUserSign(title, body) {const JDUrl = {url: 'https://api.m.jd.com/client.action?functionId=userSign',headers: {Cookie: KEY},body: `body=${body}&client=wh5`};postMethod(JDUrl, function (error, response, data) {try {if (error) {throw new Error(error)} else {// 签到成功!if (data.match(/签到成功/)) {console.log(`\n${title}签到成功(1)`)if (data.match(/\"text\":\"\d+京豆\"/)) {const count = data.match(/\"text\":\"(\d+)京豆\"/)[1];console.log('成功领取京豆数量为:' + count);}} else {console.log('签到失败')}}} catch (err) {console.log(err);}})
}

// 正式开始执行签到
const key = 'JDComputer';
const title = '京东电脑-数码';
const acData = '31HbNBjr6YLyZfJtR5biFFc9ZYXN';
JDUserSignPre(key, title, acData).then(checkRes => {JDUserSign(title, checkRes)
}).catch(err => {console.log('预查询活动是否可以签到失败', err);
}) 

这样我们只需要80行代码就完成了第一个签到领京豆接口。所有的活动acData都可以在活动H5页面接口中找到。

其他活动可以自己去寻找哦~~

Step.3 云函数自动触发接口调用,躺着喝快乐水!

阿里云函数提供了非常完备的底层接口,上层的使用比较简单快捷。参考云函数文档基础上,配置好入口函数main.js和配置好定时触发器,即可实现定时调用setp2步骤中的接口。从而达到躺着签到攒京豆的目的!!

另外,还是要注意一下几点即可完成一个云函数搭建:

1、如果需要查询签到的活动接口很多,接口超时时间需要设置成最大900s。

2、Node环境版本号版本号要选择14+。

3、定时触发器的cron表达式为: CRON_TZ=Asia/Shanghai 0 30 1 * * *

贴上步骤图:

Step.4 (附加) 将接口调用情况发送到微信

虽然前面三个步骤,我们已经完成了定时调用接口签到领取京豆,已经可以达到目的。但是随着cookie过期或者其他不可抗力因素,难免会存在接口调用失败的情况,那么我们怎么能知道接口调用成功了呢? 答案就是:

通过特定公众号开发的消息接口,云函数服务端对接特定公众号的接口,从而达到发送消息的目的。

小编推荐使用Server酱微信通知,使用方法也比较简单:

1、打开 sc.ftqq.com/3.version 按要求绑定微信推。

2、打开sc.ftqq.com/?c=code获取含有用户信息的消息秘钥scretKey

3、用get请求(可以在浏览器直接访问)发送[sc.ftqq.com/ s c r e t K e y … ] ( h t t p s : / / l i n k . j u e j i n . c n / ? t a r g e t = h t t p s {scretKey}…](https://link.juejin.cn/?target=https%3A%2F%2Fsc.ftqq.com%2F%24%257BscretKey%257D.send%3Ftext%3D%25E4%25B8%25BB%25E4%25BA%25BA%25E6%259C%258D%25E5%258A%25A1%25E5%2599%25A8%25E5%258F%2588%25E6%258C%2582%25E6%258E%2589%25E5%2595%25A6 "https://sc.ftqq.com/ scretKey](https://link.juejin.cn/?target=https%7BscretKey%7D.send?text=%E4%B8%BB%E4%BA%BA%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8F%88%E6%8C%82%E6%8E%89%E5%95%A6") 即可完成消息发送!

Step.5 写在最后

完成以上步骤 即可自由的实现京豆签到喽! 各位读者可以顺着小编的思路进行代码开发,也可以去寻找网络上现成的源码资源哦~ 最后欢迎各位一起讨论,一起愉快的躺着喝肥宅快乐水!!

302b0857799cf5e534b~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?" style=“margin: auto” />

如果这篇文章能给您带来一点点的帮助的话,麻烦移动下鼠标点个❤️赞❤️吧!您的点赞会给笔者带来更新的持续动力!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340