京东叠蛋糕分10亿自动完成任务脚本分享 自动完成任务

  • 作者:admin
  • 分类:活动
  • 发布时间:2020.05.28 15:32
  • 阅读:-

    京东叠蛋糕分10亿自动完成任务脚本分享 一键完成任务

    活动入口在京东APP首页,我们利用脚本可以完成每日任务,为大家节省很多时间

    脚本直接浏览器打开粘贴进去即可使用,无需下载软件之类的

    下面小编介绍下脚本使用


    1.推荐使用chrome浏览器,打开浏览器,按F12选择手机模式

    2.浏览器的 User-Agent 必须包含 jdapp,设置含有jdapp的user-agent,设置完成save后记得选择对应的user-agent

    3.访问 京东移动端网页,点击底部导航栏的【我的】,登录京东账号。


    4.登录完成后,将脚本复制粘贴至console中,直接回车即可,如果任务全部完成,Console 会提示,所以请耐心等待。

    5.任务完成即可去京东APP看效果,有可能存在会漏几个,手动完成即可


    代码如下:

    var MAX_CYCLES = 3;
    var currentCycle = 0;
    
    // 主程序
    var main = (executeNextCycle) => {
      var secretp = "";
      var taskList = [];
    
      // 恢复被覆盖的 alert 函数
      (() => {
        var frame = document.createElement("iframe");
        frame.style.display = "none";
        document.body.appendChild(frame);
        window.alert = frame.contentWindow.alert;
      })();
    
      // 请求函数
      var request = (functionId, body = {}) =>
        fetch("https://api.m.jd.com/client.action", {
          body: `functionId=${functionId}&body=${JSON.stringify(
            body
          )}&client=wh5&clientVersion=1.0.0`,
          headers: {
            "content-type": "application/x-www-form-urlencoded",
          },
          method: "POST",
          credentials: "include",
        });
    
      // 模拟任务完成请求
      var collector = (task, actionType) => {
        console.log(actionType ? "@领取任务:" : "@执行任务:", task);
    
        request("cakebaker_ckCollectScore", {
          taskId: task.taskId,
          itemId: task.itemId,
          actionType: actionType ? 1 : undefined,
          safeStr: JSON.stringify({ secretp }),
        })
          .then((res) => res.json())
          .then((res) => {
            console.log("调用结果:", res.data);
    
            // 如果是执行任务,即任务已经完成,则进行下一个任务
            if (!actionType) {
              start();
            }
          });
      };
    
      // 甄选优品任务处理
      var superiorTask = (() => {
        // 是否有请求正在执行
        var isBusy = false;
    
        return (rawTaskCollection) => {
          var getFeedDetail = (copiedTaskCollection) => {
            request("cakebaker_getFeedDetail", {
              taskIds: copiedTaskCollection["productInfoVos"]
                .map((item) => item.itemId)
                .toString(),
            })
              .then((res) => res.json())
              .then((res) => {
                var result = res.data.result;
    
                // 确认任务集合所在键名
                var taskCollectionContentKeyName = Object.keys(result).find(
                  (keyName) =>
                    /Vos?$/.test(keyName) && !["taskVos"].includes(keyName)
                );
    
                result[taskCollectionContentKeyName].forEach((taskCollection) => {
                  Array(taskCollection.maxTimes - taskCollection.times)
                    .fill(true)
                    .forEach((_, index) => {
                      taskList.unshift({
                        taskName: taskCollection.taskName,
                        taskId: taskCollection.taskId,
                        taskType: taskCollection.taskType,
                        waitDuration: taskCollection.waitDuration,
                        itemId: taskCollection.productInfoVos[index].itemId,
                      });
                    });
                });
    
                // 解除请求锁定
                isBusy = false;
              });
          };
    
          if (!isBusy) {
            isBusy = true;
            getFeedDetail(JSON.parse(JSON.stringify(rawTaskCollection)));
          } else {
            // 2秒后重试
            setTimeout(
              getFeedDetail,
              2000,
              JSON.parse(JSON.stringify(rawTaskCollection))
            );
          }
        };
      })();
    
      // 开始任务
      var start = () => {
        var task = taskList.pop();
    
        if (task) {
          // 除了小精灵和连签外的任务要先领取
          if (!["小精灵", "连签得金币"].includes(task.taskName)) {
            setTimeout(collector, 0, task, true);
          }
          // 至少等 4 秒再执行任务
          setTimeout(collector, (4 + task.waitDuration) * 1000, task);
        } else {
          // 执行下一轮任务
          executeNextCycle();
        }
      };
    
      (() => {
        // 获取基础信息
        Promise.all([
          request("cakebaker_getHomeData"),
          // 请求稍微慢点,避免提示【点太快啦!等下再来吧】
          new Promise((resolve) => {
            setTimeout(() => {
              request("cakebaker_getTaskDetail").then(resolve);
            }, 2000);
          }),
        ])
          .then(([homeData, taskData]) =>
            Promise.all([homeData.json(), taskData.json()])
          )
          .then(([homeData, taskData]) => {
            // 如果无法获取任务详情
            if (taskData.data.bizCode !== 0) {
              if (
                taskData.data.bizCode === -7 &&
                !~navigator.userAgent.indexOf("jdapp")
              ) {
                console.log("当前浏览器 UA:" + navigator.userAgent);
                throw "任务详情获取失败,请确保已设置正确的浏览器 User-Agent。";
              } else {
                throw `【错误信息:${JSON.stringify(taskData.data)}】`;
              }
            }
    
            // 获取签名 token
            secretp = homeData.data.result.cakeBakerInfo.secretp;
    
            // 生成任务队列
            taskData.data.result.taskVos.forEach(async (taskCollection) => {
              // 跳过部分邀请任务
              if (/助力|站队/.test(taskCollection.taskName)) return;
    
              // 针对甄选优品任务的处理
              if (taskCollection["productInfoVos"]) {
                superiorTask(taskCollection);
              }
    
              // 确认任务集合所在键名
              var taskCollectionContentKeyName = Object.keys(taskCollection).find(
                (keyName) =>
                  /Vos?$/.test(keyName) &&
                  !["productInfoVos", "scoreRuleVos"].includes(keyName)
              );
    
              // 某类任务下的任务集合内容
              taskCollectionContent = taskCollection[taskCollectionContentKeyName];
    
              if (!taskCollectionContent) return;
    
              Array(taskCollection.maxTimes - taskCollection.times)
                .fill(true)
                .forEach((_, index) => {
                  taskList.push({
                    taskName: taskCollection.taskName,
                    taskId: taskCollection.taskId,
                    taskType: taskCollection.taskType,
                    waitDuration: taskCollection.waitDuration,
                    itemId:
                      taskCollectionContent instanceof Array
                        ? taskCollectionContent[index].itemId
                        : taskCollectionContent.itemId,
                  });
                });
            });
    
            console.log(taskList);
    
            // 开始任务
            start();
          });
      })();
    };
    
    // 循环执行主程序
    var excuteMain = () => {
        console.log('By:一起活动吧  实时线报群:716299092')
      console.log(
        `正在执行第 ${currentCycle + 1} 轮任务,还有 ${
          MAX_CYCLES - (currentCycle + 1)
        } 轮未执行。`
      );
    
      new Promise(main).then(() => {
        currentCycle++;
    
        if (currentCycle < MAX_CYCLES) {
          excuteMain();
        } else {
          console.log("@任务已完成!");
          alert("任务完成,加群获取更多线报资讯。实时线报群:716299092");
        }
      });
    };
    
    excuteMain();


微信公众号:薅羊毛活动网
小程序转二维码微信机器人:关注公众号回复 转码
点击这里给我发消息
嘿!有什么能为您效劳的吗?