以吾爱破解的方式打开海底挖矿

3,030 阅读3分钟

每天挖矿,说实话,太累了,特别是经历过10月份的挖矿,后来发现,大家都是在用postman再跑,才意识到这就是前端调用接口啊

先看看我做的页面吧(摸鱼)

image.png

长话短说,开始看看调用了哪些接口

1、接口

通过token获取基本信息,

image.png 这里可以拿到后面需要的uid;

image.png

开始(选角色)

/* 开始 */
/**
 *
 * @param {*} params { roleId: 3 }
 * @param {*} uid
 * @param {*} time
 * @returns
 */
export function start(params, uid, time) {
  return request({
    url: `/game/sea-gold/game/start?uid=${uid}&time=${time}`,
    method: "post",
    data: params,
  });
}

发出指令

/**
 * 发布指令
 * @param {*} params
 * @param {*} uid
 * @param {*} time
 * @returns
 */
export function command(params, uid, time, xGameId) {
  return request({
    url: `/game/sea-gold/game/command?uid=${uid}&time=${time}`,
    method: "post",
    data: params,
    headers: {
      "Content-Type": "application/json;charset=UTF-8",
      "x-tt-gameid": xGameId,
    },
  });
}

结束游戏

/**
 * 结束
 * @param {*} params {"isButton":1}
 * @param {*} uid
 * @param {*} time
 * @returns
 */
export function over(params, uid, time) {
  return request({
    url: `/game/sea-gold/game/over?uid=${uid}&time=${time}`,
    method: "post",
    data: params,
  });
}

更换地图(点击重新开始后再点击开始)

/**
 * 换图重来
 * @param {*} params {}
 * @param {*} uid
 * @param {*} time
 * @returns
 */
export function freshMap(params, uid, time) {
  return request({
    url: `/game/sea-gold/game/fresh_map?uid=${uid}&time=${time}`,
    method: "post",
    data: params,
  });
}

彩蛋(已不在活动时间内)

获取游戏记录

/**
 * 获取历史记录
 * @param {} uid
 * @param {*} time
 * @returns
 */
export function getRecord(uid, time) {
  return request({
    url: `/game/sea-gold/user/record?uid=${uid}&time=${time}`,
    method: "get",
  });
}

image.png

2、调用

我们发现所有接口必须要token以及两个查询参数: time以及uid,基本上可以调用成功,time直接是本地时间戳就可以了

const time = +new Date().getTime()

但是唯独发出指令的接口,也就是步骤需要x-game-id; 在《图解http》(我购买了纸质书,下面截图为pdf)一书中,有如下描述

image.png

image.png

所以说,我必须知道x-game-id是怎么来的? 我在以前的沸点中,是通过向上走一步,获取到x-game-id,再用postman调用,有点麻烦!!!

image.png

有人告诉我加密方式,突然知道了怎么搞,一直没有时间去想,后来出了圣诞活动,决定花点时间(摸鱼)搞下 image.png

1、先打开控制台,然后再打开游戏;

在NetWork中我们可以知道这个js文件,它就是执行脚本的主要文件 不要问我怎么找的,就是一个一个看

image.png

2、我们点击格式化

image.png

3、然后搜索gameID

定位到这段相关的代码后,我们了解到这就是我们要的加密方式: image.png

4、搜索ES256

jsonwebtoken

image.png

ok了,这下我们就可以自己去调用了

image.png 问题又来了,time是当前时间戳,可是gameID是什么东西,刚开始我以为是uid,在postman试了下,不出意外,报错了 人总是到关键时刻,把自己绕进去了,都忘记打断点了

在network——这个文件中,点击右键——Open in Sources Panel

来试试强大的debugger吧,js文件过大,浏览器卡死

js文件过大,浏览器卡死

js文件过大,浏览器卡死

。。。。。。。

清了其他文件

可以了(垃圾电脑)

image.png

可以看到gameId是时间,可是这是哪里来的,

我们在开始的接口中,可以看到返回的gameId,自此我们可以实现自己去调用游戏接口了

image.png

5、彩蛋

活动已结束

3、总结

按照现有的逻辑是可以再github action自动跑的,但是我暂时没有处理(懒)

另外,代码暂时就不贴出来了,吾爱破解现在也是不发破解的东西了,只做分析,

圣诞活动让我从24万矿石,到了42万了,距离兑换游戏机还差14万。。。。 image.png

4、TODO

后续会放在github,然后使用action跑代码