米游社
请求头
请求头名 | 说明 | 可能的值 |
---|---|---|
x-rpc-app_version | 米游社版本号 | 2.11.1 |
x-rpc-client_type | 客户端类型(IOS/Android) | 5 |
Cookie | 米游社Cookie,可以通过电脑登录米游社获取 | any |
DS | 生成方式如下 | |
Referer | Referer | https://webstatic.mihoyo.com/ |
User-Agent | Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/2.11.1) |
DS加密方式
#python实现
def generate_cn_ds(body: Any = None, query: Mapping[str, Any] = None) -> str:
'''
Body: POST请求
query: GET请求
'''
t = int(time.time())
r = random.randint(100001, 200000)
b = json.dumps(body) if body else
q = &.join(f{k}={v} for k, v in sorted(query.items())) if query else
h = hashlib.md5(fsalt={CN_DS_SALT}&t={t}&r={r}&b={b}&q={q}.encode()).hexdigest()
return f{t},{r},{h}
API
米游社ID查询玩家信息
GET
https://api-takumi-record.mihoyo.com/game_record/app/card/wapi/getGameRecordCard
传入字段 | 说明 | 值 |
---|---|---|
uid | 米游社ID | any |
UID查询玩家基本信息
GET
https://api-takumi-record.mihoyo.com/game_record/app/genshin/api/index
传入字段 | 说明 | 值 |
---|---|---|
role_id | 玩家UID | any |
server | 玩家所在服务器 | cn_gf01/cn_qd01 |
获取角色武器和圣遗物
POST
https://api-takumi-record.mihoyo.com/game_record/app/genshin/api/character
传入字段 | 说明 | 值 |
---|---|---|
role_id | 玩家UID | any |
server | 玩家所在服务器 | cn_gf01/cn_qd01 |
获取当期和上期深渊数据
GET
https://api-takumi-record.mihoyo.com/game_record/app/genshin/api/spiralAbyss
传入字段 | 说明 | 值 |
---|---|---|
role_id | 玩家UID | any |
server | 玩家所在服务器 | cn_gf01/cn_qd01 |
schedule_type | 请求类型 | 1为当期,2为上期 |
获取mmt
GET
https://webapi.account.mihoyo.com/Api/create_mmt
传入字段 | 说明 | 值 |
---|---|---|
scene_type | 未知 | 1 |
now | 时间戳 | 当前时间戳 |
t | 时间戳 | 当前时间戳 |
reason | 来源地址 | 可以填“user.mihoyo.com%23%2Flogin%2Fcaptcha” |
传入数据注意: 返回数据下的data.mmt_data有极验challenge、gt和mmt_key, 在下文的的登陆中需要,但是不需要生成DS
登录米游社
POST
https://api-takumi.mihoyo.com/account/auth/api/webLoginByPassword
传入字段 | 说明 | 值 |
---|---|---|
account | 账号 | any |
password | 密码 | RSA加密后密码 |
mmt_key | mmt_key | mmt_key |
is_bh2 | 是否为崩坏2 | false |
is_crypto | 是否加密 | true |
geetest_challenge | 极验challenge | 极验challenge |
geetest_validate | 极验validate | 极验validate |
geetest_seccode | 极验seccode | geetest_validate+ |
token_type | 未知 | 填‘6’ |
RSA公钥
-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDvekdPMHN3AYhm/vktJT+YJr7\ncI5DcsNKqdsx5DZX0gDuWFuIjzdwButrIYPNmRJ1G8ybDIF7oDW2eEpm5sMbL9zs\n9ExXCdvqrn51qELbqj0XxtMTIpaCHFSI50PfPpTFV9Xt/hmyVwokoOXFlAEgCn+Q\nCgGs52bFoYMtyi+xEQIDAQAB\n-----END PUBLIC KEY-----
登录完成后便会设置cookie,返回值内有该账户信息
HoYoLab
请求头
请求头名 | 说明 | 可能的值 |
---|---|---|
x-rpc-app_version | HoYoLab版本号 | 1.5.0 |
x-rpc-client_type | 客户端类型(IOS/Android) | 4 |
Cookie | 米游社Cookie,可以通过电脑登录HoYoLab获取 | any |
DS | 生成方式如下 | |
Referer | Referer | https://webstatic-sea.mihoyo.com/ |
User-Agent | Mozilla/5.0 (X11; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0 |
请求头#### DS加密方式
def generate_ds() -> str:
t = int(time.time())
r = .join(random.choices(string.ascii_letters, k=6))
h = hashlib.md5(fsalt={OS_DS_SALT}&t={t}&r={r}.encode()).hexdigest()
return f{t},{r},{h}
API
HoYoLab ID查询玩家信息
GET
https://bbs-api-os.hoyolab.com/game_record/card/wapi/getGameRecordCard
传入字段 | 说明 | 值 |
---|---|---|
uid | 米游社ID | any |
UID查询玩家基本信息
GET
https://bbs-api-os.hoyolab.com/game_record/genshin/api/index
传入字段 | 说明 | 值 |
---|---|---|
role_id | 玩家UID | any |
server | 玩家所在服务器 | os_asia/os_euro/os_usa/os_cht |
获取角色武器和圣遗物
POST
https://bbs-api-os.hoyolab.com/game_record/genshin/api/character
传入字段 | 说明 | 值 |
---|---|---|
role_id | 玩家UID | any |
server | 玩家所在服务器 | os_asia/os_euro/os_usa/os_cht |
获取当期和上期深渊数据
GET
https://bbs-api-os.hoyolab.com/game_record/genshin/api/spiralAbyss
传入字段 | 说明 | 值 |
---|---|---|
role_id | 玩家UID | any |
server | 玩家所在服务器 | os_asia/os_euro/os_usa/os_cht |
schedule_type | 请求类型 | 1为当期,2为上期 |
它可以干什么呢?
它可以用来做反云玩家的小工具
像我,拿清明节三天假期做了个这个
exe打包下载: https://pan.loliurl.club/s/LPHR
[github author="heartalborada-del" project="genshin-player-query"][/github]
又或是这个
Comments 15 条评论
博主 Turmiht
想问一下这些盐值都是怎么获取的呀 必须要解包客户端吗
博主 heartalborada
@Turmiht
其实是我翻其他大佬的开源项目看到的(应该是要解包客户端
博主 leshenyyds
为什么我gethttps://api-takumi-record.mihoyo.com/game_record/app/genshin/api/index东西也传了还是获取不了
博主 heartalborada
@leshenyyds
GET
是获取方式,而且米哈游之前修改了API,我还没抓新的包博主 66怪
点赞
博主 Darker
https://api.lelaer.com/ys/getPlayerRecord.php?uid=,提瓦特小助手的接口
博主 heartalborada
@Darker 其实吧,自己能写的部分还是自己写,mihoyo登录api都可以抓出来的
博主 leshenyyds
@Darker 还有提瓦特别的接口吗
博主 拾月上寻
DS算法好像运行不了啊,会报语法错误
博主 heartalborada
@拾月上寻 缺了个 DS_SALT
OS_DS_SALT = “6cqshh5dhw73bzxn20oexa9k516chk7s”
CN_DS_SALT = “xV8v4Qu54lUKrEYFZkJhB8cuOh9Asafs”
博主 匿名
请问OS_DS_SALT是什么?
博主 heartalborada
@匿名 国际服的MD5盐值
博主 heartalborada
@匿名 坏了我没给()
OS_DS_SALT = “6cqshh5dhw73bzxn20oexa9k516chk7s”
CN_DS_SALT = “xV8v4Qu54lUKrEYFZkJhB8cuOh9Asafs”
博主 kanokano
这个实用! 有空就整一个!|´・ω・)ノ
博主 heartalborada
@kanokano 实现api查询的后端挺简单的,唯一困难的就是前端的开发