🚀调整项目结构
This commit is contained in:
456
docs/newbie_exam/action.md
Normal file
456
docs/newbie_exam/action.md
Normal file
@@ -0,0 +1,456 @@
|
||||
# 操作
|
||||
|
||||
- [提交答题](#提交答题)
|
||||
- [提交基础题](#提交基础题)
|
||||
- [提交附加题](#提交附加题)
|
||||
- [提交自选题](#提交自选题)
|
||||
- [获取验证码](#获取验证码)
|
||||
- [提交验证码](#提交验证码)
|
||||
- [提交自选题分类](#提交自选题分类)
|
||||
- [提前交卷](#提前交卷)
|
||||
|
||||
---
|
||||
|
||||
## 提交答题
|
||||
|
||||
### 提交基础题
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/base/check
|
||||
|
||||
*请求方式:POST*
|
||||
|
||||
认证方式:APP或Cookie(SESSDATA)
|
||||
|
||||
**正文参数( application/x-www-form-urlencoded ):**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----------- | ---- | ------------------------ | -------------- | ------------------------------------------ |
|
||||
| question_id | num | 题目id | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 |
|
||||
| ans_hash | str | 选项hash | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 |
|
||||
| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />-400:请求错误<br />41014:答题过快或错误太多<br />41012:用户答题提交题目id不合法<br />41020:用户基础题已通过<br />41023:用户答题记录不存在 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data`对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------ | ---- | ------------ | ----------------------------------- |
|
||||
| passed | bool | 选项是否正确 | true:选项正确<br />false:选项错误 |
|
||||
|
||||
**示例:**
|
||||
|
||||
提交题目id为`104`的题,选项hash为`cb4c8cc9424fc771f7c1598e74de498f`
|
||||
|
||||
```shell
|
||||
curl 'https://api.bilibili.com/x/answer/v4/base/check' \
|
||||
--data-urlencode 'question_id=104' \
|
||||
--data-urlencode 'ans_hash=cb4c8cc9424fc771f7c1598e74de498f' \
|
||||
--data-urlencode 'csrf=xxxx' \
|
||||
-b 'SESSDATA=xxxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"passed": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### 提交附加题
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/base/check
|
||||
|
||||
*请求方式:POST*
|
||||
|
||||
认证方式:APP或Cookie(SESSDATA)
|
||||
|
||||
**正文参数( application/x-www-form-urlencoded ):**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----------- | ---- | ------------------------ | -------------- | ------------------------------------------ |
|
||||
| question_id | num | 题目id | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 |
|
||||
| ans_hash | str | 选项hash | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 |
|
||||
| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />-400:请求错误<br />41014:答题过快或错误太多<br />41012:用户答题提交题目id不合法<br />41023:用户答题记录不存在 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data`对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------ | ---- | ------------ | ----------------------------------- |
|
||||
| passed | bool | 选项是否正确 | true:选项正确<br />false:选项错误 |
|
||||
|
||||
**示例:**
|
||||
|
||||
提交题目id为`104`的题,选项hash为`cb4c8cc9424fc771f7c1598e74de498f`
|
||||
|
||||
```shell
|
||||
curl 'https://api.bilibili.com/x/answer/v4/base/check' \
|
||||
--data-urlencode 'question_id=104' \
|
||||
--data-urlencode 'ans_hash=cb4c8cc9424fc771f7c1598e74de498f' \
|
||||
--data-urlencode 'csrf=xxxx' \
|
||||
-b 'SESSDATA=xxxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"passed": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### 提交自选题
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/pro/check
|
||||
|
||||
*请求方式:POST*
|
||||
|
||||
认证方式:APP或Cookie(SESSDATA)
|
||||
|
||||
**正文参数( application/x-www-form-urlencoded ):**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----------- | ---- | ------------------------ | -------------- | ------------------------------------------ |
|
||||
| question_id | num | 题目id | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 |
|
||||
| ans_hash | str | 选项hash | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 |
|
||||
| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />-400:请求错误<br />41014:答题过快或错误太多<br />41012:用户答题提交题目id不合法<br />41023:用户答题记录不存在<br />41026:获取用户DB题目信息异常 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data`对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------ | ---- | ---- | ---------- |
|
||||
| passed | bool | true | 恒为`true` |
|
||||
|
||||
**示例:**
|
||||
|
||||
提交题目id为`2935`的题,选项hash为`ffd55cbe0624f466bee2ea3eb576a4d0`
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.bilibili.com/x/answer/v4/pro/check' \
|
||||
--data-urlencode 'question_id=2935' \
|
||||
--data-urlencode 'ans_hash=ffd55cbe0624f466bee2ea3eb576a4d0' \
|
||||
--data-urlencode 'csrf=xxxx' \
|
||||
-b 'SESSDATA=xxxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"passed": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 获取验证码
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/captcha
|
||||
|
||||
*请求方式:GET*
|
||||
|
||||
认证方式:APP或Cookie(SESSDATA)
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />-400:请求错误<br />41010:用户答题非法访问<br />41014:答题过快或错误太多<br />41020:用户基础题已通过<br />41021:用户基础题未通过 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data`对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| --------- | ---- | ----------- | ------------- |
|
||||
| type | str | 验证码类型? | geetest:极验 |
|
||||
| gt | str | 极验id | |
|
||||
| challenge | str | 极验key | |
|
||||
| token | str | (?) | |
|
||||
| url | str | (?) | |
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl 'https://api.bilibili.com/x/answer/v4/captcha' \
|
||||
-b 'SESSDATA=xxxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"type": "geetest",
|
||||
"gt": "abc55d1fb914cb110cfb4c232a4b4c35",
|
||||
"challenge": "90a6e03e626e13ee186ddae0107c3ae2",
|
||||
"token": "",
|
||||
"url": ""
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 提交验证码
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/captcha/check
|
||||
|
||||
*请求方式:POST*
|
||||
|
||||
认证方式:APP或Cookie(SESSDATA)
|
||||
|
||||
**注:**
|
||||
|
||||
旧版`edition=0`同时提交自选题分类以及验证码
|
||||
|
||||
新版`edition=2`仅仅提交验证码
|
||||
|
||||
**正文参数( application/x-www-form-urlencoded ):**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ----------------- | ---- | ---------------------- | -------------- | ---------------- |
|
||||
| types | nums | 自选题分类(旧版) | 非必要 | 新版不需要此字段 |
|
||||
| type | str | 验证码类型 | 非必要 | |
|
||||
| bilibili_token | str | | 非必要 | |
|
||||
| bilibili_code | str | | 非必要 | |
|
||||
| geetest_challenge | str | 极验key | 非必要 | |
|
||||
| geetest_seccode | str | 极验结果+\|jordan | 非必要 | |
|
||||
| geetest_validate | str | 极验结果 | 非必要 | |
|
||||
| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />-105:验证码错误<br />-400:请求错误<br />41010:用户答题非法访问<br />41014:答题过快或错误太多<br />41021:用户基础题未通过<br />41031:自选题未通过 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl 'https://api.bilibili.com/x/answer/v4/captcha/check' \
|
||||
--data-urlencode 'types=' \
|
||||
--data-urlencode 'type=geetest' \
|
||||
--data-urlencode 'bilibili_token=' \
|
||||
--data-urlencode 'bilibili_code=' \
|
||||
--data-urlencode 'geetest_challenge=3f809a7a9c51edca751fd26c032c182d' \
|
||||
--data-urlencode 'geetest_seccode=513ec576a275a3eb250829202d4dce46|jordan' \
|
||||
--data-urlencode 'geetest_validate=513ec576a275a3eb250829202d4dce46' \
|
||||
--data-urlencode 'csrf=xxx' \
|
||||
-b 'SESSDATA=xxxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 提交自选题分类
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/pro/type/check
|
||||
|
||||
*请求方式:POST*
|
||||
|
||||
认证方式:APP或Cookie(SESSDATA)
|
||||
|
||||
**正文参数( application/x-www-form-urlencoded ):**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ------ | ---- | ---------------------- | -------------- | ---- |
|
||||
| types | nums | 自选题分类(新版) | 必要 | |
|
||||
| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />-400:请求错误<br />41010:用户答题非法访问<br />41014:答题过快或错误太多<br />41021:用户基础题未通过<br />41031:自选题未通过<br />41052:用户题目类型不合法<br />41055:基础附加题未通过 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
|
||||
**示例:**
|
||||
|
||||
选择`游戏` `影视` `科教/知识` `动画/动漫`分类
|
||||
|
||||
```shell
|
||||
curl 'https://api.bilibili.com/x/answer/v4/pro/type/check' \
|
||||
--data-urlencode 'types=1,2,3,4' \
|
||||
--data-urlencode 'csrf=xxx' \
|
||||
-b 'SESSDATA=xxxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 提前交卷
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/submit
|
||||
|
||||
*请求方式:POST*
|
||||
|
||||
认证方式:APP或Cookie(SESSDATA)
|
||||
|
||||
当当前得分>=60时,可请求本接口提前完成答题
|
||||
|
||||
**正文参数( application/x-www-form-urlencoded ):**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ------ | ---- | ---------------------- | -------------- | ---- |
|
||||
| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | |
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />-400:请求错误<br />41014:答题过快或错误太多<br />41023:用户答题记录不存在<br />41031:自选题未通过 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data`对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------------ | ---- | ---------------- | -------------------------------------------- |
|
||||
| hid | num | 答题会话id | |
|
||||
| mid | num | 答题用户mid | |
|
||||
| score | num | 得分 | |
|
||||
| status | num | 0 | |
|
||||
| number | num | 0 | |
|
||||
| result | str | succeed | |
|
||||
| stage | str | result | |
|
||||
| version | str | 版本 | 目前为`v4` |
|
||||
| start_time | num | 本次答题开始时间 | 时间戳 |
|
||||
| first_answer | num | 0 | |
|
||||
| progress | str | | |
|
||||
| text | str | | |
|
||||
| url | str | | |
|
||||
| in_reg_audit | bool | | |
|
||||
| edition | num | 答题版本 | 0:旧版(40+10+50)<br />2:新版(40+30+30) |
|
||||
| rewards | null | | |
|
||||
| captcha | num | 1 | |
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl 'https://api.bilibili.com/x/answer/v4/submit' \
|
||||
--data-urlencode 'csrf=xxx' \
|
||||
-b 'SESSDATA=xxxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"hid": 1623207905520705,
|
||||
"mid": 293793435,
|
||||
"score": 63,
|
||||
"status": 3,
|
||||
"number": 0,
|
||||
"result": "succeed",
|
||||
"stage": "result",
|
||||
"version": "v4",
|
||||
"start_time": 1636889218,
|
||||
"first_answer": 0,
|
||||
"progress": "",
|
||||
"text": "",
|
||||
"url": "",
|
||||
"in_reg_audit": false,
|
||||
"edition": 0,
|
||||
"rewards": null,
|
||||
"captcha": 1
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
263
docs/newbie_exam/fetch.md
Normal file
263
docs/newbie_exam/fetch.md
Normal file
@@ -0,0 +1,263 @@
|
||||
# 拉取题目
|
||||
|
||||
- [拉取基础题](#拉取基础题)
|
||||
- [拉取附加题](#拉取附加题)
|
||||
- [拉取自选题](#拉取自选题)
|
||||
|
||||
---
|
||||
|
||||
## 拉取基础题
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/base
|
||||
|
||||
*请求方式:GET*
|
||||
|
||||
认证方式:Cookie或APP
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />41014:答题过快或错误太多<br />41020:用户基础题已通过<br />41023:用户答题记录不存在 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data`对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| -------- | ---- | -------- | ---- |
|
||||
| question | obj | 题目内容 | |
|
||||
|
||||
`data`中的`question`对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ---------- | ----- | ------------------ | ------------------------------------------------------------ |
|
||||
| id | num | 问题id | **问题id不代表题图,因为选项是打乱的** |
|
||||
| number | num | 当前题号 | |
|
||||
| q_height | num | 问题部分总高度 | |
|
||||
| q_coord_y | num | 问题部分Y裁剪起始 | 当然是0 |
|
||||
| image | str | 题图url | 题目文字+所有的选项文字排版成一张图,存储在bfs中 |
|
||||
| from | str | 问题来源页面url | 如:“xx弹幕是否违规”所在的视频页 |
|
||||
| options | array | 选项列表 | |
|
||||
| type_id | num | 题目父类型id | 见[查询自选题分类](info.md#查询自选题分类)<br />**注:36为基础题** |
|
||||
| type_name | str | 分院小电视提示文案 | 如:xx小电视 |
|
||||
| type_image | str | 分院小电视图标url | |
|
||||
|
||||
`question`中的`options`数组:
|
||||
|
||||
| 项 | 类型 | 内容 | 备注 |
|
||||
| ---- | ---- | ----- | ---------------------- |
|
||||
| 0 | obj | 选项A | |
|
||||
| 1 | obj | 选项B | 选项至少2个 |
|
||||
| 2 | obj | 选项C | 数组长度取决于选项个数 |
|
||||
| 3 | obj | 选项D | |
|
||||
|
||||
`question`中的`options`数组中的对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | ----------------- | ------------------------ |
|
||||
| number | num | 选项序号 | 如:1为A 2为B |
|
||||
| high | num | 选项部分总高度 | |
|
||||
| coord_y | num | 选项部分Y裁剪起始 | |
|
||||
| hash | str | 选项hash | 作为提交对应选项时应传参 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.bilibili.com/x/answer/v4/base' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"question": {
|
||||
"id": 6511,
|
||||
"number": 1,
|
||||
"q_height": 38.4,
|
||||
"q_coord_y": 0,
|
||||
"image": "https://i0.hdslb.com/bfs/member/9d7f1f1f0b7478a621d1b998a5a98982.png",
|
||||
"from": "",
|
||||
"options": [
|
||||
{
|
||||
"number": 1,
|
||||
"high": 42,
|
||||
"coord_y": 38.4,
|
||||
"hash": "f7619d6c2040d44f39dc87a7aa34fb9e"
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"high": 42,
|
||||
"coord_y": 80.4,
|
||||
"hash": "dce5140040f40ca4030783585684369d"
|
||||
}
|
||||
],
|
||||
"type_id": 36,
|
||||
"type_name": "小电视校长",
|
||||
"type_image": "https://i0.hdslb.com/bfs/face/7b67c0c0da64a6ab059ff49bb0d4b92988b91806.png"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
</details>
|
||||
|
||||
## 拉取附加题
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/extra
|
||||
|
||||
*请求方式:GET*
|
||||
|
||||
认证方式:Cookie或APP
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />41014:答题过快或错误太多<br />41021:用户基础题未通过<br />41023:用户答题记录不存在<br />41054:用户附加题已通过 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data`对象:
|
||||
|
||||
同[拉取基础题](#拉取基础题)的`data`对象
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.bilibili.com/x/answer/v4/extra' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"question": {
|
||||
"id": 11492,
|
||||
"number": 44,
|
||||
"q_height": 76.8,
|
||||
"q_coord_y": 0,
|
||||
"image": "https://i0.hdslb.com/bfs/member/b6c846613bd0b44cd7c8af1d83e3f0c2.png",
|
||||
"from": "https://www.bilibili.com/video/av14659093",
|
||||
"options": [
|
||||
{
|
||||
"number": 1,
|
||||
"high": 42,
|
||||
"coord_y": 76.8,
|
||||
"hash": "ca15e6009047cf82358c50ab90fd8d9e"
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"high": 42,
|
||||
"coord_y": 118.8,
|
||||
"hash": "60e86a1c736c68da3462f66377e4e8ca"
|
||||
}
|
||||
],
|
||||
"type_id": 36,
|
||||
"type_name": "小电视校长",
|
||||
"type_image": "https://i0.hdslb.com/bfs/face/7b67c0c0da64a6ab059ff49bb0d4b92988b91806.png"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
</details>
|
||||
|
||||
## 拉取自选题
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/pro
|
||||
|
||||
*请求方式:GET*
|
||||
|
||||
认证方式:Cookie或APP
|
||||
|
||||
**json回复:**
|
||||
|
||||
根对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />41014:答题过快或错误太多<br />41021:用户基础题未通过<br />41023:用户答题记录不存在<br />41051:用户答题验证码未通过<br />41055:基础附加题未通过 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data`对象:
|
||||
|
||||
同[拉取基础题](#拉取基础题)的`data`对象
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.bilibili.com/x/answer/v4/pro' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"question": {
|
||||
"id": 824,
|
||||
"number": 54,
|
||||
"q_height": 38.4,
|
||||
"q_coord_y": 0,
|
||||
"image": "https://i0.hdslb.com/bfs/member/417e02be5652f79d0312fa2fcee28869.png",
|
||||
"from": "",
|
||||
"options": [
|
||||
{
|
||||
"number": 1,
|
||||
"high": 42,
|
||||
"coord_y": 38.4,
|
||||
"hash": "c4574c23cf728c19abeab3e7525258d4"
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"high": 42,
|
||||
"coord_y": 80.4,
|
||||
"hash": "ffd48760758fbb8a2c183d1d04f692f8"
|
||||
},
|
||||
{
|
||||
"number": 3,
|
||||
"high": 42,
|
||||
"coord_y": 122.4,
|
||||
"hash": "898d414dff49fe20c4a1da1e148fadb2"
|
||||
},
|
||||
{
|
||||
"number": 4,
|
||||
"high": 42,
|
||||
"coord_y": 164.4,
|
||||
"hash": "09018443f09d8ef4f6fec5e96e082270"
|
||||
}
|
||||
],
|
||||
"type_id": 1,
|
||||
"type_name": "游戏小电视",
|
||||
"type_image": "https://i0.hdslb.com/bfs/face/6590bee26086fed66ee7cc5bac26a32d2f733037.png"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
556
docs/newbie_exam/info.md
Normal file
556
docs/newbie_exam/info.md
Normal file
@@ -0,0 +1,556 @@
|
||||
# 查询信息
|
||||
|
||||
- [查询答题状态](#查询答题状态)
|
||||
- [查询自选题分类](#查询自选题分类)
|
||||
- [查询答题结果](#查询答题结果)
|
||||
|
||||
---
|
||||
|
||||
## 查询答题状态
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/status
|
||||
|
||||
*请求方式:GET*
|
||||
|
||||
认证方式:Cookie或APP
|
||||
|
||||
**json回复:**
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />41014:答题过快或错误太多 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data`对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------------ | ---- | ------------------ | ------------------------------------------------------------ |
|
||||
| hid | num | 答题会话id | |
|
||||
| mid | num | 答题用户mid | |
|
||||
| score | num | 当前得分 | |
|
||||
| status | num | 答题状态 | 0:未答题<br />2:答题中<br />3:已通过 |
|
||||
| number | num | 当前题号 | |
|
||||
| result | str | 是否通过答题 | failed:未通过<br />succeed:已通过 |
|
||||
| stage | str | 当前答题阶段 | base:基础题<br />extra:附加题<br />pro_type:等待选择自选题类型<br />pro:自选题<br />complete:已完成 |
|
||||
| version | str | 答题版本 | 当前为`v4` |
|
||||
| start_time | num | 本次答题开始时间 | 时间戳 |
|
||||
| first_answer | num | (?) | |
|
||||
| progress | str | 当前答题进度 | 百分比<br />60分为100% |
|
||||
| text | str | 提示文案 | |
|
||||
| url | str | 答题页面url | |
|
||||
| in_reg_audit | bool | 是否为第一次答题 | |
|
||||
| edition | num | 答题版本 | 0:旧版(40+10+50)<br />2:新版(40+30+30) |
|
||||
| rewards | null | (?) | |
|
||||
| captcha | num | 是否已经提交验证码 | 1:已提交<br />仅新版提交验证码后存在 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.bilibili.com/x/answer/v4/status' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"hid": 1623207905520705,
|
||||
"mid": 293793435,
|
||||
"score": 2,
|
||||
"status": 2,
|
||||
"number": 2,
|
||||
"result": "failed",
|
||||
"stage": "base",
|
||||
"version": "v4",
|
||||
"start_time": 1623207905,
|
||||
"first_answer": 2,
|
||||
"progress": "3",
|
||||
"text": "继续答题",
|
||||
"url": "https://www.bilibili.com/h5/newbie/entry?navhide=1",
|
||||
"in_reg_audit": false,
|
||||
"edition": 0,
|
||||
"rewards": null
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## 查询自选题分类
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/pro/type
|
||||
|
||||
*请求方式:GET*
|
||||
|
||||
认证方式:Cookie或APP
|
||||
|
||||
当字段`edition`的值不同时,该接口返回的数据也不同
|
||||
|
||||
**json回复:**
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ----- | ---------- | ------------------------------------------------------------ |
|
||||
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />41014:答题过快或错误太多<br />41021:用户基础题未通过<br />41031:自选题未通过<br />41055:基础附加题未通过 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | array | 父分类列表 | |
|
||||
|
||||
`data`数组:
|
||||
|
||||
| 项 | 类型 | 内容 | 备注 |
|
||||
| ---- | ---- | ----------- | ---- |
|
||||
| 0 | obj | 父分类1 | |
|
||||
| n | obj | 父分类(n+1) | |
|
||||
| …… | obj | …… | …… |
|
||||
|
||||
`data`数组中的对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------ | ----- | ---------- | ---- |
|
||||
| id | num | 父分类id | |
|
||||
| name | str | 父分类名 | |
|
||||
| fields | array | 子分类列表 | |
|
||||
|
||||
`data`数组中的对象中的`fields`数组:
|
||||
|
||||
| 项 | 类型 | 内容 | 备注 |
|
||||
| ---- | ---- | ----------- | ---- |
|
||||
| 0 | obj | 子分类1 | |
|
||||
| n | obj | 子分类(n+1) | |
|
||||
| …… | obj | …… | …… |
|
||||
|
||||
`fields`数组中的对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ---- | ---- | -------- | ---- |
|
||||
| id | num | 子分类id | |
|
||||
| name | str | 子分类名 | |
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.bilibili.com/x/answer/v4/pro/type' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
旧版`edition=0`返回:
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "游戏",
|
||||
"fields": [
|
||||
{
|
||||
"id": 8,
|
||||
"name": "动作射击"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "冒险格斗"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "策略模拟 "
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "角色扮演 "
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "音乐体育 "
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "影视",
|
||||
"fields": [
|
||||
{
|
||||
"id": 15,
|
||||
"name": "纪录片 "
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "电影 "
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "电视剧 "
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "科技",
|
||||
"fields": [
|
||||
{
|
||||
"id": 18,
|
||||
"name": "军事 "
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "地理 "
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "历史 "
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "文学 "
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "数学 "
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "物理 "
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "化学 "
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "生物 "
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "数码科技 "
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "动画",
|
||||
"fields": [
|
||||
{
|
||||
"id": 27,
|
||||
"name": "动画声优 "
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "动漫内容 "
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "艺术",
|
||||
"fields": [
|
||||
{
|
||||
"id": 29,
|
||||
"name": "ACG音乐 "
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "三次元音乐 "
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "绘画 "
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "流行前线",
|
||||
"fields": [
|
||||
{
|
||||
"id": 32,
|
||||
"name": "娱乐 "
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "时尚 "
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "运动 "
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "鬼畜",
|
||||
"fields": [
|
||||
{
|
||||
"id": 35,
|
||||
"name": "鬼畜 "
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
新版`edition=2`返回:
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "游戏",
|
||||
"fields": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "游戏"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "影视",
|
||||
"fields": [
|
||||
{
|
||||
"id": 2,
|
||||
"name": "影视"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "科教/知识",
|
||||
"fields": [
|
||||
{
|
||||
"id": 3,
|
||||
"name": "科教/知识"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "动画/动漫",
|
||||
"fields": [
|
||||
{
|
||||
"id": 4,
|
||||
"name": "动画/动漫"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "音乐/舞蹈",
|
||||
"fields": [
|
||||
{
|
||||
"id": 5,
|
||||
"name": "音乐/舞蹈"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "明星/娱乐",
|
||||
"fields": [
|
||||
{
|
||||
"id": 32,
|
||||
"name": "明星/娱乐"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "鬼畜",
|
||||
"fields": [
|
||||
{
|
||||
"id": 35,
|
||||
"name": "鬼畜"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"name": "时尚/健身",
|
||||
"fields": [
|
||||
{
|
||||
"id": 42,
|
||||
"name": "时尚/健身"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
## 查询答题结果
|
||||
|
||||
> https://api.bilibili.com/x/answer/v4/result
|
||||
|
||||
*请求方式:GET*
|
||||
|
||||
认证方式:无
|
||||
|
||||
**url参数:**
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ------ | ---- | ---------- | ------ | ---- |
|
||||
| hid | num | 答题会话id | 必要 | |
|
||||
|
||||
**json回复:**
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ------- | ---- | -------- | ---------------------------------------------------------- |
|
||||
| code | num | 返回值 | 0:成功<br />-400:请求错误<br />41023:用户答题记录不存在 |
|
||||
| message | str | 错误信息 | 默认为0 |
|
||||
| ttl | num | 1 | |
|
||||
| data | obj | 信息本体 | |
|
||||
|
||||
`data`对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| ----------------- | ----- | ------------------------ | ----------------------------------- |
|
||||
| hid | num | 答题会话id | |
|
||||
| mid | num | 答题用户mid | |
|
||||
| member | num | | |
|
||||
| score | num | 得分 | |
|
||||
| level | num | 用户等级 | |
|
||||
| first_pass | num | | |
|
||||
| uname | str | 用户昵称 | |
|
||||
| face | str | 用户头像url | |
|
||||
| status | str | 答题结果 | failed:未通过<br />succeed:已通过 |
|
||||
| question_types | array | 已选择的自选题列表 | |
|
||||
| power | array | 自选题分类得分情况 | |
|
||||
| start_time | num | 开始答题时间 | 时间戳 |
|
||||
| share | obj | | |
|
||||
| can_show_rank_btn | bool | | |
|
||||
| is_same_user | bool | | |
|
||||
| view_more | str | | |
|
||||
| video_info | obj | | |
|
||||
| main_tids | array | | |
|
||||
| sub_tids | array | | |
|
||||
| power_result | null | | |
|
||||
| score_rate | num | 分数超过平均用户的百分比 | |
|
||||
| permission | obj | | |
|
||||
| rewards | null | | |
|
||||
|
||||
**示例:**
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.bilibili.com/x/answer/v4/result' \
|
||||
--data-urlencode 'hid=1615088061307609' \
|
||||
-b 'SESSDATA=xxx'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```json
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"hid": 1615088061307609,
|
||||
"mid": 1386643599,
|
||||
"member": 0,
|
||||
"score": 70,
|
||||
"level": 0,
|
||||
"first_pass": 0,
|
||||
"uname": "眉凭铱ひ前非",
|
||||
"face": "http://i0.hdslb.com/bfs/face/cd83d4cdbfb521455c168eaa181915b40cb664d1.jpg",
|
||||
"status": "succeed",
|
||||
"question_types": [
|
||||
{
|
||||
"id": 12,
|
||||
"name": "策略模拟 "
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "角色扮演 "
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "音乐体育 "
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "动作射击"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "冒险格斗"
|
||||
}
|
||||
],
|
||||
"power": [
|
||||
{
|
||||
"score": 0,
|
||||
"name": "动画"
|
||||
},
|
||||
{
|
||||
"score": 0,
|
||||
"name": "艺术"
|
||||
},
|
||||
{
|
||||
"score": 5,
|
||||
"name": "游戏"
|
||||
},
|
||||
{
|
||||
"score": 0,
|
||||
"name": "科技"
|
||||
},
|
||||
{
|
||||
"score": 0,
|
||||
"name": "影视"
|
||||
},
|
||||
{
|
||||
"score": 0,
|
||||
"name": "鬼畜"
|
||||
}
|
||||
],
|
||||
"start_time": 1615088061,
|
||||
"share": {
|
||||
"content": "",
|
||||
"short_content": ""
|
||||
},
|
||||
"can_show_rank_btn": false,
|
||||
"is_same_user": true,
|
||||
"view_more": "",
|
||||
"video_info": {
|
||||
"url": "",
|
||||
"name": "",
|
||||
"img": "",
|
||||
"watch_num": "",
|
||||
"up_num": ""
|
||||
},
|
||||
"main_tids": [],
|
||||
"sub_tids": [],
|
||||
"power_result": null,
|
||||
"score_rate": 84,
|
||||
"permission": {
|
||||
"reply": true,
|
||||
"color_dm": true
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
Reference in New Issue
Block a user