Merge pull request #30 from Error063/main

补充GT3验证方式
This commit is contained in:
墨染月 2023-10-26 19:16:34 +08:00 committed by GitHub
commit 3a9116ea53
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 74 additions and 18 deletions

View File

@ -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 | 登录方式<br>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 | 结合风控融合,指定验证形式<br>slide 拖动滑块完成拼图 | |
| risk_type | str | 结合风控融合,指定验证形式<br>slide 拖动滑块完成拼图 | 服务器要求使用极验第三代行为验时不返回该项 |
| success | num | 是否成功<br>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
}
}
```
</details>
@ -117,12 +135,28 @@ _请求方式POST_
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| mmt_key | str | 验证任务 | |
| geetest_v4_data | obj | 验证结果数据 | 即 [极验文档](https://docs.geetest.com/gt4/apirefer/api/web/#getValidate) 中 `getValidate()` 返回的对象<br>具体内容:[请求参数](https://docs.geetest.com/gt4/deploy/server#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0)<br />若使用第三代验证时无需传入此项 |
| 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)。

View File

@ -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 | 登陆方式<br>`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 | 结合风控融合,指定验证形式<br>`slide` 拖动滑块完成拼图 | |
| success | num | 是否成功<br>`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 | 结合风控融合,指定验证形式<br>slide 拖动滑块完成拼图 | 服务器要求使用极验第三代行为验时不返回该项 |
| success | num | 是否成功<br>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验证方式仍然可用
<details>
<summary>查看示例</summary>
@ -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
}
}
```
</details>
@ -123,7 +142,10 @@ _请求方式POST_
| ---- | ---- | ---- | ---- |
| action_type | num | 操作类型<br>`login` 登录<br>`regist` 注册 | |
| mmt_key | str | 验证任务,与 [申请人机验证任务](#申请人机验证任务) 中的 `mmt_key` 相同 | |
| geetest_v4_data | obj | 验证结果数据 | 即 [极验文档](https://docs.geetest.com/gt4/apirefer/api/web/#getValidate) 中 `getValidate()` 返回的对象<br>具体内容:[请求参数](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()` 返回的对象<br>具体内容:[请求参数](https://docs.geetest.com/gt4/deploy/server#%E8%AF%B7%E6%B1%82%E5%8F%82%E6%95%B0)<br />若使用第三代验证时无需传入此项 |
| 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 | 当前的秒级时间戳 | |