剑网3推栏抓包所获得的API缺少参数

问题遇到的现象和发生背景

各位好,我正在尝试用抓包,获取剑网3推栏的一些信息,但是目前,根据我获得的API,请求过去貌似还缺少一些参数。

遇到的现象和发生背景,请写出第一个错误信息

缺少sign参数,目前尚未找到解决方案。

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
import datetime
import hashlib
import hmac
import json
import httpx

def format_body(data: dict) -> str:
    return json.dumps(data, separators=(',', ':'))


def gen_ts() -> str:
    return f"{datetime.datetime.now():%Y%m%d%H%M%S%f}"[:-3]


def gen_xsk(data: str) -> str:
    data += "@#?.#@"
    secret = "MaYoaMQ3zpWJFWtN9mqJqKpHrkdFwLd9DDlFWk2NnVR1mChVRI6THVe6KsCnhpoR"
    return hmac.new(secret.encode(), msg=data.encode(), digestmod=hashlib.sha256).hexdigest()

async def post_url(url, proxy: dict = None, headers: str = None, timeout: int = 300, data: dict = None):
    async with httpx.AsyncClient(proxies=proxy, follow_redirects = True) as client:
        resp = await client.post(url, timeout = timeout, headers = headers, data = data)
        result = resp.text
        return result

async def get_arena_data(token: str) -> dict:
    param = {
        "gameVersion":0,
        "forceId":-1,
        "zone": "",
        "server": "",
        "ts": gen_ts()
    }
    param = format_body(param)
    device_id = token.split("::")[1]
    headers = {
        'Host': 'm.pvp.xoyo.com',
        'accept': 'application/json',
        'deviceid': device_id,
        'platform': 'ios',
        'gamename': 'jx3',
        'clientkey': '1',
        'cache-control': 'no-cache',
        'apiversion': '1',
        'sign': 'true',
        'token': token,
        'Content-Type': 'application/json',
        'Connection': 'Keep-Alive',
        'User-Agent': 'SeasunGame/178 CFNetwork/1240.0.2 Darwin/20.5.0',
        "x-sk": gen_xsk(param)
    }
    data = await post_url(url="https://w.pvp.xoyo.com/api/h5/parser/cd-process/get-by-role", data=param, headers=headers)
    return json.loads(data)

if __name__ == "__main__":
    import asyncio
    token = input()
    ans = asyncio.run(get_arena_data(token))
    print(ans)

代码大部分来自https://github.com/subservers/tuilan

运行结果及详细报错内容

提示{'code': -200, 'msg': 'signature not match', 'data': None},应该是缺少了sign参数,但是抓包没有找到该参数。

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%

我尝试着在抓包记录中搜索该sign值,但是我发现,前面的抓包记录中完全没有出现过该字符串。

我又在互联网上尝试了Base64等解密工具,但是仍然未获得答案。

顺便说一下,抓包是从登录(登录前)到获取团本cd这一阶段,使用的是HttpCanary修改过证书的推栏。

我在我的机器人https://inkar-suki.codethink.cn/get_jx3_token.html中给出了下载链接,欢迎各位尝试。

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

希望能解答sign的获取来源,如果我描述的不够准确,可以在下方留言,感谢!