开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1902|回复: 14
收起左侧

[其它源码] 悦鲜活兑吧token获取

[复制链接]
结帖率:93% (25/27)
发表于 2024-8-1 14:53:32 | 显示全部楼层 |阅读模式   河北省唐山市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -
[Python] 纯文本查看 复制代码
import requests
import time
import execjs
import urllib3
import re
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
import json
from urllib.parse import quote

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
proxies = {"http": None, "https": None}
global_cookies = {}


def get_token_key():
    headers = {
        "Accept": "*/*",
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Cache-Control": "no-cache",
        "Connection": "keep-alive",
        "Pragma": "no-cache",
        "Referer": "https://duiba.ioutu.cn/projectx/p009ae4a7/index.html?appID=96109&from=login&spm=96109.1.1.1",
        "Sec-Fetch-Dest": "script",
        "Sec-Fetch-Mode": "no-cors",
        "Sec-Fetch-Site": "same-origin",
        "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Mobile Safari/537.36",
        "sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
        "sec-ch-ua-platform": "\"Android\""
    }
    url = "https://duiba.ioutu.cn/projectx/p009ae4a7/getTokenKey"
    params = {"_t": int(time.time() * 1000)}
    try:
        response = requests.get(url, headers=headers, cookies=global_cookies, params=params, proxies=proxies,
                                verify=False)
        return response.text
    except Exception as e:
        print('get_token_key', e)
        return False


def get_token():
    headers = {
        "Accept": "*/*",
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Cache-Control": "no-cache",
        "Connection": "keep-alive",
        "Pragma": "no-cache",
        "Referer": "https://duiba.ioutu.cn/projectx/p009ae4a7/index.html?appID=96109&from=login&spm=96109.1.1.1",
        "Sec-Fetch-Dest": "script",
        "Sec-Fetch-Mode": "no-cors",
        "Sec-Fetch-Site": "same-origin",
        "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Mobile Safari/537.36",
        "sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
        "sec-ch-ua-platform": "\"Android\""
    }
    url = "https://duiba.ioutu.cn/projectx/p009ae4a7/getToken"
    params = {"_t": int(time.time() * 1000)}
    try:
        response = requests.get(url, headers=headers, cookies=global_cookies, params=params, proxies=proxies,
                                verify=False)
        return response.json()
    except Exception as e:
        print('get_token', e)
        return False


def get_token_value(key):
    # 获取token
    ret = get_token()
    if not ret:
        return False
    JavaScriptText = ret['data']
    context = execjs.compile(f'var window = {{}}; {JavaScriptText}')
    token = context.eval(f'window.{key}')
    if token:
        return token
    else:
        return False


def game_start(token):
    url = "https://duiba.ioutu.cn/projectx/p009ae4a7/game/start.do"
    t = int(time.time() * 1000)
    querystring = {"_t": t}

    payload = f"gameType=sword&token={token}&user_type=1&is_from_share=1&_t={t}"
    headers = {
        "Host": "duiba.ioutu.cn",
        "Connection": "keep-alive",
        "Content-Length": "74",
        "User-Agent": "Mozilla/5.0 (Linux; Android 11; M2002J9E Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.187 Mobile Safari/537.36 XWEB/1260075 MMWEBSDK/20231201 MMWEBID/4339 MicroMessenger/8.0.45.2521(0x28002D3D) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 miniProgram/wxaf5dbe4074f72919",
        "Content-Type": "application/x-www-form-urlencoded",
        "Accept": "*/*",
        "Origin": "https://duiba.ioutu.cn",
        "X-Requested-With": "com.tencent.mm",
        "Referer": "https://duiba.ioutu.cn/projectx/p009ae4a7/index.html?appID=96109&from=login&spm=96109.1.1.1",
        "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"
    }
    try:
        response = requests.request("POST", url, data=payload, headers=headers, params=querystring,
                                    cookies=global_cookies, proxies=proxies)
        return response.json()
    except Exception as e:
        print('game_start', e)
        return False


