From 53ae6d583473e8d8868d08d1efc5e409d4df3f97 Mon Sep 17 00:00:00 2001 From: czn20 Date: Thu, 26 Oct 2023 07:38:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85GT3=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hoyolab/login/password_passport.md | 48 +++++++++++++++++++++++++----- hoyolab/login/sms.md | 44 ++++++++++++++++++++------- 2 files changed, 74 insertions(+), 18 deletions(-) diff --git a/hoyolab/login/password_passport.md b/hoyolab/login/password_passport.md index ef46552..7e9ca65 100644 --- a/hoyolab/login/password_passport.md +++ b/hoyolab/login/password_passport.md @@ -24,8 +24,8 @@ _请求方式:GET_ | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ---- | ---- | -| scene_type | num | 暂不知道具体含义,可直接使用值 `1` | 可参考[米哈游通行证密码登录页](https://user.mihoyo.com/#/login/password)使用的值为 `1` | -| now | num | 当前的Unix时间戳 | | +| scene_type | num | 暂不知道具体含义,可直接使用值 `1` | 必须传入,可参考[米哈游通行证密码登录页](https://user.mihoyo.com/#/login/password)使用的值为 `1` | +| now | num | 当前的Unix时间戳 | 必须传入 | | reason | str | 调用API的网页链接 | 可参考[米哈游通行证密码登录页](https://user.mihoyo.com/#/login/password)使用`user.mihoyo.com%2523%252Flogin%252Fpassword`(已进行URL编码) | | action_type | str | 登录方式
login_by_password 密码登录 | | | t | num | 当前的Unix时间戳 | | @@ -55,15 +55,16 @@ _请求方式:GET_ | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ---- | ---- | | mmt_key | str | 验证任务 | 当 `mmt_data` 对象仅包含该字段时,说明不需要进行人机验证,可直接使用该值进行登录 | -| gt | str | 验证ID | 验证ID,即[极验文档](https://docs.geetest.com/gt4/deploy/server#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0)中的`captchaId`,通常为服务器申请得到 | +| gt | str | 验证ID | 验证ID,即[极验文档](https://docs.geetest.com/gt4/deploy/server#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0)中的`captchaId`,通常为服务器申请得到(服务器要求使用极验第四代行为验证时);验证ID,通常为`6697d9dd2614c8a2a55752732494fd56`(服务器要求使用极验第三代行为验时) | +| challenge | str | 验证流水号 | 服务器要求使用极验第三代行为验时需要用到 | | new_captcha | num | 极验验证码相关的参数,是否为新验证码类型的离线情况下使用 | 一般为 `1` | -| risk_type | str | 结合风控融合,指定验证形式
slide 拖动滑块完成拼图 | | +| risk_type | str | 结合风控融合,指定验证形式
slide 拖动滑块完成拼图 | 服务器要求使用极验第三代行为验时不返回该项 | | success | num | 是否成功
1 成功 | | -| use_v4 | bool | 是否使用[极验第4代适应性验证](https://www.geetest.com/adaptive-captcha) | | +| use_v4 | bool | 是否使用[极验第4代适应性验证](https://www.geetest.com/adaptive-captcha) | 服务器要求使用极验第三代行为验时不返回该项 | **备注:** -- 一般来说,密码登录基本上都不会被要求人机验证(但是谁知道呢) +- 若直接访问该api,将有很大概率要求使用极验第三代行为验 - 通常首次申请验证任务返回的`mmt_data`对象只会包含`mmt_key`,不会返回`gt`等其他字段,这说明不需要进行人机验证,可直接使用`mmt_key`字段值进行登录(也可通过`mmt_type`判断) - JSON返回数据的`mmt_data`对象中一些字段说明参考自[极验官方文档](https://docs.geetest.com/gt4/apirefer/api/web) @@ -85,7 +86,7 @@ _请求方式:GET_ } } -// 需要进行验证时 +// 需要进行验证时 - 要求使用第四代验证 { "code": 200, "data": { @@ -103,6 +104,23 @@ _请求方式:GET_ "status": 1 } } +// 需要进行验证时 - 要求使用第三代验证 +{ + "code": 200, + "data": { + "mmt_data": { + "challenge": "6697d9dd2614c8a2a55752732494fd56", + "gt": "ae0942d9463f21fb73d27d49ed2f1154", + "mmt_key": "gdfjQZgTpYAJbI7XpqV5vBtmFwHXttR2", + "new_captcha": 1, + "success": 1 + }, + "mmt_type": 1, + "msg": "成功", + "scene_type": 1, + "status": 1 + } +} ``` @@ -117,12 +135,28 @@ _请求方式:POST_ | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ---- | ---- | | mmt_key | str | 验证任务 | | +| geetest_v4_data | obj | 验证结果数据 | 即 [极验文档](https://docs.geetest.com/gt4/apirefer/api/web/#getValidate) 中 `getValidate()` 返回的对象
具体内容:[请求参数](https://docs.geetest.com/gt4/deploy/server#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0)
若使用第三代验证时无需传入此项 | +| geetest_challenge | str | [极验第三代行为验的sdk返回]([geetest-Web-sensebot-api](https://docs.geetest.com/sensebot/apirefer/api/web#getValidate))的验证流水号 | 若使用第四代验证时无需传入此项 | +| geetest_validate | str | [极验第三代行为验的sdk返回]([geetest-Web-sensebot-api](https://docs.geetest.com/sensebot/apirefer/api/web#getValidate))的validate | 若使用第四代验证时无需传入此项 | +| geetest_seccode | str | [极验第三代行为验的sdk返回]([geetest-Web-sensebot-api](https://docs.geetest.com/sensebot/apirefer/api/web#getValidate))的seccode | 若使用第四代验证时无需传入此项 | | account | str | 要登录的账户 | | | password | str | 密码(使用RSA + Base64加密或不加密) | | | is_crypto | bool | 密码是否被加密 | | | source | str | 登录操作来源 | 可参考 [米哈游通行证密码登录页](https://user.mihoyo.com/#/login/password) 使用的是 `user.mihoyo.com` | | t | num | 当前的秒级时间戳 | | +`geetest_v4_data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | -------------- | ---- | +| lot_number | str | 验证流水号 | | +| captcha_output | str | 验证输出信息 | | +| pass_token | str | 验证通过标识 | | +| gen_time | str | 验证通过时间戳 | | +| captcha_id | str | 验证 ID | | +| sign_token | str | 验证签名 | | + + 注: 若需加密密码,需要使用的RSA公钥[参见该提议](https://github.com/UIGF-org/mihoyo-api-collect/issues/1)。 diff --git a/hoyolab/login/sms.md b/hoyolab/login/sms.md index 60bd9ab..6979b5b 100644 --- a/hoyolab/login/sms.md +++ b/hoyolab/login/sms.md @@ -27,8 +27,8 @@ _请求方式:GET_ | 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ---- | ---- | -| scene_type | num | 暂不知道具体含义,可直接使用值 `1` | 可参考 [米哈游通行证验证码登录页](https://user.mihoyo.com/#/login/captcha) 使用的值为 `1` | -| now | num | 当前的秒级时间戳 | | +| scene_type | num | 暂不知道具体含义,可直接使用值 `1` | 必须传入,可参考 [米哈游通行证验证码登录页](https://user.mihoyo.com/#/login/captcha) 使用的值为 `1` | +| now | num | 当前的秒级时间戳 | 必须传入 | | reason | str | 调用API的网页链接 | 可参考 [米哈游通行证验证码登录页](https://user.mihoyo.com/#/login/captcha) 使用的是 `user.mihoyo.com%2523%252Flogin%252Fcaptcha`(已进行URL编码)| | action_type | str | 登陆方式
`login_by_mobile_captcha` 短信验证码登录 | | @@ -53,20 +53,21 @@ _请求方式:GET_ `data`对象→`mmt_data`对象: -| 字段 | 类型 | 内容 | 备注 | +| 字段 | 类型 | 内容 | 备注 | | ---- | ---- | ---- | ---- | -| mmt_key | str | 验证任务 | 当 `mmt_data` 对象仅包含该字段时,说明不需要进行人机验证,可直接使用该值发送短信验证码 | -| gt | str | 验证ID | 验证ID,即 [极验文档](https://docs.geetest.com/gt4/deploy/server#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0) 中的`captchaId`,极验后台申请得到 | -| new_captcha | num | 宕机情况下使用 | 一般为 `1` | -| risk_type | str | 结合风控融合,指定验证形式
`slide` 拖动滑块完成拼图 | | -| success | num | 是否成功
`1` 成功 | | -| use_v4 | bool | 是否使用极验第四代适应性验证 | 极验官网:https://www.geetest.com/adaptive-captcha | +| mmt_key | str | 验证任务 | 当 `mmt_data` 对象仅包含该字段时,说明不需要进行人机验证,可直接使用该值进行登录 | +| gt | str | 验证ID | 验证ID,即[极验文档](https://docs.geetest.com/gt4/deploy/server#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0)中的`captchaId`,通常为服务器申请得到(服务器要求使用极验第四代行为验证时);验证ID,通常为`6697d9dd2614c8a2a55752732494fd56`(服务器要求使用极验第三代行为验时) | +| challenge | str | 验证流水号 | 服务器要求使用极验第三代行为验时需要用到 | +| new_captcha | num | 极验验证码相关的参数,是否为新验证码类型的离线情况下使用 | 一般为 `1` | +| risk_type | str | 结合风控融合,指定验证形式
slide 拖动滑块完成拼图 | 服务器要求使用极验第三代行为验时不返回该项 | +| success | num | 是否成功
1 成功 | | **备注:** +- 若直接访问该api,将有很大概率要求使用极验第三代行为验 - 通常首次申请验证任务返回的 `mmt_data` 对象只会包含 `mmt_key`,不会返回 `gt` 等其他字段,这说明不需要进行人机验证,可直接使用 `mmt_key` 字段值调用短信验证码发送API(也可通过 `mmt_type` 判断) - JSON返回数据的 `mmt_data` 对象中一些字段说明参考自 [极验官方文档](https://docs.geetest.com/gt4/apirefer/api/web) -- 在2023年5月左右[米哈游通行证验证码登录页](https://user.mihoyo.com/#/login/captcha)从极验GT3升级至GT4,目前 [短信验证码发送](#发送短信验证码) 接口不再支持GT3验证结果,因此文档不包含GT3验证结果的使用方法 +- ~~在2023年5月左右[米哈游通行证验证码登录页](https://user.mihoyo.com/#/login/captcha)从极验GT3升级至GT4,目前 [短信验证码发送](#发送短信验证码) 接口不再支持GT3验证结果,因此文档不包含GT3验证结果的使用方法~~ 经实测,GT3验证方式仍然可用
查看示例 @@ -90,6 +91,7 @@ _请求方式:GET_ ``` - 需要进行人机验证的情况: ```json + //第四代验证方式 { "code": 200, "data": { @@ -107,6 +109,23 @@ _请求方式:GET_ "status": 1 } } + //第三代验证方式 + { + "code": 200, + "data": { + "mmt_data": { + "challenge": "b6ff1cdc0901e80402b1c1c306fa5191", + "gt": "ae0942d9463f21fb73d27d49ed2f1154", + "mmt_key": "fSLRd2fYAVI6xpq009O0Ja1hx3MelDAM", + "new_captcha": 1, + "success": 1 + }, + "mmt_type": 1, + "msg": "成功", + "scene_type": 1, + "status": 1 + } + } ```
@@ -123,7 +142,10 @@ _请求方式:POST_ | ---- | ---- | ---- | ---- | | action_type | num | 操作类型
`login` 登录
`regist` 注册 | | | mmt_key | str | 验证任务,与 [申请人机验证任务](#申请人机验证任务) 中的 `mmt_key` 相同 | | -| geetest_v4_data | obj | 验证结果数据 | 即 [极验文档](https://docs.geetest.com/gt4/apirefer/api/web/#getValidate) 中 `getValidate()` 返回的对象
具体内容:[请求参数](https://docs.geetest.com/gt4/deploy/server#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0) | +| geetest_v4_data | obj | 验证结果数据 | 即 [极验文档](https://docs.geetest.com/gt4/apirefer/api/web/#getValidate) 中 `getValidate()` 返回的对象
具体内容:[请求参数](https://docs.geetest.com/gt4/deploy/server#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0)
若使用第三代验证时无需传入此项 | +| geetest_challenge | str | [极验第三代行为验的sdk返回]([geetest-Web-sensebot-api](https://docs.geetest.com/sensebot/apirefer/api/web#getValidate))的验证流水号 | 若使用第四代验证时无需传入此项 | +| geetest_validate | str | [极验第三代行为验的sdk返回]([geetest-Web-sensebot-api](https://docs.geetest.com/sensebot/apirefer/api/web#getValidate))的validate | 若使用第四代验证时无需传入此项 | +| geetest_seccode | str | [极验第三代行为验的sdk返回]([geetest-Web-sensebot-api](https://docs.geetest.com/sensebot/apirefer/api/web#getValidate))的seccode | 若使用第四代验证时无需传入此项 | | mobile | str | 目标手机号 | | | t | num | 当前的秒级时间戳 | |