掘金抽奖【矿石换矿石】脚本

本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。

本文评论区已加入抽奖豪华套餐,详情见文末~

前言

授人以鱼不如授人以渔,我们手里存着一个抽奖的代码,倒不如想明白这玩意怎么写的

因为提桶跑路,存公司电脑上的谷歌浏览器上的抽奖代码忘了拉下来,刚好现在也攒了巨额的矿(指 1w),同时被撩拨的有点心动,可惜没有艾特的功能,只能点名批评

image.png

fetch 何方神圣

之前使用的脚本,里面模拟请求用的 fetch(),效果类似于 ajax 异步请求数据,但 fetch() 会返回一个 promise 对象

阅读这篇博客 fetch使用的常见问题及解决办法,可以了解到,fetch() 算是 js 的新特性,意味着存在因浏览器版本较低而不被识别到的风险

附上一个通用的请求模版

fetch(url [, config]).then(function(response) {
 // 初次处理,返回一个包装好的 Promise 对象,我们将它扔到 then 里面解构出 Promise 携带的值
  return response.json();
}).then(function(data) {
 // 在这里处理请求返回的值
  console.log(data);
}).catch(function(e) {
 // 在这里捕获请求出现的异常
  console.log("Oops, error");
});
复制代码

抽奖请求分析

pc 上登录后,打开我们的 抽奖页面,开 f12,点开网络的选项卡,清空多余的请求数据,将请求的类型,限定为 fetch/XHR

图片.png

点击抽奖后,我拿到了自己的抽奖链接 https://api.juejin.cn/growth_api/v1/lottery/draw?aid=2608&uuid=6911658697077982728

图片.png

然后,我们用这个 url 去替换上面的 fetch 模版,再扔控制台跑一遍测试看下效果

图片.png

喜提 404,仔细对比,发现这个请求是 POST 格式,我们添加一下配置,继续提交

图片.png

提示我们未登录,那就仔细看看原来的 https 请求里的参数是怎么回事。

本来想右键链接 Replay XHR,结果发现可以 copy 这个请求,甚至是 copy as fetch

图片.png

那么事情就简单了,我们基于这个 fetch 的数据,加上 await 变成同步请求,在外边包装一层,一直遍历,直到请求失败。同时,我们对这个代码块用 {} 包裹起来,封闭自定义变量的作用域

效果如下

图片.png

成品源码

{
  let flag = true;
  for (; flag;) {
    await fetch("https://api.juejin.cn/growth_api/v1/lottery/draw?aid=2608&uuid=7016487434494658063", {
      "headers": {
        "accept": "*/*",
        "accept-language": "zh-CN,zh;q=0.9",
        "content-type": "application/json",
        "sec-ch-ua": "\"Chromium\";v=\"94\", \"Google Chrome\";v=\"94\", \";Not A Brand\";v=\"99\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-site"
      },
      "referrer": "https://juejin.cn/",
      "referrerPolicy": "strict-origin-when-cross-origin",
      "body": "{}",
      "method": "POST",
      "mode": "cors",
      "credentials": "include"
    }).then(function(response) {
      return response.json();
    }).then(data => {
      if (data.err_msg == 'success') {
        console.log(data.data.lottery_name);
      } else {
        flag = false;
      }
    })
  }
}
复制代码

使用方式

开 f12 直接往控制台一扔就行了,谷歌浏览器支持保存为代码块,下次需要使用了,直接右键对应的脚本 run 就好了

图片.png

我不确定 xdm 的 aid 和 uuid 是否通用,建议还是走一遍请求,然后手动替换掉这个 url 即可


觉得 nice 的 xdm 来评论区留言支持一下丫~

欢迎在评论区讨论,掘金官方将在掘力星计划活动结束后,在评论区抽送100份掘金周边,抽奖详情见活动文章

猜你喜欢

转载自juejin.im/post/7017274479277506590