def game_submit(token, param, t):
    url = "https://duiba.ioutu.cn/projectx/p009ae4a7/game/submit.do"
    querystring = {"_t": t}

    payload = f"param={quote(param)}&token={token}&user_type=1&is_from_share=1&_t={t}"
    headers = {
        "Host": "duiba.ioutu.cn",
        "Connection": "keep-alive",
        "Content-Length": "186",
        "User-Agent": "Mozilla/5.0 (Linux; Android 11; M2002J9E Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.187 Mobile Safari/537.36 XWEB/1260075 MMWEBSDK/20231201 MMWEBID/4339 MicroMessenger/8.0.45.2521(0x28002D3D) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 miniProgram/wxaf5dbe4074f72919",
        "Content-Type": "application/x-www-form-urlencoded",
        "Accept": "*/*",
        "Origin": "https://duiba.ioutu.cn",
        "X-Requested-With": "com.tencent.mm",
        "Referer": "https://duiba.ioutu.cn/projectx/p009ae4a7/index.html?appID=96109&from=login&spm=96109.1.1.1",
        "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7"
    }
    try:
        response = requests.request("POST", url, data=payload, headers=headers, params=querystring,
                                    cookies=global_cookies, proxies=proxies)
        return response.json()
    except Exception as e:
        print('game_submit', e)
        return False


def decrypt(data: str, key: bytes, iv: bytes) -> bytes:
    aes = AES.new(key, AES.MODE_CBC, iv)
    res = aes.decrypt(base64.b64decode(data))  # 解密操作
    res = res.rstrip(b'\x00')  # 去除填充
    return res


def encrypt(data: dict, key: bytes, iv: bytes) -> str:
    dataByte = pad(json.dumps(data, separators=(',', ':')).encode('utf-8'), AES.block_size)
    aes = AES.new(key, AES.MODE_CBC, iv)
    encrypt_data_byte = aes.encrypt(dataByte)
    result = base64.b64encode(encrypt_data_byte)
    return result


def process():
    score = 300  # 游戏分数
    iv = b'cDOiBC1n2QrkAY2P'
    aeskey = b'1696BD3E5BB915A0'

    # 获取key
    JavaScriptText = get_token_key()
    context = execjs.compile(JavaScriptText)
    FunctionString = context.eval('ohjaiohdf.toString()')
    match = re.search(r"var key = '([^']+)';", FunctionString)
    if match:
        key = match.group(1)
        print(key)
    else:
        print('匹配失败')
        return False

    # 开始游戏
    token = get_token_value(key)
    res = game_start(token)
    if not res or not res['success']:
        print('开始游戏失败', res)
        return False
    print('开始游戏成功')

    # 解密返回
    dataByte = decrypt(res['data'], aeskey, iv)
    recordId = json.loads(dataByte)['recordId']

    # 提交延迟
    time.sleep(30)

    # 构造参数
    token = get_token_value(key)
    t = int(time.time() * 1000)
    payload = {"recordId": recordId, "timestamp": t, "score": score, "gameType": "sword"}
    # 加密
    param = encrypt(payload, aeskey, iv)

    # 提交游戏
    ret = game_submit(token, param, t)
    print('结束游戏', ret)


if __name__ == '__main__':
    process()


签到天数: 13 天

发表于 2024-8-27 19:30:04 | 显示全部楼层   新疆维吾尔自治区石河子市

支持开源~!感谢分享
回复 支持 反对

使用道具 举报

发表于 2024-8-27 00:50:07 | 显示全部楼层   广东省河源市
牛逼 支持开源~!感谢分享
回复 支持 反对

使用道具 举报

签到天数: 7 天

发表于 2024-8-6 11:34:22 | 显示全部楼层   浙江省温州市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 18 天

发表于 2024-8-5 11:43:43 | 显示全部楼层   广东省汕头市
感谢大神分享~!
回复 支持 反对

使用道具 举报

结帖率:73% (8/11)

签到天数: 25 天

发表于 2024-8-3 12:56:05 | 显示全部楼层   河南省焦作市
悦鲜活兑吧token获取
回复 支持 反对

使用道具 举报

签到天数: 27 天

发表于 2024-8-3 09:38:18 | 显示全部楼层   浙江省宁波市
感谢分享,支持开源!!!
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 18 天

发表于 2024-8-2 15:03:41 | 显示全部楼层   广东省汕头市
感谢大神分享~!
回复 支持 反对

使用道具 举报

签到天数: 29 天

发表于 2024-8-2 10:14:27 | 显示全部楼层   广东省揭阳市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)

签到天数: 25 天

发表于 2024-8-2 09:03:17 | 显示全部楼层   广西壮族自治区玉林市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表