(什么?欧皇未能眷顾我)不知道我还有系统在手吧?奖品拿来吧你

1,393 阅读2分钟

签到这么多天了,攒了不少矿石,苦于官方一直不放出连抽方式,单抽又不出奇迹,欧皇未能眷顾我

索性自行开发一个,本脚本由python实现,文章下方有JS版本

食用方式:

安装python

官网下载,下一步下一步

cmd命令行,安装库

pip install grequests
pip install xlwt

复制以下代码到,juejinGamble.py的文件中

# 掘金抽奖梭哈脚本
import grequests
import xlwt
import time
import json
import math

cookies = ''  # 你的cookie
Turnpage = 200  # 梭哈矿石数量
# 响应数据
listdata = []
headers = {
    "cookie": cookies,
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36 Edg/91.0.864.48",
    'referer': 'https://juejin.cn/'
}


def err_handler(request, exception):
    print("请求出错")
    print(exception)


def getdata():
    number = math.ceil(Turnpage / 200)
    print('预计%s连抽' % number)
    re = [
        grequests.post('https://api.juejin.cn/growth_api/v1/lottery/draw',
                       headers=headers, timeout=100) for index in range(number)]
    # print(re)
    start = time.time()
    res_list = grequests.map(re, exception_handler=err_handler)
    print('------耗时-------')
    print(time.time() - start)
    print('------耗时-------')
    Cleaningdata(res_list)


def Cleaningdata(res_list):
    global listdata
    for item in res_list:
        res = json.loads(item.text)
        print(res['data'])
        listdata.append(res['data'])

    writeTable(listdata)


def writeTable(listdata):
    # 创建excel工作表
    workbook = xlwt.Workbook(encoding='utf-8')
    worksheet = workbook.add_sheet('sheet1')
    # 写表头
    head = list(listdata[0].keys())
    print(head)
    for i, her in enumerate(head):
        worksheet.write(0, i, label=her)

    for x, obj in enumerate(listdata):
        x += 1
        for index, key in enumerate(head):
            if key in list(obj.keys()):
                worksheet.write(x, index, label=obj[key] or '')  # 写入数据\

    workbook.save('掘金抽奖.xls')
    print('抽奖结果已出,请查看表格文件')


def Turn_the_page():
    print('共%s矿石' % Turnpage)
    getdata()


if __name__ == "__main__":
    Turn_the_page()

修改参数

image.png

执行文件

在当前文件目录中,执行以下命令

python juejinGamble.py

效果

image.png

奖品拿来吧你

中奖分析

image.png

钻石总数:4000 抽奖次数:20 次

66矿石:10 Bug:10

初步结论:连抽情况下抽到 66矿石概率为 50%,抽到Bug的概率为 50%。

Dingtalk_20210802184234.jpg

再次测试 15 次的连抽抽奖概率与测试 20 次的抽奖概率完全不同。

最终结论:连抽情况下中奖概率飘忽不定

JS版本(N连抽版)

小伙伴希望有 JS 版本,特意更新前端的脚本。

使用方式:直接复制粘贴到 js文件内,使用 node xxx.js 就可以运行。祝欧皇附体

const axios = require('axios')

const cookie = ''   // 你的cookies
const mineral = 200 // 你要梭哈的矿石


async function juejin() {
  const arr = []
  const num = Math.floor(mineral / 200)
  for (let i = 0; i < num; i++) {
    arr.push(getdata())
  }
   await Promise.all([...arr])
}

async function getdata() {
  return new Promise(((resolve, reject) => {
    axios({
      method: 'post',
      url: `https://api.juejin.cn/growth_api/v1/lottery/draw`,
      headers: {
        cookie: cookie,
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36'
      }

    }).then(res => {
      console.log(`-----------抽奖成功,抽中:${res.data.data.lottery_name}----------`)
      resolve(res.data.data.lottery_name)
    }).catch(err => {
      console.log(`-----------抽奖出错:${err}--------------`)
      reject({})
    })
  }))
}
juejin()


// -----------抽奖成功,抽中:Bug----------