签到这么多天了,攒了不少矿石,苦于官方一直不放出连抽方式,单抽又不出奇迹,欧皇未能眷顾我
索性自行开发一个,本脚本由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()
修改参数
执行文件
在当前文件目录中,执行以下命令
python juejinGamble.py
效果
奖品拿来吧你
中奖分析
钻石总数:4000 抽奖次数:20 次
66矿石:10 Bug:10
初步结论:连抽情况下抽到 66矿石概率为 50%,抽到Bug的概率为 50%。
再次测试 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----------