From 1e83d97283cb43f7393577908aa0c695c54db6d5 Mon Sep 17 00:00:00 2001
From: czn20 <2583080860@qq.com>
Date: Mon, 4 Sep 2023 17:45:42 +0800
Subject: [PATCH 1/4] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BD=BF=E7=94=A8?=
=?UTF-8?q?=E5=AF=86=E7=A0=81=E9=80=9A=E8=BF=87=E7=B1=B3=E6=B8=B8=E7=A4=BE?=
=?UTF-8?q?=E7=9A=84api=E8=8E=B7=E5=8F=96=E7=99=BB=E5=BD=95=E4=BF=A1?=
=?UTF-8?q?=E6=81=AF=E5=B9=B6=E5=92=8C=E4=BD=BF=E7=94=A8=E5=AF=86=E7=A0=81?=
=?UTF-8?q?=E9=80=9A=E8=BF=87=E7=B1=B3=E5=93=88=E6=B8=B8=E9=80=9A=E8=A1=8C?=
=?UTF-8?q?=E8=AF=81=E7=9A=84api=E8=8E=B7=E5=8F=96=E7=99=BB=E5=BD=95?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=8A=A0=E4=BB=A5=E5=8C=BA=E5=88=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
hoyolab/login/password_hoyolab.md | 173 ++++++++++++++++++
.../{password.md => password_passport.md} | 2 +-
2 files changed, 174 insertions(+), 1 deletion(-)
create mode 100644 hoyolab/login/password_hoyolab.md
rename hoyolab/login/{password.md => password_passport.md} (99%)
diff --git a/hoyolab/login/password_hoyolab.md b/hoyolab/login/password_hoyolab.md
new file mode 100644
index 0000000..e69cf11
--- /dev/null
+++ b/hoyolab/login/password_hoyolab.md
@@ -0,0 +1,173 @@
+# 米游社密码登录
+
+- [密码登录](#密码登录)
+ - [操作步骤](#操作步骤)
+ - [获取设备指纹信息(device_fp)](#获取设备指纹信息)
+ - [发送登录请求](#发送登录请求)
+
+---
+
+## 密码登录
+
+### 操作步骤
+
+1. [获取设备指纹信息](#获取设备指纹信息),记录返回`data`对象的`device_fp。
+2. 向服务器传入账号密码以获取登录信息。
+
+### 获取设备指纹信息
+
+**国服:**
+
+_请求方式:POST_
+
+`https://public-data-api.mihoyo.com/device-fp/api/getFp`
+
+**JSON请求:**
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---------- | ---- | ----------------------------------- | --------------------------------------------------------- |
+| device_id | str | 设备id | |
+| seed_id | str | 种子id | 可随机生成 |
+| seed_time | str | 当前UNIX时间戳 | |
+| platform | str | 设备平台 | 不同的设备平台需要包含的请求内容不同 |
+| device_fp | str | 设备指纹信息 | 可随机生成 |
+| app_name | str | 请求的应用名称
bbs_cn 米游社 | |
+| ext_fields | str | 拓展字段 | 为使用字符串包裹的 json 字段,其中必须包含 userAgent 字段 |
+
+**JSON 返回:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------- | ---- | --------------- | ---- |
+| retcode | num | 返回码 | -502 传入的内容有误 |
+| message | str | 返回消息 | |
+| data | obj | 设备指纹 | |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------ | ---- | ------------------ | ------------------- |
+| device_fp | str | 设备指纹 | |
+| code | num | 回传的http状态码 | |
+| msg | str | 错误消息 | |
+
+
+查看示例
+
+```json
+{
+ 'data':{
+ 'code': 200,
+ 'device_fp': 'ui33vcedffou',
+ 'msg': 'ok'
+ },
+ 'message': 'OK',
+ 'retcode': 0
+}
+```
+
+
+
+### 获取登录信息
+
+**国服:**
+
+_请求方式:POST_
+
+> _需要验证请求头_
+>
+> `x-rpc-app_id`:`bll8iq97cem8`
+>
+> `x-rpc-client_type`:`2`
+>
+> `x-rpc-game_biz`:`bbs_cn`
+>
+> `x-rpc-device_fp`
+>
+> `x-rpc-device_id`
+>
+> *其中`x-rpc-device_fp`的值为刚才获取的`device_fp`的值*
+
+`https://passport-api.mihoyo.com/account/ma-cn-passport/app/loginByPassword`
+
+**JSON请求:**
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| account | str | 要登录的账户 | 使用RSA + Base64加密,加密方式[详见该页面](https://github.com/Error063/mihoyo-api-collect/blob/main/hoyolab/login/password.md#%E8%8E%B7%E5%8F%96login-ticket) |
+| password | str | 密码 | 使用RSA + Base64加密,加密方式[详见该页面](https://github.com/Error063/mihoyo-api-collect/blob/main/hoyolab/login/password.md#%E8%8E%B7%E5%8F%96login-ticket) |
+
+**JSON返回:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| retcode | num | 返回码
| |
+| message | str | 返回消息 | |
+| data | obj | 账户x'x | |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| login_ticket | str | Login Ticket | |
+| need_realperson | str | 是否要求用户进行实名认证 | |
+| token | obj | 包含cookie token?的对象 | |
+| user_info | obj | 用户信息 | |
+
+`user_info`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| --------------- | ---- | -------------------------------------------- | ------------ |
+| account_name | str | 账户名 | 国服默认为空 |
+| aid | str | Account ID | |
+| area_code | str | 账户所绑定的电话号码对应的国家区号 | |
+| country | str | 国家 | 国服默认为空 |
+| email | str | 账户所绑定的邮箱 | |
+| identity_code | str | 身份证号码 | |
+| is_email_verify | str | 邮箱是否认证通过
1 已认证
0 未认证 | |
+| links | str | 第三方绑定信息 | |
+| mid | str | MiHoYo ID | |
+| mobile | str | 账户所绑定的电话号码 | |
+| realname | str | 用户的真实姓名 | |
+
+
+查看示例
+
+```json
+{
+ 'data': {'login_ticket': '***',
+ 'need_realperson': False,
+ 'reactivate_info': {'required': False, 'ticket': ''},
+ 'realname_info': {'action_ticket': '',
+ 'action_type': '',
+ 'required': False},
+ 'token': {'token': '***',
+ 'token_type': 1},
+ 'user_info': {'account_name': '',
+ 'aid': '311526738',
+ 'area_code': '+86',
+ 'country': '',
+ 'email': '***@***.****',
+ 'identity_code': '******************',
+ 'is_email_verify': 1,
+ 'links': [{'email': '',
+ 'nickname': '***',
+ 'subType': '',
+ 'thirdparty': 'tp',
+ 'union_id': '***'}],
+ 'mid': '0d5cf7piru_mhy',
+ 'mobile': '***********',
+ 'realname': '***',
+ 'rebind_area_code': '',
+ 'rebind_mobile': '',
+ 'rebind_mobile_time': '0',
+ 'safe_area_code': '',
+ 'safe_mobile': ''}},
+ 'message': 'OK',
+ 'retcode': 0
+}
+```
+
diff --git a/hoyolab/login/password.md b/hoyolab/login/password_passport.md
similarity index 99%
rename from hoyolab/login/password.md
rename to hoyolab/login/password_passport.md
index 750fe77..138ddb5 100644
--- a/hoyolab/login/password.md
+++ b/hoyolab/login/password_passport.md
@@ -1,4 +1,4 @@
-# 米游社密码登录
+# 米哈游通行证密码登录
- [密码登录](#密码登录)
- [操作步骤](#pwd-step)
From 7084848fab5dc6dc63ec8531422c85e0613a629f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E8=82=87=E8=AF=BA?=
Date: Mon, 4 Sep 2023 18:11:52 +0800
Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=BA=86=E9=83=A8?=
=?UTF-8?q?=E5=88=86=E9=94=99=E8=AF=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
hoyolab/login/password_hoyolab.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hoyolab/login/password_hoyolab.md b/hoyolab/login/password_hoyolab.md
index e69cf11..2cf614d 100644
--- a/hoyolab/login/password_hoyolab.md
+++ b/hoyolab/login/password_hoyolab.md
@@ -95,8 +95,8 @@ _请求方式:POST_
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
-| account | str | 要登录的账户 | 使用RSA + Base64加密,加密方式[详见该页面](https://github.com/Error063/mihoyo-api-collect/blob/main/hoyolab/login/password.md#%E8%8E%B7%E5%8F%96login-ticket) |
-| password | str | 密码 | 使用RSA + Base64加密,加密方式[详见该页面](https://github.com/Error063/mihoyo-api-collect/blob/main/hoyolab/login/password.md#%E8%8E%B7%E5%8F%96login-ticket) |
+| account | str | 要登录的账户 | 使用RSA + Base64加密,加密方式[详见该页面](https://github.com/Error063/mihoyo-api-collect/blob/main/hoyolab/login/password_passport.md#%E8%8E%B7%E5%8F%96login-ticket) |
+| password | str | 密码 | 使用RSA + Base64加密,加密方式[详见该页面](https://github.com/Error063/mihoyo-api-collect/blob/main/hoyolab/login/password_passport.md.md#%E8%8E%B7%E5%8F%96login-ticket) |
**JSON返回:**
@@ -106,7 +106,7 @@ _请求方式:POST_
| ---- | ---- | ---- | ---- |
| retcode | num | 返回码
| |
| message | str | 返回消息 | |
-| data | obj | 账户x'x | |
+| data | obj | 账户信息| |
`data`对象:
From 015ee964ee6f1eb066e513ce6cd4d67feda348f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E8=82=87=E8=AF=BA?=
Date: Mon, 4 Sep 2023 20:01:07 +0800
Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E9=83=A8?=
=?UTF-8?q?=E5=88=86=E5=86=85=E5=AE=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
hoyolab/login/password_hoyolab.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hoyolab/login/password_hoyolab.md b/hoyolab/login/password_hoyolab.md
index 2cf614d..2874645 100644
--- a/hoyolab/login/password_hoyolab.md
+++ b/hoyolab/login/password_hoyolab.md
@@ -95,8 +95,8 @@ _请求方式:POST_
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
-| account | str | 要登录的账户 | 使用RSA + Base64加密,加密方式[详见该页面](https://github.com/Error063/mihoyo-api-collect/blob/main/hoyolab/login/password_passport.md#%E8%8E%B7%E5%8F%96login-ticket) |
-| password | str | 密码 | 使用RSA + Base64加密,加密方式[详见该页面](https://github.com/Error063/mihoyo-api-collect/blob/main/hoyolab/login/password_passport.md.md#%E8%8E%B7%E5%8F%96login-ticket) |
+| account | str | 要登录的账户 | 使用RSA + Base64加密,加密方式[详见该页面](hoyolab/login/password_passport.md#%E8%8E%B7%E5%8F%96login-ticket) |
+| password | str | 密码 | 使用RSA + Base64加密,加密方式[详见该页面](hoyolab/login/password_passport.md.md#%E8%8E%B7%E5%8F%96login-ticket) |
**JSON返回:**
From 1171f6d91209477759638a8867928a652e3d96b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E8=82=87=E8=AF=BA?=
Date: Mon, 4 Sep 2023 20:20:22 +0800
Subject: [PATCH 4/4] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86=E5=AF=B9?=
=?UTF-8?q?=E6=8B=93=E5=B1=95=E5=AD=97=E6=AE=B5=E7=9A=84=E8=A7=A3=E9=87=8A?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
hoyolab/login/password_hoyolab.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hoyolab/login/password_hoyolab.md b/hoyolab/login/password_hoyolab.md
index 2874645..3b6e768 100644
--- a/hoyolab/login/password_hoyolab.md
+++ b/hoyolab/login/password_hoyolab.md
@@ -29,10 +29,10 @@ _请求方式:POST_
| device_id | str | 设备id | |
| seed_id | str | 种子id | 可随机生成 |
| seed_time | str | 当前UNIX时间戳 | |
-| platform | str | 设备平台 | 不同的设备平台需要包含的请求内容不同 |
+| platform | str | 设备平台 | 不同的设备平台需要包含的拓展字段内容不同 |
| device_fp | str | 设备指纹信息 | 可随机生成 |
| app_name | str | 请求的应用名称
bbs_cn 米游社 | |
-| ext_fields | str | 拓展字段 | 为使用字符串包裹的 json 字段,其中必须包含 userAgent 字段 |
+| ext_fields | str | 拓展字段 | 为使用字符串包裹的 json 字段,若platform为4则必须包含 userAgent 字段,若platform为2则需要包含['cpuType', 'romCapacity', 'productName', 'romRemain', 'manufacturer', 'appMemory', 'hostname', 'screenSize', 'osVersion', 'aaid', 'vendor', 'accelerometer', 'buildTags', 'model', 'brand', 'oaid', 'hardware', 'deviceType', 'devId', 'serialNumber', 'buildTime', 'buildUser', 'ramCapacity', 'magnetometer', 'display', 'ramRemain', 'deviceInfo', 'gyroscope', 'vaid', 'buildType', 'sdkVersion', 'board']字段 |
**JSON 返回:**