Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1424f73d2e |
@@ -1,12 +0,0 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: [SocialSisterYi]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
custom: https://afdian.com/@ShakaiAneE
|
||||
@@ -1,56 +0,0 @@
|
||||
name: "新增请求"
|
||||
description: "请求添加文档中未收录的 API 定义"
|
||||
title: "[新增请求] <title>"
|
||||
labels: ["新增/Add"]
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: reminders
|
||||
attributes:
|
||||
label: "提交前请确认"
|
||||
options:
|
||||
- label: "我已阅读贡献指南, 已检索仓库中文档,确认不包含所提及内容,且 Issues、Pull Requests 中无相关提交"
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: source
|
||||
attributes:
|
||||
label: "API 来源"
|
||||
description: "该 API 在何平台中使用"
|
||||
multiple: true
|
||||
options:
|
||||
- "Web 端(含 H5)"
|
||||
- "PC 客户端(Electron)"
|
||||
- "Android 客户端(含粉版、平板版、蓝版、概念版、国际版等)"
|
||||
- "TV 客户端(含云视听小电视、车机、物联网版等)"
|
||||
- "iOS 客户端(含粉版、平板版、概念版等)"
|
||||
- "必剪客户端"
|
||||
- "漫画客户端"
|
||||
- "其他(请在详情中备注)"
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: type
|
||||
attributes:
|
||||
label: "API 类型"
|
||||
description: "API 所使用的协议标准及调用方式"
|
||||
options:
|
||||
- "REST"
|
||||
- "gRPC"
|
||||
- "长连接数据帧(含 WS、TCP)"
|
||||
- "其他类型(请在详情中备注)"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
id: address
|
||||
attributes:
|
||||
label: "API 地址"
|
||||
description: "REST 的 URL,或 gRPC 的包名+服务名"
|
||||
placeholder: "eg: https://api.bilibili.com/2333333"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: details
|
||||
attributes:
|
||||
label: "详情描述"
|
||||
description: "请描述该 API 的使用场景、请求及响应字段等,可附上原始抓包记录"
|
||||
validations:
|
||||
required: true
|
||||
@@ -1,29 +0,0 @@
|
||||
name: "更新请求"
|
||||
description: "请求补充或更新文档中已有的 API 定义"
|
||||
title: "[更新请求] <title>"
|
||||
labels: ["更新/Update"]
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: reminders
|
||||
attributes:
|
||||
label: "提交前请确认"
|
||||
options:
|
||||
- label: "我已阅读贡献指南, 已确认文档中相关内容存在错误或不足,且 Issues、Pull Requests 中无相关提交"
|
||||
required: true
|
||||
- type: input
|
||||
id: document_link
|
||||
attributes:
|
||||
label: "原文档链接"
|
||||
description: |
|
||||
需要更新的文档链接,指定到具体 API<br>
|
||||
eg: https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/bangumi/info.md#获取剧集明细web端ssidepid方式<br>
|
||||
https://socialsisteryi.github.io/bilibili-API-collect/docs/bangumi/info.html#获取剧集明细-web端-ssid-epid方式
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: details
|
||||
attributes:
|
||||
label: "更新内容"
|
||||
description: "请指出原文档中与最新 API 行为不符之处,并附上已知的最新改动和验证信息"
|
||||
validations:
|
||||
required: true
|
||||
@@ -1,64 +0,0 @@
|
||||
name: "错误修正"
|
||||
description: "发现文档内容有误并提交修正请求"
|
||||
title: "[错误修正] <title>"
|
||||
labels: ["错误/Mistakes"]
|
||||
body:
|
||||
- type: checkboxes
|
||||
id: confirmations
|
||||
attributes:
|
||||
label: "提交前请确认"
|
||||
options:
|
||||
- label: "我已阅读贡献指南, 已确认文档中有错误存在,且 Issues、Pull Requests 中无相同修正"
|
||||
required: true
|
||||
- label: "我已验证修正内容的正确性"
|
||||
required: false
|
||||
|
||||
- type: input
|
||||
id: document_link
|
||||
attributes:
|
||||
label: "错误所在文档链接"
|
||||
description: |
|
||||
需要修正的文档链接,指定到具体 API<br>
|
||||
eg: https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/bangumi/info.md#获取剧集明细web端ssidepid方式<br>
|
||||
https://socialsisteryi.github.io/bilibili-API-collect/docs/bangumi/info.html#获取剧集明细-web端-ssid-epid方式
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
id: error_type
|
||||
attributes:
|
||||
label: "错误类型"
|
||||
multiple: true
|
||||
options:
|
||||
- "API 地址/鉴权方式错误"
|
||||
- "参数错误"
|
||||
- "响应数据结构或响应示例错误"
|
||||
- "描述性内容错误(如拼写/流程说明)"
|
||||
- "接口已弃用或下线"
|
||||
- "其他(请在下文说明)"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: error_description
|
||||
attributes:
|
||||
label: "错误描述"
|
||||
description: "请详细说明具体错误所在,如有多个错误请编号列出"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: evidence
|
||||
attributes:
|
||||
label: "纠错依据"
|
||||
description: "如果有,请提供抓包记录等佐证,方便确认。如果有多个错误,请将依据对应错误描述的编号列出"
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: correction
|
||||
attributes:
|
||||
label: "修正方案"
|
||||
description: "如果可以,请提供修正后的内容,如有多个修正点请编号列出"
|
||||
validations:
|
||||
required: false
|
||||
@@ -1,5 +0,0 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: 参与讨论
|
||||
url: https://github.com/SocialSisterYi/bilibili-API-collect/discussions
|
||||
about: 代码用例、情报分享等内容请使用 Discussions
|
||||
@@ -1,37 +0,0 @@
|
||||
name: deploy and publish
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
build-and-deploy:
|
||||
runs-on: ubuntu-latest
|
||||
# if: github.repository == 'SocialSisterYi/bilibili-API-collect'
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v4.0.3
|
||||
with:
|
||||
node-version: 22
|
||||
cache: yarn
|
||||
- name: Build with yarn
|
||||
run: yarn && yarn build
|
||||
- name: Commit & Push
|
||||
run: |
|
||||
cd .vuepress/dist/
|
||||
git init -b gh_pages
|
||||
git config user.name "github-actions"
|
||||
git config user.email "github-actions@github.com"
|
||||
git remote add origin https://user:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
|
||||
git add -A .
|
||||
git commit -m "generated"
|
||||
git push -fu origin gh_pages
|
||||
@@ -1,11 +0,0 @@
|
||||
/.vuepress/.cache/
|
||||
/.vuepress/.temp/
|
||||
/.vuepress/dist/
|
||||
/node_modules/
|
||||
.idea/
|
||||
.vscode/
|
||||
.DS_Store
|
||||
*.swp
|
||||
/*.*js
|
||||
/*.json
|
||||
/*.sh
|
||||
@@ -1,8 +0,0 @@
|
||||
import { defineClientConfig } from '@vuepress/client'
|
||||
import Layout from './theme/layouts/Layout.vue'
|
||||
|
||||
export default defineClientConfig({
|
||||
layouts: {
|
||||
Layout,
|
||||
},
|
||||
})
|
||||
@@ -1,64 +0,0 @@
|
||||
import { defineUserConfig } from "vuepress";
|
||||
import { viteBundler } from '@vuepress/bundler-vite'
|
||||
import { defaultTheme } from "@vuepress/theme-default";
|
||||
import markdownItTaskLists from "markdown-it-task-lists";
|
||||
import { searchPlugin } from "@vuepress/plugin-search";
|
||||
import { shikiPlugin } from '@vuepress/plugin-shiki'
|
||||
|
||||
const base = "/bilibili-API-collect/";
|
||||
|
||||
export default defineUserConfig({
|
||||
bundler: viteBundler(),
|
||||
base: base,
|
||||
lang: "zh-CN",
|
||||
title: "BAC Document",
|
||||
description: "社区开源的第三方哔哩哔哩 API 文档",
|
||||
head: [["link", { rel: "icon", href: base + "logo2.jpg" }]],
|
||||
locales: {
|
||||
"/": {
|
||||
lang: "zh-CN",
|
||||
},
|
||||
},
|
||||
theme: defaultTheme({
|
||||
logo: "/logo2.jpg",
|
||||
navbar: [
|
||||
{ text: "首页", link: "/" },
|
||||
{ text: "目录", link: "/#🍴目录" },
|
||||
{ text: "贡献指南", link: "/CONTRIBUTING.html" },
|
||||
{
|
||||
text: "相关社群",
|
||||
children: [
|
||||
{
|
||||
text: "QQ交流群(综合技术交流)",
|
||||
link: "http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ympvb3LAPT-Ulu3ezhGqbkJ8zXMKImOX&authKey=z1KdkOdKO3wytN43m9K6On9nBtnDL4pAoD6VQHCipFBb9TasNDKuDHCmOE6TF3uc&noverify=0&group_code=191187164",
|
||||
},
|
||||
{
|
||||
text: "Telegram交流群(Github Bot推送)",
|
||||
link: "https://t.me/bilibili_API_collect_community",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
repo: "https://github.com/SocialSisterYi/bilibili-API-collect",
|
||||
docsBranch: "master",
|
||||
editLinkText: "在 GitHub 上编辑此页",
|
||||
colorMode: "auto",
|
||||
themePlugins: {
|
||||
prismjs: false
|
||||
}
|
||||
}),
|
||||
plugins: [
|
||||
searchPlugin({}),
|
||||
shikiPlugin({
|
||||
theme: 'dark-plus',
|
||||
langs: [
|
||||
'javascript', 'typescript', 'markdown', 'protobuf', 'json', 'jsonc',
|
||||
'shell', 'go', 'html', 'http', 'java', 'kotlin', 'python', 'rust', 'c',
|
||||
'c++', 'cs', 'php', 'swift', 'text'
|
||||
]
|
||||
})
|
||||
],
|
||||
extendsMarkdown: (md) => {
|
||||
md.use(markdownItTaskLists);
|
||||
}
|
||||
});
|
||||
@@ -1,28 +0,0 @@
|
||||
<template>
|
||||
<ParentLayout>
|
||||
<template #page-bottom>
|
||||
<footer style="text-align: center">
|
||||
Copyright © 2020-2025
|
||||
<a href="https://github.com/SocialSisterYi/">SocialSisterYi</a> |
|
||||
<a
|
||||
href="https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE"
|
||||
>CC-BY-NC-4.0 Licensed</a
|
||||
>
|
||||
</footer>
|
||||
</template>
|
||||
</ParentLayout>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
/* README.md */
|
||||
.shields a {
|
||||
margin: auto .25em;
|
||||
}
|
||||
.shields a::after {
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script setup>
|
||||
import ParentLayout from '@vuepress/theme-default/layouts/Layout.vue';
|
||||
</script>
|
||||
@@ -1,285 +0,0 @@
|
||||
# 贡献指南
|
||||
|
||||
欢迎来到 bilibili-API-collect 社区贡献指南,本文主要面向想要对本项目参与贡献的用户, 请务必认真阅读本文正文与潜在的注释
|
||||
|
||||
## 总则
|
||||
|
||||
[bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect) 项目(简称 BAC 或 b-a-c)是一个仅用于学习研究、社区开源、公益性质的 [B 站(哔哩哔哩)](https://www.bilibili.com/)API(应用程序接口)文档,使用 [CC-BY-NC 4.0 协议](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE)开源,它将无差别收集整理相关的**主站业务接口**。
|
||||
|
||||
该项目使用 [Markdown](https://zh.wikipedia.org/zh-cn/Markdown) 语法进行文档书写,按照业务类型及功能以**路径**+**文件**形式索引,任何用户都可通过 Issue、Pull Request 与 Discussion 提供自己分析出的接口地址与使用说明。
|
||||
|
||||
本项目收集的接口类型包括但不限于 REST API、gRPC、WebSocket,文档内统一优先使用安全套接字协议,如 `https`、`securityRpc`、`wss`。
|
||||
|
||||
## Issue、Discussion 与社群讨论
|
||||
|
||||
对文档内容存在**不理解**之处、以及发现文档内容有所**缺失**或**错误**,可直接提出,强烈建议以提交 **Issue** 的形式 添加 / 补充 / 更新 文档中的说明,以发起 **Discussion** 的形式提出问题、代码用例、情报分享,并希望关于本项目的各种交流都是**公开进行**的,因为这样才可以保证关键信息的一致性。
|
||||
|
||||
提交 Issue 请遵守以下原则:
|
||||
|
||||
1. 标题需要点明 API 的用处, `<title>` 要替换为标题主要内容而不是保留不动,切勿仅填写 `补充`、`修复`,形式良好的标题可以是 `[新增请求] 新增 xx 接口`、`[更新请求] xx 接口地址已失效`、`[更新请求] xx 接口的参数有变化`
|
||||
2. 正文请按照 Issue 模板进行填写,标明 API 来源(Web、Android、iOS、TV 等)、API 类型(REST、gRPC、WebSocket 等)、API 地址
|
||||
3. 详情描述需要提供该 API 的使用场景、请求及响应字段等,可附上原始抓包记录 (文本格式优先);在更新时还需指出原文档中与最新 API 行为不符之处,并附上已知的最新改动。例如:“在前端页面某地址 / APP 某界面访问某 API(标明地址),它的某参数与文档中不符(标明文档地址)”
|
||||
|
||||
发起 Discussion 请遵守以下原则:
|
||||
|
||||
1. 标题言简意骇,说明欲提出的问题要点,如 `如何通过 xx 接口获取 yy`、`关于 xx 字段意义的探讨`、`建议将 xx 加入 yy 分类` 等标题;切勿使用表意含糊不清或索取性的标题,如 `怎么解决风控`、`搜索的接口是什么`、`好兄弟有没有投稿的接口` 等标题
|
||||
2. Discussion 正文应对遇到的问题进行尽可能详细的描述,展开并聚焦有关的信息,例如: “按照文档中某位置的说明进行了某操作,为什么无法获得预期结果”、“请问某 API 的某字段的具体含义是什么”
|
||||
3. 提出问题时注意[提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md)并且[别像弱智一样提问](https://github.com/tangx/Stop-Ask-Questions-The-Stupid-Ways)
|
||||
|
||||
同时,您还可以通过加入社群的方式参与讨论
|
||||
|
||||
- QQ 交流群:[邀请链接](https://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ympvb3LAPT-Ulu3ezhGqbkJ8zXMKImOX&authKey=z1KdkOdKO3wytN43m9K6On9nBtnDL4pAoD6VQHCipFBb9TasNDKuDHCmOE6TF3uc&noverify=0&group_code=191187164)
|
||||
- Telegram 交流群:[@bilibili_API_collect_community](https://t.me/bilibili_API_collect_community)
|
||||
|
||||
::: tip 提示
|
||||
|
||||
QQ 交流群为综合技术交流群(兼 Owner 的粉丝群),可交流探讨任何技术,包括但不限于 [BAC 项目](https://github.com/SocialSisterYi/bilibili-API-collect)
|
||||
|
||||
Telegram 交流群主要用作 [BAC 项目](https://github.com/SocialSisterYi/bilibili-API-collect)的 Github Bot 接收,也可以进行项目相关的讨论,但不建议在此讨论交流其他内容(公开群)
|
||||
|
||||
:::
|
||||
|
||||
::: warning 注意
|
||||
|
||||
群内讨论同样需要遵守**公开交流**的原则,以及群内会定期清理不活跃成员。
|
||||
|
||||
**QQ 交流群**的加群问题答案可以去 [Owner 的主页](https://github.com/SocialSisterYi) Contact 部分找到,如果您填写“我不知道,从 Github 来的”那么管理员将有理由禁止您进群讨论!
|
||||
|
||||
:::
|
||||
|
||||
::: danger 禁止
|
||||
|
||||
项目 Issue 及其相关社群中**禁止**询问讨论 风控解除、爬虫(采集)、破解、漏洞利用、买卖代码和账号 相关内容,抵制基于本项目进行的一切黑产行为!
|
||||
|
||||
:::
|
||||
|
||||
## 目录与路径结构
|
||||
|
||||
### 目录
|
||||
|
||||
文档目录以 **Markdown 无序列表**语法写在 [README.md](README.md) 中,使用缩进标识文档的层级,如 `视频` 下存在 `基本信息`、`快照`、`视频推荐`、`TAG` 等子分类,使用 **Markdown 复选框**语法该标注文档是否编写完成, 新文档写完后记得在目录添加入口
|
||||
|
||||
```markdown
|
||||
- [ ] 视频
|
||||
- [x] 基本信息
|
||||
- [x] 快照
|
||||
- [x] 视频推荐
|
||||
- [ ] TAG
|
||||
```
|
||||
|
||||
### 路径
|
||||
|
||||
路径层级应当与文档目录一致,以文件夹的形式存放在项目中的 `/docs` 路径下,命名统一使用英文小写,如 `video`、`danmaku`、`comment`, 不建议出现 `&` 等特殊字符
|
||||
|
||||
二级、三级路径应当存在二级三级目录,可选添加 `README.md` 以描述该子目录
|
||||
|
||||
### 文件
|
||||
|
||||
各个子接口集整理为 Markdown (.md) 文件,命名统一使用英文小写,如 `info.md`、`action.md`、`list.md`
|
||||
|
||||
文档文件中用于存放相关的接口的说明,如 `video/` 下的 `info.md`,存在 `查询视频基本信息`、`查询视频简介`、`查询视频分P列表` 等内容
|
||||
|
||||
## Markdown 文档内容格式
|
||||
|
||||
文档使用 [VuePress](https://vuepress.vuejs.org/) 生成,可以使用 [VuePress Markdown 扩展语法](https://vuepress.vuejs.org/guide/markdown.html)编写
|
||||
|
||||
注:以下文档范式主要针对接口类文档, 可根据**实际情况**进行调整, 你也可以使用 [`json-apidoc-gen`](https://github.com/SessionHu/json-apidoc-gen) 工具直接生成模板自行填充内容. 非接口类文档, 如算法等, 可以参考已有的内容
|
||||
|
||||
### 头部
|
||||
|
||||
文档首行为**一级标签**格式标题,如 `# 用户基本信息`
|
||||
|
||||
**文档头部不需要手写索引**,索引由 VuePress 自动生成
|
||||
|
||||
### 接口说明
|
||||
|
||||
文档中可存在多个接口说明,应当遵守同一范式,依次排列在文档中
|
||||
|
||||
接口说明分为 `标题`、`地址`、`说明`、`请求参数`、`响应正文`、`示例` 这些部分
|
||||
|
||||
接口标题为**二级以下**的标签<!--别顶着一级标题就开写-->,接口地址使用**块引用**语法,地址只保留 REST API 路径,不应携带 query 等内容
|
||||
|
||||
接口地址下方需要注明接口的请求方法,如 `GET`、`POST`、`PUT` 等,使用*斜体*语法
|
||||
|
||||
若接口存在认证或鉴权,需要在说明中注明,如 `Cookie (SESSDATA)`、`APP`(认证是针对用户的,鉴权是针对接口使用的)
|
||||
|
||||
其他使用说明也可写在这里,如 `限制游客访问的视频需要登录`
|
||||
|
||||
e.g.:
|
||||
|
||||
```markdown
|
||||
## 获取视频详细信息_web端
|
||||
|
||||
> https://api.bilibili.com/x/web-interface/view
|
||||
|
||||
*请求方法: GET*
|
||||
|
||||
认证方式: Cookie (SESSDATA)
|
||||
|
||||
限制游客访问的视频需要登录
|
||||
```
|
||||
|
||||
**请求参数**应在**接口说明**的下方,应注明参数类型 URL 参数或正文参数(正文参数应注明 `Content-Type`,如 `application/x-www-form-urlencoded` 或 `multipart/form-data`),使用**加粗**语法
|
||||
|
||||
对象的字段及其含义使用**表格**进行整理,表头统一依次为 `参数名`、`类型`、`内容`、`必要性`、`备注`,使用 `object`、`number`、`string`、`boolean`、`number[]`、`string[]`、`file` 等这种类似 TypeScript 的类型系统,必要性为 `必要`、`非必要`、`必要 (可选)` 等,表格内每个字段为一行
|
||||
|
||||
e.g.:
|
||||
|
||||
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|
||||
| ------ | ---- | --------- | ----------- | ----------------- |
|
||||
| aid | num | 稿件 avid | 必要 (可选) | avid 与 bvid 任选 |
|
||||
| bvid | str | 稿件 bvid | 必要 (可选) | avid 与 bvid 任选 |
|
||||
|
||||
**响应正文**应在**请求参数**的下方,接口响应的数据格式应标注,如 `JSON 回复`、`XML 回复`、`ProtoBuf 回复`,使用**加粗**语法
|
||||
|
||||
JSON Object 或 ProtoBuf Message 应以对象的**表格**形式书写,表头为 `根对象` 或 `xx 中的 yy 对象` 或 `xx.yy.zz 对象`,若对象位于数组中则为 `xx 数组中的对象` 或 `xx[] 中的对象`
|
||||
|
||||
表头统一依次为 `字段`、`类型`、`内容`、`备注`,类型为 JSON / Protobuf 的标准类型,具体同请求参数一致
|
||||
|
||||
不明确定义的字段说明在内容的末尾添加问号,如 `播放数?`;定义尚未明确的字段使用 `(?)` 在内容中占位,并在备注中填写 `作用尚不明确`
|
||||
|
||||
多个对象及数组,使用**遍历树**的顺序进行排列, 若数组中的每一项结构均相同也可以直接省略为像 `xxx 数组中的对象` 这样的格式
|
||||
|
||||
e.g.:
|
||||
|
||||
`data` 对象:
|
||||
|
||||
| 字段 | 类型 | 内容 | 备注 |
|
||||
| -------- | ---- | ----------- | ------------ |
|
||||
| bvid | str | 稿件 bvid | |
|
||||
| aid | num | 稿件 avid | |
|
||||
| videos | num | 稿件分P总数 | 默认为 1 |
|
||||
| tid | num | 分区 tid | |
|
||||
| no_cache | bool | (?) | 作用尚不明确 |
|
||||
|
||||
Json Array 或 ProtoBuf Repeated 类型使用数组的**表格**形式书写,表头统一依次为 `项`、`类型`、`内容`、`备注`,无限长度数组表尾需要添加**省略号**
|
||||
|
||||
数组每项内容若与实际数据有关联,`内容` 字段则可标为 `(n+1)P 视频内容` 这样的形式
|
||||
|
||||
e.g.:
|
||||
|
||||
`data` 中的 `pages` 数组:
|
||||
|
||||
| 项 | 类型 | 内容 | 备注 |
|
||||
| ---- | ---- | --------------- | ------------- |
|
||||
| 0 | obj | 1P 视频内容 | 无分 P 仅有此项 |
|
||||
| n | obj | (n+1)P 视频内容 | |
|
||||
| …… | obj | …… | …… |
|
||||
|
||||
**示例**部分位于所有**响应正文**部分下方,需要**加粗**格式,分为请求命令示例与响应体示例两部分
|
||||
|
||||
请求命令示例为一段可测试该接口的 cURL 命令或某种编程语言的代码,使用**代码块**语法书写,命令应当尽可能简短、便于使人阅读, 代码缩进为 **2** 个 **空格 (U+0020)**
|
||||
|
||||
示例命令中的认证信息应做**脱敏处理**,如 Cookie、Token、access_key 等,可替换为 `xxx` 占位
|
||||
|
||||
示例命令前后可以适当添加一些文字说明
|
||||
|
||||
响应体示例为一段格式化后的 JSON 或 ProtoBuf Message,使用**代码块**语法书写, 代码块语言填写清楚, 注意 `json` `jsonc` 区别. 并使用 `<details>` 标签进行折叠, 仍一律使用 **2** 个 **空格** 进行缩进
|
||||
|
||||
e.g.:
|
||||
|
||||
````markdown
|
||||
**示例:**
|
||||
|
||||
获取视频 `av85440373` 的基本信息
|
||||
|
||||
```shell
|
||||
curl -G 'https://api.bilibili.com/x/web-interface/view' \
|
||||
--data-urlencode 'aid=85440373'
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>查看响应示例:</summary>
|
||||
|
||||
```jsonc
|
||||
{
|
||||
"code": 0,
|
||||
"message": "0",
|
||||
"ttl": 1,
|
||||
"data": {
|
||||
"bvid": "BV117411r7R1",
|
||||
"aid": 85440373,
|
||||
"videos": 1,
|
||||
"tid": 28,
|
||||
"tname": "原创音乐",
|
||||
"copyright": 1,
|
||||
// ...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
</details>
|
||||
````
|
||||
|
||||
### 枚举值与属性位
|
||||
|
||||
接口返回或请求中若存在一些 enum 类型或二进制属性位,应当单独进行探讨,如视频的属性位 `attribute` 或视频清晰度 `qn`
|
||||
|
||||
这些值及其说明使用**表格**进行整理,表头统一为 `位` / `代码` / `值`、`含义`、`备注`
|
||||
|
||||
这些枚举值或属性位的用法应附加文字说明
|
||||
|
||||
e.g.:
|
||||
|
||||
| 值 | 含义 | 备注 |
|
||||
| ---- | ------------- | ------------------------------------------------------------ |
|
||||
| 6 | 240P 极速 | 仅 MP4 格式支持<br />仅 `platform=html5` 时有效 |
|
||||
| 16 | 360P 流畅 | |
|
||||
| 32 | 480P 清晰 | |
|
||||
| 64 | 720P 高清 | WEB 端默认值<br />B 站前端需要登录才能选择,但是直接发送请求可以不登录就拿到 720P 的取流地址<br />**无 720P 时则为 720P60** |
|
||||
| 74 | 720P60 高帧率 | 需要登录认证 |
|
||||
| 80 | 1080P 高清 | TV 端与 APP 端默认值<br />需要登录认证 |
|
||||
|
||||
## Proto 定义格式
|
||||
|
||||
proto 文件为 [Protocol Buffers](https://protobuf.dev/) 以及 [gRPC](https://grpc.io/docs/) 的数据结构体定义,多用于客户端的接口,本文档也做相关的收集
|
||||
|
||||
存放于项目的 `/grpc_api` 路径下,使用包名进行路径层级的组织,如:
|
||||
|
||||
```
|
||||
/grpc_api/bilibili/main/community/reply/v1/reply.proto
|
||||
/grpc_api/bilibili/app/archive/v1/archive.proto
|
||||
/grpc_api/bilibili/app/view/v1/view.proto
|
||||
```
|
||||
|
||||
proto 文件内使用**单行注释**标注字段或对象的含义,如:
|
||||
|
||||
```protobuf
|
||||
// UP主信息
|
||||
message Author {
|
||||
// UP主mid
|
||||
int64 mid = 1;
|
||||
// UP主昵称
|
||||
string name = 2;
|
||||
// UP主头像url
|
||||
string face = 3;
|
||||
}
|
||||
```
|
||||
|
||||
## 文档提交
|
||||
|
||||
### 拉取 (Pull) 与 提交 (Commit)
|
||||
|
||||
本项目仓库仅托管于 GitHub, 使用 Git 作为版本控制系统, 你需要对两者有基础的了解
|
||||
|
||||
请先 fork, 然后在自己的 fork 上进行修改<!--废话-->
|
||||
|
||||
提交的标题不要使用默认的 `Update xxx`, 请遵循 [Conventional Commits (约定式提交) 规范](https://www.conventionalcommits.org/zh-hans/v1.0.0/), 标题语言可根据个人习惯
|
||||
|
||||
<!--下面这两段属于常识, 但好像还有人不知道-->
|
||||
当发现远程与本地仓库不一致时, 若你操作的 fork 的 branch 无打开的 PR, 建议使用变基拉取, 而不是生成一个额外的合并提交的合并拉取, 反之则相反
|
||||
|
||||
移动文件请使用 `git mv`, 而不是删除并添加同一个文件于不同位置 (该问题在 VSCode 的 GUI 版 Git 中存在<!--某个易姓owner干过-->), 以便后续 blame 操作
|
||||
|
||||
### 拉取请求 (Pull Request)
|
||||
|
||||
使用 拉取请求 (Pull Request, PR) 将修改后的文档提交到 `master` 分支,标题需写明修改或新增的内容, 同样也需要遵循约定式提交规范, `gh_pages` 分支将在 PR 合并后自动更新
|
||||
|
||||
如果你还没有完成计划的全部修改, 请创建 Draft Pull Request 表示你还没有做好被合并的准备 ~~(抢占先机, 精神可嘉, 值得鼓励)~~
|
||||
|
||||
PR 正文使用 **无序列表** 写明更改的每一项内容, 可以使用复选框表明进度, 需要关闭的 Issue 请使用 `close #xxxx` 这样的格式一并包含在内
|
||||
|
||||
如果内容包含代码等, 请一并提供测试的输入与输出的文本或截图, 最好可以附上完整的测试环境及相关可执行文件等
|
||||
|
||||
<!--这也是常识喵-->
|
||||
PR 合并后, 请及时删除或更新分支. 特别是在使用压缩合并或变基合并后, 请 `Discard changes` 或直接删除分支, 以免在下一次 PR 后出现重复相同提交的问题
|
||||
@@ -1,352 +0,0 @@
|
||||
Creative Commons Attribution-NonCommercial 4.0 International
|
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright and
|
||||
certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
- Considerations for licensors: Our public licenses are intended for
|
||||
use by those authorized to give the public permission to use
|
||||
material in ways otherwise restricted by copyright and certain other
|
||||
rights. Our licenses are irrevocable. Licensors should read and
|
||||
understand the terms and conditions of the license they choose
|
||||
before applying it. Licensors should also secure all rights
|
||||
necessary before applying our licenses so that the public can reuse
|
||||
the material as expected. Licensors should clearly mark any material
|
||||
not subject to the license. This includes other CC-licensed
|
||||
material, or material used under an exception or limitation to
|
||||
copyright. More considerations for licensors :
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
- Considerations for the public: By using one of our public licenses,
|
||||
a licensor grants the public permission to use the licensed material
|
||||
under specified terms and conditions. If the licensor's permission
|
||||
is not necessary for any reason–for example, because of any
|
||||
applicable exception or limitation to copyright–then that use is not
|
||||
regulated by the license. Our licenses grant only permissions under
|
||||
copyright and certain other rights that a licensor has authority to
|
||||
grant. Use of the licensed material may still be restricted for
|
||||
other reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests, such
|
||||
as asking that all changes be marked or described. Although not
|
||||
required by our licenses, you are encouraged to respect those
|
||||
requests where reasonable. More considerations for the public :
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
Creative Commons Attribution-NonCommercial 4.0 International Public
|
||||
License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-NonCommercial 4.0 International Public License ("Public
|
||||
License"). To the extent this Public License may be interpreted as a
|
||||
contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You
|
||||
such rights in consideration of benefits the Licensor receives from
|
||||
making the Licensed Material available under these terms and conditions.
|
||||
|
||||
- Section 1 – Definitions.
|
||||
|
||||
- a. Adapted Material means material subject to Copyright and
|
||||
Similar Rights that is derived from or based upon the Licensed
|
||||
Material and in which the Licensed Material is translated,
|
||||
altered, arranged, transformed, or otherwise modified in a
|
||||
manner requiring permission under the Copyright and Similar
|
||||
Rights held by the Licensor. For purposes of this Public
|
||||
License, where the Licensed Material is a musical work,
|
||||
performance, or sound recording, Adapted Material is always
|
||||
produced where the Licensed Material is synched in timed
|
||||
relation with a moving image.
|
||||
- b. Adapter's License means the license You apply to Your
|
||||
Copyright and Similar Rights in Your contributions to Adapted
|
||||
Material in accordance with the terms and conditions of this
|
||||
Public License.
|
||||
- c. Copyright and Similar Rights means copyright and/or similar
|
||||
rights closely related to copyright including, without
|
||||
limitation, performance, broadcast, sound recording, and Sui
|
||||
Generis Database Rights, without regard to how the rights are
|
||||
labeled or categorized. For purposes of this Public License, the
|
||||
rights specified in Section 2(b)(1)-(2) are not Copyright and
|
||||
Similar Rights.
|
||||
- d. Effective Technological Measures means those measures that,
|
||||
in the absence of proper authority, may not be circumvented
|
||||
under laws fulfilling obligations under Article 11 of the WIPO
|
||||
Copyright Treaty adopted on December 20, 1996, and/or similar
|
||||
international agreements.
|
||||
- e. Exceptions and Limitations means fair use, fair dealing,
|
||||
and/or any other exception or limitation to Copyright and
|
||||
Similar Rights that applies to Your use of the Licensed
|
||||
Material.
|
||||
- f. Licensed Material means the artistic or literary work,
|
||||
database, or other material to which the Licensor applied this
|
||||
Public License.
|
||||
- g. Licensed Rights means the rights granted to You subject to
|
||||
the terms and conditions of this Public License, which are
|
||||
limited to all Copyright and Similar Rights that apply to Your
|
||||
use of the Licensed Material and that the Licensor has authority
|
||||
to license.
|
||||
- h. Licensor means the individual(s) or entity(ies) granting
|
||||
rights under this Public License.
|
||||
- i. NonCommercial means not primarily intended for or directed
|
||||
towards commercial advantage or monetary compensation. For
|
||||
purposes of this Public License, the exchange of the Licensed
|
||||
Material for other material subject to Copyright and Similar
|
||||
Rights by digital file-sharing or similar means is NonCommercial
|
||||
provided there is no payment of monetary compensation in
|
||||
connection with the exchange.
|
||||
- j. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance,
|
||||
distribution, dissemination, communication, or importation, and
|
||||
to make material available to the public including in ways that
|
||||
members of the public may access the material from a place and
|
||||
at a time individually chosen by them.
|
||||
- k. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and
|
||||
of the Council of 11 March 1996 on the legal protection of
|
||||
databases, as amended and/or succeeded, as well as other
|
||||
essentially equivalent rights anywhere in the world.
|
||||
- l. You means the individual or entity exercising the Licensed
|
||||
Rights under this Public License. Your has a corresponding
|
||||
meaning.
|
||||
|
||||
- Section 2 – Scope.
|
||||
|
||||
- a. License grant.
|
||||
- 1. Subject to the terms and conditions of this Public
|
||||
License, the Licensor hereby grants You a worldwide,
|
||||
royalty-free, non-sublicensable, non-exclusive, irrevocable
|
||||
license to exercise the Licensed Rights in the Licensed
|
||||
Material to:
|
||||
- A. reproduce and Share the Licensed Material, in whole
|
||||
or in part, for NonCommercial purposes only; and
|
||||
- B. produce, reproduce, and Share Adapted Material for
|
||||
NonCommercial purposes only.
|
||||
- 2. Exceptions and Limitations. For the avoidance of doubt,
|
||||
where Exceptions and Limitations apply to Your use, this
|
||||
Public License does not apply, and You do not need to comply
|
||||
with its terms and conditions.
|
||||
- 3. Term. The term of this Public License is specified in
|
||||
Section 6(a).
|
||||
- 4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter
|
||||
created, and to make technical modifications necessary to do
|
||||
so. The Licensor waives and/or agrees not to assert any
|
||||
right or authority to forbid You from making technical
|
||||
modifications necessary to exercise the Licensed Rights,
|
||||
including technical modifications necessary to circumvent
|
||||
Effective Technological Measures. For purposes of this
|
||||
Public License, simply making modifications authorized by
|
||||
this Section 2(a)(4) never produces Adapted Material.
|
||||
- 5. Downstream recipients.
|
||||
- A. Offer from the Licensor – Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
- B. No downstream restrictions. You may not offer or
|
||||
impose any additional or different terms or conditions
|
||||
on, or apply any Effective Technological Measures to,
|
||||
the Licensed Material if doing so restricts exercise of
|
||||
the Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
- 6. No endorsement. Nothing in this Public License
|
||||
constitutes or may be construed as permission to assert or
|
||||
imply that You are, or that Your use of the Licensed
|
||||
Material is, connected with, or sponsored, endorsed, or
|
||||
granted official status by, the Licensor or others
|
||||
designated to receive attribution as provided in Section
|
||||
3(a)(1)(A)(i).
|
||||
- b. Other rights.
|
||||
- 1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however,
|
||||
to the extent possible, the Licensor waives and/or agrees
|
||||
not to assert any such rights held by the Licensor to the
|
||||
limited extent necessary to allow You to exercise the
|
||||
Licensed Rights, but not otherwise.
|
||||
- 2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
- 3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties, including when
|
||||
the Licensed Material is used other than for NonCommercial
|
||||
purposes.
|
||||
|
||||
- Section 3 – License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to
|
||||
the following conditions.
|
||||
|
||||
- a. Attribution.
|
||||
- 1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
- A. retain the following if it is supplied by the
|
||||
Licensor with the Licensed Material:
|
||||
- i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if designated);
|
||||
- ii. a copyright notice;
|
||||
- iii. a notice that refers to this Public License;
|
||||
- iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
- v. a URI or hyperlink to the Licensed Material to
|
||||
the extent reasonably practicable;
|
||||
- B. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
- C. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
- 2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may
|
||||
be reasonable to satisfy the conditions by providing a URI
|
||||
or hyperlink to a resource that includes the required
|
||||
information.
|
||||
- 3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
- 4. If You Share Adapted Material You produce, the Adapter's
|
||||
License You apply must not prevent recipients of the Adapted
|
||||
Material from complying with this Public License.
|
||||
|
||||
- Section 4 – Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
- a. for the avoidance of doubt, Section 2(a)(1) grants You the
|
||||
right to extract, reuse, reproduce, and Share all or a
|
||||
substantial portion of the contents of the database for
|
||||
NonCommercial purposes only;
|
||||
- b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material;
|
||||
and
|
||||
- c. You must comply with the conditions in Section 3(a) if You
|
||||
Share all or a substantial portion of the contents of the
|
||||
database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the
|
||||
Licensed Rights include other Copyright and Similar Rights.
|
||||
|
||||
- Section 5 – Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
- a. Unless otherwise separately undertaken by the Licensor, to
|
||||
the extent possible, the Licensor offers the Licensed Material
|
||||
as-is and as-available, and makes no representations or
|
||||
warranties of any kind concerning the Licensed Material, whether
|
||||
express, implied, statutory, or other. This includes, without
|
||||
limitation, warranties of title, merchantability, fitness for a
|
||||
particular purpose, non-infringement, absence of latent or other
|
||||
defects, accuracy, or the presence or absence of errors, whether
|
||||
or not known or discoverable. Where disclaimers of warranties
|
||||
are not allowed in full or in part, this disclaimer may not
|
||||
apply to You.
|
||||
- b. To the extent possible, in no event will the Licensor be
|
||||
liable to You on any legal theory (including, without
|
||||
limitation, negligence) or otherwise for any direct, special,
|
||||
indirect, incidental, consequential, punitive, exemplary, or
|
||||
other losses, costs, expenses, or damages arising out of this
|
||||
Public License or use of the Licensed Material, even if the
|
||||
Licensor has been advised of the possibility of such losses,
|
||||
costs, expenses, or damages. Where a limitation of liability is
|
||||
not allowed in full or in part, this limitation may not apply to
|
||||
You.
|
||||
- c. The disclaimer of warranties and limitation of liability
|
||||
provided above shall be interpreted in a manner that, to the
|
||||
extent possible, most closely approximates an absolute
|
||||
disclaimer and waiver of all liability.
|
||||
|
||||
- Section 6 – Term and Termination.
|
||||
|
||||
- a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply
|
||||
with this Public License, then Your rights under this Public
|
||||
License terminate automatically.
|
||||
- b. Where Your right to use the Licensed Material has terminated
|
||||
under Section 6(a), it reinstates:
|
||||
|
||||
- 1. automatically as of the date the violation is cured,
|
||||
provided it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
- 2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect
|
||||
any right the Licensor may have to seek remedies for Your
|
||||
violations of this Public License.
|
||||
|
||||
- c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing
|
||||
so will not terminate this Public License.
|
||||
- d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
- Section 7 – Other Terms and Conditions.
|
||||
|
||||
- a. The Licensor shall not be bound by any additional or
|
||||
different terms or conditions communicated by You unless
|
||||
expressly agreed.
|
||||
- b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
- Section 8 – Interpretation.
|
||||
|
||||
- a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could
|
||||
lawfully be made without permission under this Public License.
|
||||
- b. To the extent possible, if any provision of this Public
|
||||
License is deemed unenforceable, it shall be automatically
|
||||
reformed to the minimum extent necessary to make it enforceable.
|
||||
If the provision cannot be reformed, it shall be severed from
|
||||
this Public License without affecting the enforceability of the
|
||||
remaining terms and conditions.
|
||||
- c. No term or condition of this Public License will be waived
|
||||
and no failure to comply consented to unless expressly agreed to
|
||||
by the Licensor.
|
||||
- d. Nothing in this Public License constitutes or may be
|
||||
interpreted as a limitation upon, or waiver of, any privileges
|
||||
and immunities that apply to the Licensor or You, including from
|
||||
the legal processes of any jurisdiction or authority.
|
||||
|
||||
Creative Commons is not a party to its public licenses. Notwithstanding,
|
||||
Creative Commons may elect to apply one of its public licenses to
|
||||
material it publishes and in those instances will be considered the
|
||||
"Licensor." The text of the Creative Commons public licenses is
|
||||
dedicated to the public domain under the CC0 Public Domain Dedication.
|
||||
Except for the limited purpose of indicating that material is shared
|
||||
under a Creative Commons public license or as otherwise permitted by the
|
||||
Creative Commons policies published at creativecommons.org/policies,
|
||||
Creative Commons does not authorize the use of the trademark "Creative
|
||||
Commons" or any other trademark or logo of Creative Commons without its
|
||||
prior written consent including, without limitation, in connection with
|
||||
any unauthorized modifications to any of its public licenses or any
|
||||
other arrangements, understandings, or agreements concerning use of
|
||||
licensed material. For the avoidance of doubt, this paragraph does not
|
||||
form part of the public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
@@ -1,408 +0,0 @@
|
||||
<p align="center">
|
||||
<img src="./assets/img/logo.png" width="250" height="200" />
|
||||
</p>
|
||||
<h1 align="center">哔哩哔哩 - API 收集整理</h1>
|
||||
<p align="center" class="shields">
|
||||
<a href="https://github.com/SocialSisterYi/bilibili-API-collect/issues" style="text-decoration: none;">
|
||||
<img src="https://img.shields.io/github/issues/SocialSisterYi/bilibili-API-collect.svg?style=flat&color=red" alt="GitHub issues"/>
|
||||
</a>
|
||||
<a href="https://github.com/SocialSisterYi/bilibili-API-collect/stargazers" style="text-decoration: none;">
|
||||
<img src="https://img.shields.io/github/stars/SocialSisterYi/bilibili-API-collect.svg?style=flat&color=yellow" alt="GitHub stars"/>
|
||||
</a>
|
||||
<a href="https://github.com/SocialSisterYi/bilibili-API-collect/network" style="text-decoration: none;">
|
||||
<img src="https://img.shields.io/github/forks/SocialSisterYi/bilibili-API-collect.svg?style=flat&color=blue" alt="GitHub forks"/>
|
||||
</a>
|
||||
<a href="https://github.com/SocialSisterYi/bilibili-API-collect/actions" style="text-decoration: none;">
|
||||
<img src="https://img.shields.io/github/actions/workflow/status/SocialSisterYi/bilibili-API-collect/vuepress-deploy.yml?style=flat" alt="Build status"/>
|
||||
</a>
|
||||
<a href="https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE" style="text-decoration: none;">
|
||||
<img src="https://img.shields.io/badge/License-CC%20BY--NC%204.0-lightgrey.svg?style=flat" alt="GitHub license"/>
|
||||
</a>
|
||||
</p>
|
||||
<p align="center" class="trendshift">
|
||||
<a href="https://trendshift.io/repositories/3218" target="_blank">
|
||||
<img src="https://trendshift.io/api/badge/repositories/3218" alt="Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/>
|
||||
</a>
|
||||
</p>
|
||||
<h3 align="center">野生 API 文档</h3>
|
||||
<h3 align="center">不断更新中....</h3>
|
||||
|
||||
本项目旨在对 B 站 WEB、APP、TV 等客户端中,散落在世界各地的野生 API 进行收集整理,研究使用方法并对其进行说明,运用了黑箱法、控制变量法、代码逆向分析、拆包及反编译法、网络抓包法等研究办法
|
||||
|
||||
本文档探讨的对象是主站业务接口,[官方开放平台](https://openhome.bilibili.com/doc) 和 [直播开放平台](https://open-live.bilibili.com/document/) 均不属于本项目范畴,请移步
|
||||
|
||||
B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接口为 WebSocket;REST API 接口请求数据大多为 url query 表单或 JSON,返回数据大多为 JSON 或 Protobuf,强制使用 https 协议
|
||||
|
||||
📖阅读地址:[Github Pages](https://socialsisteryi.github.io/bilibili-API-collect/)
|
||||
|
||||
小小的 Demo:~~av583785685~~ [视频失效原因](https://shakaianee.top/archives/56/) ([Youtube 备链](https://www.youtube.com/watch?v=nfF91Z6fqGk))
|
||||
|
||||
::: warning 声明
|
||||
|
||||
1. 本项目遵守 CC-BY-NC 4.0 协议,禁止一切商业使用,如需转载请注明作者 ID
|
||||
2. **请勿滥用,本项目仅用于学习和测试!请勿滥用,本项目仅用于学习和测试!请勿滥用,本项目仅用于学习和测试!**
|
||||
3. 利用本项目提供的接口、文档等造成不良影响及后果与本人无关
|
||||
4. 由于本项目的特殊性,可能随时停止开发或删档
|
||||
5. 本项目为开源项目,不接受任何形式的催单和索取行为,更不容许存在付费内容
|
||||
6. **上传任何信息时请注意脱敏,删去账户密码、敏感 cookies 等可能泄漏个人信息的数据(例如 `SESSDATA`、`bili_jct` 之类的 cookies)**
|
||||
|
||||
:::
|
||||
|
||||
## 🌱参与贡献
|
||||
|
||||
欢迎各位 dalao 对本项目做出贡献,也希望每个使用者都能提出宝贵的意见
|
||||
|
||||
目前本项目存在的问题包括但不限于:
|
||||
|
||||
1. 文档二级目录尚未完成
|
||||
2. 部分文档较旧,修改与更新没有跟进
|
||||
3. 目前文档使用 Markdown 语法编写,不易生成编程语言的 SDK,详见 [#604](https://github.com/SocialSisterYi/bilibili-API-collect/issues/604)
|
||||
|
||||
更多信息请浏览 [贡献指南](CONTRIBUTING.md)
|
||||
|
||||
## 🍴目录
|
||||
|
||||
计划整理分类 & 目录:(文档已完结请选中 checkbox)
|
||||
|
||||
- [ ] [接口签名与验证](docs/misc/sign)
|
||||
- [x] [APP API 签名](docs/misc/sign/APP.md)(`appkey` 与 `sign`)
|
||||
- [x] [已知的 APPKey](docs/misc/sign/APPKey.md)
|
||||
- [x] [Wbi 签名](docs/misc/sign/wbi.md)(`wts`与`w_rid`)
|
||||
- [ ] [bili_ticket](docs/misc/sign/bili_ticket.md)
|
||||
- [ ] [v_voucher 验证](docs/misc/sign/v_voucher.md)
|
||||
- [ ] [杂项](docs/misc)
|
||||
- [x] [获取当前时间戳](docs/misc/time_stamp.md)
|
||||
- [x] [公共错误码](docs/misc/errcode.md)
|
||||
- [x] [图片格式化](docs/misc/picture.md)
|
||||
- [x] [表达式渲染](docs/misc/mathjax.md)
|
||||
- [x] [bvid 说明](docs/misc/bvid_desc.md)
|
||||
- [ ] [设备唯一标识 BUVID](docs/misc/device_identity.md)
|
||||
- [ ] [获取 buvid3 / buvid4 / b_nut](docs/misc/buvid3_4.md)
|
||||
- [ ] [b23.tv 短链](docs/misc/b23tv.md)
|
||||
- [ ] [gRPC API 接口定义](grpc_api)
|
||||
- [ ] [登录](docs/login)
|
||||
- [x] [登录操作 (人机认证)](docs/login/login_action)
|
||||
- [x] [短信登录](docs/login/login_action/SMS.md)
|
||||
- [x] [密码登录](docs/login/login_action/password.md)
|
||||
- [x] [二维码登录](docs/login/login_action/QR.md)
|
||||
- [ ] SNS 登录 (QQ & 微信 & 微博)
|
||||
- [x] [登录基本信息](docs/login/login_info.md)
|
||||
- [ ] [个人中心](docs/login/member_center.md)
|
||||
- [ ] [注销登录](docs/login/exit.md)
|
||||
- [x] [登录记录](docs/login/login_notice.md)
|
||||
- [x] [Web 端 Cookie 刷新](docs/login/cookie_refresh.md)
|
||||
- [ ] [消息中心](docs/message)
|
||||
- [ ] [通知类消息](docs/message/msg.md)
|
||||
- [x] [私信](docs/message/private_msg.md)
|
||||
- [x] [私信消息类型、内容说明](docs/message/private_msg_content.md)
|
||||
- [x] [设置](docs/message/settings.md)
|
||||
- [ ] [用户](docs/user)
|
||||
- [x] [基本信息](docs/user/info.md)
|
||||
- [x] [状态数](docs/user/status_number.md)
|
||||
- [x] [关系](docs/user/relation.md)
|
||||
- [ ] [个人空间](docs/user/space.md)
|
||||
- [x] ~~[检查昵称是否可注册](docs/user/check_nickname.md)~~ (已失效)
|
||||
- [x] [用户注册](docs/user/register.md)
|
||||
- [x] [用户认证类型一览](docs/user/official_role.md)
|
||||
- [ ] [加入老粉计划](docs/user/contract.md)
|
||||
- [x] [所有粉丝勋章](docs/user/medals.md)
|
||||
- [ ] [批量查询](docs/user/batch.md)
|
||||
- [ ] [大会员](docs/vip)
|
||||
- [ ] [大会员基本信息](docs/vip/info.md)
|
||||
- [ ] [大会员中心](docs/vip/center.md)
|
||||
- [ ] [大会员签到](docs/vip/clockin.md)
|
||||
- [ ] [大会员操作](docs/vip/action.md)
|
||||
- [ ] [视频](docs/video)
|
||||
- [x] [视频分区一览 (分区代码)](docs/video/video_zone.md)
|
||||
- [ ] [视频分区一览 (分区代码) (v2)](docs/video/video_zone_v2.md)
|
||||
- [x] [基本信息](docs/video/info.md)
|
||||
- [x] ~~[状态数](docs/video/status_number.md)~~ (已失效)
|
||||
- [x] [快照](docs/video/snapshot.md)
|
||||
- [x] [点赞 & 投币 & 收藏 & 分享](docs/video/action.md)
|
||||
- [ ] [TAG](docs/video/tags.md)
|
||||
- [x] [视频推荐](docs/video/recommend.md)
|
||||
- [x] [播放 & 下载地址 (视频流)](docs/video/videostream_url.md)
|
||||
- [ ] [互动视频](docs/video/interact_video.md)
|
||||
- [x] [高能进度条](docs/video/pbp.md)
|
||||
- [ ] [信息上报 (心跳及记录历史)](docs/video/report.md)
|
||||
- [x] [视频属性数据](docs/video/attribute_data.md)
|
||||
- [x] [视频在线人数](docs/video/online.md)
|
||||
- [x] [视频 AI 摘要](docs/video/summary.md)
|
||||
- [ ] [稿件投诉](docs/video/appeal.md)
|
||||
- [ ] [视频合集](docs/video/collection.md)
|
||||
- [ ] [播放器](docs/video/player.md)
|
||||
- [ ] [剧集 (番剧、影视)](docs/bangumi)
|
||||
- [ ] [基本信息](docs/bangumi/info.md)
|
||||
- [ ] [播放 & 下载地址(视频流)](docs/bangumi/videostream_url.md)
|
||||
- [ ] [时间轴](docs/bangumi/timeline.md)
|
||||
- [ ] [索引](docs/bangumi/season_index.md)
|
||||
- [ ] [追番相关](docs/bangumi/follow.md)
|
||||
- [ ] 状态数
|
||||
- [ ] 操作
|
||||
- [ ] [视频弹幕](docs/danmaku)
|
||||
- [x] [protobuf 实时弹幕](docs/danmaku/danmaku_proto.md)
|
||||
- [x] [protobuf 弹幕元数据(BAS 弹幕 / 互动弹幕)](docs/danmaku/danmaku_view_proto.md)
|
||||
- [x] [xml 实时弹幕](docs/danmaku/danmaku_xml.md)
|
||||
- [x] [历史弹幕](docs/danmaku/history.md)
|
||||
- [x] [快照](docs/danmaku/snapshot.md)
|
||||
- [ ] [弹幕操作](docs/danmaku/action.md)
|
||||
- [ ] 高级弹幕
|
||||
- [ ] 屏蔽管理
|
||||
- [ ] [智能防挡弹幕](docs/danmaku/webmask.md)
|
||||
- [x] [弹幕个人配置修改](docs/danmaku/config.md)
|
||||
- [x] [名词解释](docs/danmaku/buzzword.md)
|
||||
- [x] [点赞查询](docs/danmaku/thumbup.md)
|
||||
- [x] [视频笔记](docs/note)
|
||||
- [x] [笔记列表](docs/note/list.md)
|
||||
- [x] [笔记详细信息](docs/note/info.md)
|
||||
- [x] [笔记操作](docs/note/action.md)
|
||||
- [ ] [图文](docs/opus)
|
||||
- [x] [图文详细](docs/opus/detail.md)
|
||||
- [x] [空间图文](docs/opus/space.md)
|
||||
- [ ] [功能模块](docs/opus/features.md)
|
||||
- [ ] [富文本节点](docs/opus/rich_text_nodes.md)
|
||||
- [ ] [专栏](docs/article)
|
||||
- [ ] [专栏内容](docs/article/view.md)
|
||||
- [ ] [专栏分类](docs/article/category.md)
|
||||
- [x] [卡片信息](docs/article/card.md)
|
||||
- [X] [基本信息](docs/article/info.md)
|
||||
- [X] [点赞 & 投币 & 收藏 & 分享](docs/article/action.md)
|
||||
- [X] [文集基本信息](docs/article/articles.md)
|
||||
- [ ] [动态](docs/dynamic)
|
||||
- [ ] [获取动态列表](docs/dynamic/all.md)
|
||||
- [ ] [用户空间动态](docs/dynamic/space.md)
|
||||
- [ ] [动态基本信息](docs/dynamic/basicInfo.md)
|
||||
- [ ] [动态卡片信息字段](docs/dynamic/card_info.md)
|
||||
- [ ] [获取动态详情](docs/dynamic/detail.md)
|
||||
- [ ] [动态类型对照](docs/dynamic/dynamic_enum.md)
|
||||
- [ ] [动态信息](docs/dynamic/content.md)
|
||||
- [ ] [发送 & 转载动态](docs/dynamic/publish.md)
|
||||
- [ ] [根据关键字搜索用户(at 别人时的填充列表)](docs/dynamic/atlist.md)
|
||||
- [ ] [操作](docs/dynamic/action.md)
|
||||
- [ ] [话题](docs/dynamic/topic.md)
|
||||
- [ ] [动态内容](docs/dynamic/get_dynamic_detail.md)
|
||||
- [ ] [导航栏动态](docs/dynamic/nav.md)
|
||||
- [x] [首页公告栏](docs/dynamic/banner.md)
|
||||
- [ ] [创作中心](docs/creativecenter)
|
||||
- [ ] [投稿](docs/creativecenter/upload.md)
|
||||
- [ ] [统计与数据](docs/creativecenter/statistics&data.md)
|
||||
- [ ] 列表查询相关
|
||||
- [x] [电磁力数据](docs/creativecenter/railgun.md)
|
||||
- [ ] [合集管理](docs/creativecenter/season.md)
|
||||
- [ ] [视频相关杂项](docs/creativecenter/videos.md)
|
||||
- [ ] [图文操作](docs/creativecenter/opus.md)
|
||||
- [ ] [音频](docs/audio)
|
||||
- [x] [歌曲基本信息](docs/audio/info.md)
|
||||
- [ ] [歌单 & 音频收藏夹详细信息](docs/audio/music_list.md)
|
||||
- [ ] [状态数](docs/audio/status_number.md)
|
||||
- [ ] [投币 & 收藏](docs/audio/action.md)
|
||||
- [x] [播放 & 下载地址(音频流)](docs/audio/musicstream_url.md)
|
||||
- [x] [音频榜单](docs/audio/rank.md)
|
||||
- [ ] [排行榜 & 最新视频](docs/video_ranking)
|
||||
- [ ] [排行榜](docs/video_ranking/ranking.md)
|
||||
- [ ] [热门视频](docs/video_ranking/popular.md)
|
||||
- [ ] [最新视频](docs/video_ranking/dynamic.md)
|
||||
- [x] [入站必刷视频](docs/video_ranking/precious_videos.md)
|
||||
- [ ] [搜索](docs/search)
|
||||
- [x] [搜索请求](docs/search/search_request.md)
|
||||
- [x] [搜索结果](docs/search/search_response.md)
|
||||
- [x] [默认搜索 & 热搜](docs/search/hot.md)
|
||||
- [x] [搜索建议](docs/search/suggest.md)
|
||||
- [ ] [小黑屋](docs/blackroom)
|
||||
- [ ] 基本信息
|
||||
- [x] [封禁公示](docs/blackroom/banlist.md)
|
||||
- [x] [风纪委员及众裁案件相关](docs/blackroom/jury)
|
||||
- [x] [风纪委员基本信息](docs/blackroom/jury/base_info.md)
|
||||
- [x] [众裁案件基本信息](docs/blackroom/jury/judgement_info.md)
|
||||
- [x] [裁决操作](docs/blackroom/jury/action.md)
|
||||
- [x] [评论区](docs/comment)
|
||||
- [x] [评论区明细](docs/comment/list.md)
|
||||
- [x] [操作](docs/comment/action.md)
|
||||
- [ ] [表情](docs/emoji)
|
||||
- [x] [表情及表情包信息](docs/emoji/list.md)
|
||||
- [x] [操作](docs/emoji/action.md)
|
||||
- [x] [实时广播(通讯协议)](docs/broadcast)
|
||||
- [x] [视频内广播](docs/broadcast/video_room.md)
|
||||
- [ ] [充电](docs/electric)
|
||||
- [ ] [包月充电](docs/electric/monthly.md)
|
||||
- [ ] 自定义充电
|
||||
- [x] [B 币方式充电](docs/electric/Bcoin.md)
|
||||
- [x] [微信 & 支付宝方式充电](docs/electric/WeChat&Alipay.md)
|
||||
- [x] [充电留言](docs/electric/charge_msg.md)
|
||||
- [x] [充电列表](docs/electric/charge_list.md)
|
||||
- [ ] ~~[相簿](docs/album)~~ (已下线)
|
||||
- [x] ~~[基本信息](docs/album/info.md)~~
|
||||
- [x] ~~[相簿列表](docs/album/list.md)~~
|
||||
- [x] ~~[推荐作者](docs/album/recommend_author.md)~~
|
||||
- [x] ~~[活动列表](docs/album/activity_list.md)~~
|
||||
- [x] ~~[操作](docs/album/action.md)~~
|
||||
- [ ] ~~投稿~~
|
||||
- [ ] [历史记录 & 稍后再看](docs/historytoview)
|
||||
- [x] [历史记录](docs/historytoview/history.md)
|
||||
- [x] [稍后再看](docs/historytoview/toview.md)
|
||||
- [ ] [收藏夹](docs/fav)
|
||||
- [x] [基本信息](docs/fav/info.md)
|
||||
- [x] [收藏夹内容](docs/fav/list.md)
|
||||
- [ ] [收藏夹操作](docs/fav/action.md)
|
||||
- [ ] [课程](docs/cheese)
|
||||
- [x] [课程基本信息](docs/cheese/info.md)
|
||||
- [ ] 已购课程
|
||||
- [ ] 分区推荐列表
|
||||
- [ ] 操作
|
||||
- [x] [播放 & 下载地址(视频流)](docs/cheese/videostream_url.md)
|
||||
- [ ] [直播](docs/live)
|
||||
- [ ] [直播间基本信息](docs/live/info.md)
|
||||
- [ ] [直播推荐](docs/live/recommend.md)
|
||||
- [ ] [直播分区](docs/live/live_area.md)
|
||||
- [ ] [直播间管理](docs/live/manage.md)
|
||||
- [ ] 直播间操作
|
||||
- [ ] [直播视频流](docs/live/live_stream.md)
|
||||
- [ ] [直播信息流](docs/live/message_stream.md)
|
||||
- [ ] [直播红包](docs/live/redpocket.md)
|
||||
- [ ] [直播间表情包](docs/live/emoticons.md)
|
||||
- [ ] [直播间用户实用 API](docs/live/user.md)
|
||||
- [x] [直播间禁言相关](docs/live/silent_user_manage.md)
|
||||
- [ ] [关注UP直播情况](docs/live/follow_up_live.md)
|
||||
- [ ] [直播心跳上报](docs/live/report.md)
|
||||
- [ ] [直播间弹幕](docs/live/danmaku.md)
|
||||
- [ ] [直播流水](docs/live/live_bill.md)
|
||||
- [ ] [礼物相关](docs/live/gift.md)
|
||||
- [ ] [大航海/粉丝团](docs/live/guard.md)
|
||||
- [ ] [直播回放](docs/live/live_replay.md)
|
||||
- [ ] [直播数据](docs/live/live_data.md)
|
||||
- [ ] [直播投票](docs/live/live_vote.md)
|
||||
- [ ] [活动](docs/activity)
|
||||
- [ ] [活动列表](docs/activity/list.md)
|
||||
- [ ] [活动主题信息](docs/activity/info.md)
|
||||
- [ ] [转正答题](docs/newbie_exam)
|
||||
- [x] [查询信息](docs/newbie_exam/info.md)
|
||||
- [x] [拉取题目](docs/newbie_exam/fetch.md)
|
||||
- [x] [操作](docs/newbie_exam/action.md)
|
||||
- [ ] [青少年守护](docs/teenager/)
|
||||
- [x] [青少年模式](docs/teenager/teenager_mode.md)
|
||||
- [ ] 亲子平台
|
||||
- [ ] 课堂模式
|
||||
- [ ] [B 币钱包](docs/wallet/)
|
||||
- [ ] [基本信息](docs/wallet/info.md)
|
||||
- [ ] B 币充值
|
||||
- [ ] 贝壳相关
|
||||
- [ ] [哔哩哔哩漫画](docs/manga)
|
||||
- [ ] 用户信息
|
||||
- [x] [签到](docs/manga/ClockIn.md)
|
||||
- [x] [积分商城](docs/manga/point_shop.md)
|
||||
- [x] [漫画操作](docs/manga/Comic.md)
|
||||
- [ ] [漫画任务操作](docs/manga/Activity.md)
|
||||
- [x] [漫画赛季](docs/manga/Season.md)
|
||||
- [x] [漫读券/已购相关](docs/manga/User.md)
|
||||
- [x] [下载](docs/manga/Download.md)
|
||||
- [x] [data.index 解析](docs/manga/index_file.md)
|
||||
- [ ] [获取轻享卡信息](docs/manga/light_card.md)
|
||||
- [ ] 哔哩哔哩游戏
|
||||
- [ ] [终端网络查询](docs/clientinfo)
|
||||
- [x] [基于 IP 的地理位置查询](docs/clientinfo/ip.md)
|
||||
- [ ] [客服中心](docs/customerservice)
|
||||
- [ ] [客服消息](docs/customerservice/msg.md)
|
||||
- [ ] [web 端组件](docs/web_widget)
|
||||
- [x] [分区当日投稿数](docs/web_widget/zone_upload.md)
|
||||
- [x] [404 页漫画收集](docs/web_widget/404_manga.md)
|
||||
- [ ] [首页横幅头图](docs/web_widget/header.md)
|
||||
- [ ] [分区横幅轮播图](docs/web_widget/banner.md)
|
||||
- [ ] [APP 端组件](docs/APP_widget)
|
||||
- [x] [开屏图片 + 恰饭珍贵录像](docs/APP_widget/splash.md)
|
||||
- [ ] [获取最新 APP 版本](docs/APP_widget/ver.md)
|
||||
- [ ] [个性装扮](docs/garb)
|
||||
- [x] [APP 主题](docs/garb/skin.md)
|
||||
- [x] [主题色](docs/garb/color.md)
|
||||
- [ ] [装扮/收藏集](docs/garb/lottery.md)
|
||||
|
||||
## ✨鸣谢
|
||||
|
||||
你们的存在,让社区更美好
|
||||
|
||||
[](https://github.com/SocialSisterYi/bilibili-API-collect/graphs/contributors)
|
||||
|
||||
## 📖相关协议基础
|
||||
|
||||
HTTP 协议:[传送门](https://www.cnblogs.com/an-wen/p/11180076.html)
|
||||
|
||||
JSON 序列格式:[传送门](https://www.sojson.com/json/json_index.html)
|
||||
|
||||
XML 序列格式:[传送门](https://www.w3school.com.cn/xml/xml_intro.asp)
|
||||
|
||||
ProtoBuf 序列格式:[传送门](https://www.jianshu.com/p/a24c88c0526a)
|
||||
|
||||
## 💦交流
|
||||
|
||||
<img src="https://avatars.githubusercontent.com/u/45892418" width="100" height="100" />
|
||||
|
||||
⚠注意:开源社群欢迎交流探讨,**拒绝**咨询、**不支持**合作,**黑产号**一经发现立即拉黑并举报相关 SRC
|
||||
|
||||
- QQ 交流群:[邀请链接](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ympvb3LAPT-Ulu3ezhGqbkJ8zXMKImOX&authKey=z1KdkOdKO3wytN43m9K6On9nBtnDL4pAoD6VQHCipFBb9TasNDKuDHCmOE6TF3uc&noverify=0&group_code=191187164)
|
||||
- Telegram 交流群:[@bilibili_API_collect_community](https://t.me/bilibili_API_collect_community)
|
||||
|
||||
## 🧋发电
|
||||
|
||||
欢迎来~~交♂易~~,大家的支持就是我继续开发的动力!
|
||||
|
||||
~~请可爱的易姐喝杯奶茶~~
|
||||
|
||||
WeChat & Alipay:
|
||||
|
||||
<img src="./assets/img/sponsorQR.jpg" width="300" height="300" />
|
||||
|
||||
OR Aifadian:[https://afdian.com/@ShakaiAneE](https://afdian.com/@ShakaiAneE)
|
||||
|
||||
## 🔗相关项目推荐
|
||||
|
||||
### 库及文档
|
||||
|
||||
- [jingyuexing/bilibiliAPI](https://github.com/jingyuexing/bilibiliAPI)
|
||||
- [fython/BilibiliAPIDocs](https://github.com/fython/BilibiliAPIDocs)
|
||||
- [czp3009/bilibili-api](https://github.com/czp3009/bilibili-api)
|
||||
- [Vespa314/bilibili-api](https://github.com/Vespa314/bilibili-api)
|
||||
- [Pengfei00/bili-utils](https://github.com/Pengfei00/bili-utils): bilibili 工具箱
|
||||
- [lovelyyoshino/Bilibili-Live-API](https://github.com/lovelyyoshino/Bilibili-Live-API): Bilibili 直播/番剧 API 文档
|
||||
- [flaribbit/bilibili-manga-spider](https://github.com/flaribbit/bilibili-manga-spider): Bilibili 漫画爬虫
|
||||
- [simon300000/bili-api](https://github.com/simon300000/bili-api): Bilibili Node.js API
|
||||
- [iyear/biligo](https://github.com/iyear/biligo): Bilibili API SDK in Golang
|
||||
- [bilibili-openplatform/demo](https://github.com/bilibili-openplatform/demo): 哔哩哔哩开放平台示例代码库
|
||||
- [ddiu8081/blive-message-listener](https://github.com/ddiu8081/blive-message-listener): Bilibili-live danmu listener with type. Bilibili 直播间弹幕监听库,支持类型输出。
|
||||
- [Nemo2011/bilibili-api](https://github.com/Nemo2011/bilibili-api): 哔哩哔哩常用API调用。支持视频、番剧、用户、频道、音频等功能。工具齐全。
|
||||
- [CuteReimu/bilibili](https://github.com/CuteReimu/bilibili): 哔哩哔哩API的Go版本SDK
|
||||
|
||||
### 成品
|
||||
|
||||
- [NullPointerException/AnimePipe](https://codeberg.org/NullPointerException/AnimePipe): 功能完善的Android流媒体综合客户端,支持Bilibili, Youtube, NicoNico
|
||||
- [3Shain/Comen](https://github.com/3Shain/Comen): 基于h5的B站直播弹幕姬
|
||||
- [AncientLysine/BiliLocal](https://github.com/AncientLysine/BiliLocal): 本地弹幕播放器
|
||||
- [zyzsdy/biliroku](https://github.com/zyzsdy/biliroku): bilibili 生放送(直播)录制
|
||||
- [otakustay/danmaku-to-ass](https://github.com/otakustay/danmaku-to-ass): A站B站弹幕转字幕文件
|
||||
- [bilibili-helper/bilibili-helper-o](https://github.com/bilibili-helper/bilibili-helper-o): 哔哩哔哩 (bilibili.com) 辅助工具,可以下载视频,查询弹幕发送人以及一些十分实用的直播区功能。
|
||||
- [apachecn/CDNDrive](https://github.com/apachecn/CDNDrive): 基于B站相簿上传的文件分块索引存储器
|
||||
- [Hsury/BiliDrive](https://github.com/Hsury/BiliDrive): 基于B站相簿上传的文件分块索引存储器
|
||||
- [Tsuk1ko/bilibili-live-chat](https://github.com/Tsuk1ko/bilibili-live-chat): 无后端的仿 YouTube Live Chat 风格的简易 Bilibili 弹幕姬
|
||||
- [ironmanic/crawler_target_users_good](https://github.com/ironmanic/crawler_target_users_good): 搜索bilibili特定视频,为评论 点赞,关注,私信,一体化服务
|
||||
- [dd-center/DDatElectron](https://github.com/dd-center/DDatElectron): DD@Home 分布式项目, 桌面客户端
|
||||
- [dd-center/vtbs.moe](https://github.com/dd-center/vtbs.moe): B站VTB数据中心
|
||||
- [the1812/Bilibili-Evolved](https://github.com/the1812/Bilibili-Evolved): 强大的哔哩哔哩增强脚本: 下载视频、音乐、封面、弹幕 / 简化直播间、评论区、首页 / 自定义顶栏、删除广告、夜间模式 / 触屏设备支持
|
||||
- [xlzy520/bili-short-url](https://github.com/xlzy520/bili-short-url): 哔哩哔哩短链生成器
|
||||
- [zjkwdy/bili_app_splash](https://github.com/zjkwdy/bili_app_splash): B站壁纸娘和开屏图自动下载,每天使用Actions自动同步
|
||||
- [Jannchie/BiliOB](https://github.com/Jannchie/BiliOB): BiliOB观测者是一个观测B站UP主及视频数据变化,并予以分析的Web应用程序
|
||||
- [biliob233/biliob233.github.io](https://github.com/biliob233/biliob233.github.io): ~~无可奉告~~
|
||||
- [biliup/biliup](https://github.com/biliup/biliup): 全自动录播、投稿工具,支持录制直播弹幕,也支持Youtube、twitch直播回放列表自动搬运到B站
|
||||
- [ddiu8081/bilicli](https://github.com/ddiu8081/bilicli): Bilibili-live danmu dashboard in your terminal.
|
||||
- [MotooriKashin/Bilibili-Old](https://github.com/MotooriKashin/Bilibili-Old): 恢复旧版Bilibili页面,为了那些念旧的人。
|
||||
- [SocialSisterYi/bcut-asr](https://github.com/SocialSisterYi/bcut-asr): 使用必剪API的语音字幕识别
|
||||
- [CzJam/Bili_Realtime_Data](https://github.com/CzJam/Bili_Realtime_Data): Bilibili粉丝与视频实时数据统计
|
||||
- [kingwingfly/fav](https://github.com/kingwingfly/fav): 自动同步bili收藏夹、合集视频到本地的CLI工具(Rust实现,并提供一个文档测试完善的Rust风格的用于构建有状态爬虫的核心库)
|
||||
- [linyuye/Bilibili_crawler](https://github.com/linyuye/Bilibili_crawler): 基于bilibili懒加载api爬取b站动态,视频等评论区
|
||||
- [ouzexi/bilibili-hot-tags](https://github.com/ouzexi/bilibili-hot-tags): 一个B站热门视频标签检索统计小工具
|
||||
- [SpenserCai/rust-video-downloader](https://github.com/SpenserCai/rust-video-downloader): Rust实现的高性能跨平台视频下载器(目前支持Bilibili),基本覆盖了BBDown的所有功能。
|
||||
|
||||
### 其他
|
||||
|
||||
- [kuresaru/geetest-validator](https://github.com/kuresaru/geetest-validator): GeeTest 调试器
|
||||
- [bloomrpc/bloomrpc](https://github.com/bloomrpc/bloomrpc): GUI Client for GRPC Services
|
||||
- [grpc/grpc](https://github.com/grpc/grpc): The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)
|
||||
- [glideapps/quicktype](https://github.com/glideapps/quicktype): quicktype generates strongly-typed models and serializers from JSON, JSON Schema, TypeScript, and GraphQL queries, making it a breeze to work with JSON type-safely in many programming languages. 一键生成多种语言的JSON反序列化所需类,以便于快速反序列化,有网页版
|
||||
- [SessionHu/json-apidoc-gen](https://github.com/SessionHu/json-apidoc-gen): Simple CLI tool for generating BAC document template
|
||||
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
@@ -0,0 +1 @@
|
||||
import{_ as e,c as o,b as n,o as a}from"./app-Dgsdh8A6.js";const l={};function r(s,t){return a(),o("div",null,t[0]||(t[0]=[n("p",null,"404 Not Found",-1)]))}const _=e(l,[["render",r]]),i=JSON.parse('{"path":"/404.html","title":"","lang":"zh-CN","frontmatter":{"layout":"NotFound"},"git":{},"filePathRelative":null}');export{_ as comp,i as data};
|
||||
@@ -0,0 +1,208 @@
|
||||
import{_ as r,c,b as n,a as p,d as a,e,w as o,r as D,o as t}from"./app-Dgsdh8A6.js";const i={};function y(d,s){const l=D("RouteLink");return t(),c("div",null,[s[16]||(s[16]=n("h1",{id:"app-api-签名与鉴权",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#app-api-签名与鉴权"},[n("span",null,"APP API 签名与鉴权")])],-1)),s[17]||(s[17]=n("h2",{id:"app-api-签名特性",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#app-api-签名特性"},[n("span",null,"APP API 签名特性")])],-1)),n("p",null,[s[1]||(s[1]=a("部分客户端专用的 REST API 存在基于参数签名的鉴权,需要使用规定的")),s[2]||(s[2]=n("code",null,"appkey",-1)),s[3]||(s[3]=a("及其对应的")),s[4]||(s[4]=n("code",null,"appsec",-1)),s[5]||(s[5]=a("与原始请求参数进行签名计算,部分")),s[6]||(s[6]=n("code",null,"AppKey",-1)),s[7]||(s[7]=a("及与之对应的")),s[8]||(s[8]=n("code",null,"AppSec",-1)),s[9]||(s[9]=a("已经被公开:见该文档 ")),e(l,{to:"/docs/misc/sign/APPKey.html"},{default:o(()=>s[0]||(s[0]=[a("APPKey")])),_:1,__:[0]})]),s[18]||(s[18]=p('<ul><li><p>不同 <code>appkey</code> 对应不同的 app (如客户端、概念版、必剪、漫画、bililink等)</p></li><li><p>不同平台同 app 也会存在不同的 <code>appkey</code> (如安卓端、ios端、TV端等)</p></li><li><p>同平台同 app 下不同功能也会存在不同的 <code>appkey</code>(如登录专用、取流专用等)</p></li><li><p>不同版本的客户端的 <code>appkey</code> 也可能不同</p></li><li><p><strong>appkey与appsec一一对应</strong></p></li></ul><h2 id="app-api-签名算法" tabindex="-1"><a class="header-anchor" href="#app-api-签名算法"><span>APP API 签名算法</span></a></h2><ol><li>首先为参数中添加<code>appkey</code>字段</li><li>然后按照参数的 Key 重新排序</li><li>再对这个 Key-Value 进行 url query 序列化,并拼接与之对应的<code>appsec</code> (盐) 进行 <strong>md5 Hash 运算</strong>(32-bit 字符小写),该 hash 便是 API 签名</li><li>最后在参数尾部增添<code>sign</code>字段,它的 Value 为上一步计算所得的 hash,一并作为表单或 Query 提交</li></ol><h2 id="demo" tabindex="-1"><a class="header-anchor" href="#demo"><span>Demo</span></a></h2><p>该 Demo 提供 <a href="#python">Python</a>、<a href="#java">Java</a>、<a href="#typescript-javascript">TS/JS</a>、<a href="#swift">Swift</a>、<a href="#cplusplus">C++</a> 语言例程</p><p>使用 appkey = <code>1d8b6e7d45233436</code>, appsec = <code>560c52ccd288fed045859ed18bffd973</code> 对如下 <code>params</code> 参数进行签名</p>',6)),n("p",null,[s[11]||(s[11]=a("上述示例")),s[12]||(s[12]=n("code",null,"appkey",-1)),s[13]||(s[13]=a("、")),s[14]||(s[14]=n("code",null,"AppSec",-1)),s[15]||(s[15]=a("均来自文档 ")),e(l,{to:"/docs/misc/sign/APPKey.html"},{default:o(()=>s[10]||(s[10]=[a("APPKey")])),_:1,__:[10]})]),s[19]||(s[19]=p(`<h3 id="python" tabindex="-1"><a class="header-anchor" href="#python"><span>Python</span></a></h3><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-python"><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> hashlib</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> urllib.parse</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">def</span><span style="color:#DCDCAA;"> appsign</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">params</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">appkey</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">appsec</span><span style="color:#D4D4D4;">):</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> '为请求参数进行 APP 签名'</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> params.update({</span><span style="color:#CE9178;">'appkey'</span><span style="color:#D4D4D4;">: appkey})</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> params = </span><span style="color:#4EC9B0;">dict</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">sorted</span><span style="color:#D4D4D4;">(params.items())) </span><span style="color:#6A9955;"># 按照 key 重排参数</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> query = urllib.parse.urlencode(params) </span><span style="color:#6A9955;"># 序列化参数</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> sign = hashlib.md5((query+appsec).encode()).hexdigest() </span><span style="color:#6A9955;"># 计算 api 签名</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> params.update({</span><span style="color:#CE9178;">'sign'</span><span style="color:#D4D4D4;">:sign})</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> params</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">appkey = </span><span style="color:#CE9178;">'1d8b6e7d45233436'</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">appsec = </span><span style="color:#CE9178;">'560c52ccd288fed045859ed18bffd973'</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">params = {</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> 'id'</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">114514</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> 'str'</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">'1919810'</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> 'test'</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">'いいよ,こいよ'</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">signed_params = appsign(params, appkey, appsec)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">query = urllib.parse.urlencode(signed_params)</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;">print</span><span style="color:#D4D4D4;">(signed_params)</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;">print</span><span style="color:#D4D4D4;">(query)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>输出内容分别是进行 APP 签名的后参数的 key-Value 以及 url query 形式</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-"><span class="line"><span>{'appkey': '1d8b6e7d45233436', 'id': 114514, 'str': '1919810', 'test': 'いいよ,こいよ', 'sign': '01479cf20504d865519ac50f33ba3a7d'}</span></span>
|
||||
<span class="line"><span>appkey=1d8b6e7d45233436&id=114514&str=1919810&test=%E3%81%84%E3%81%84%E3%82%88%EF%BC%8C%E3%81%93%E3%81%84%E3%82%88&sign=01479cf20504d865519ac50f33ba3a7d</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="java" tabindex="-1"><a class="header-anchor" href="#java"><span>Java</span></a></h3><div class="language-java line-numbers-mode" data-highlighter="shiki" data-ext="java" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-java"><span class="line"><span style="color:#569CD6;">package</span><span style="color:#D4D4D4;"> io.github.cctyl;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.nio.charset.StandardCharsets;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.util.HashMap;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.util.Map;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.security.MessageDigest;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.security.NoSuchAlgorithmException;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.net.URLEncoder;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.util.TreeMap;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;">/**</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@author</span><span style="color:#6A9955;"> cctyl</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> AppSigner</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> APP_KEY</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"1d8b6e7d45233436"</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> APP_SEC</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"560c52ccd288fed045859ed18bffd973"</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> String</span><span style="color:#DCDCAA;"> appSign</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">Map</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">params</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> // 为请求参数进行 APP 签名</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> params</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">put</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"appkey"</span><span style="color:#D4D4D4;">, APP_KEY);</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> // 按照 key 重排参数</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> Map</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">sortedParams</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#4EC9B0;"> TreeMap</span><span style="color:#D4D4D4;"><>(params);</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> // 序列化参数</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> StringBuilder</span><span style="color:#9CDCFE;"> queryBuilder</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> StringBuilder</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">Map</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">Entry</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">entry</span><span style="color:#C586C0;"> :</span><span style="color:#9CDCFE;"> sortedParams</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">entrySet</span><span style="color:#D4D4D4;">()) {</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">queryBuilder</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">length</span><span style="color:#D4D4D4;">() > </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> queryBuilder</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'&'</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> queryBuilder</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">URLEncoder</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">encode</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">entry</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getKey</span><span style="color:#D4D4D4;">(), </span><span style="color:#9CDCFE;">StandardCharsets</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UTF_8</span><span style="color:#D4D4D4;">))</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'='</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">URLEncoder</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">encode</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">entry</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getValue</span><span style="color:#D4D4D4;">(), </span><span style="color:#9CDCFE;">StandardCharsets</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UTF_8</span><span style="color:#D4D4D4;">));</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#DCDCAA;"> generateMD5</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">queryBuilder</span><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(APP_SEC).</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">());</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> String</span><span style="color:#DCDCAA;"> generateMD5</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> input</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> try</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> MessageDigest</span><span style="color:#9CDCFE;"> md</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">MessageDigest</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getInstance</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"MD5"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> byte</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">digest</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">md</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">digest</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">input</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getBytes</span><span style="color:#D4D4D4;">());</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> StringBuilder</span><span style="color:#9CDCFE;"> sb</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> StringBuilder</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">byte</span><span style="color:#9CDCFE;"> b</span><span style="color:#C586C0;"> :</span><span style="color:#D4D4D4;"> digest) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> sb</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">format</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"%02x"</span><span style="color:#D4D4D4;">, b));</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> sb</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">catch</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">NoSuchAlgorithmException</span><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">printStackTrace</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#569CD6;"> null</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> void</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">args</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> Map</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">> </span><span style="color:#9CDCFE;">params</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#4EC9B0;"> HashMap</span><span style="color:#D4D4D4;"><>();</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> params</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">put</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"id"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"114514"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> params</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">put</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"str"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"1919810"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> params</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">put</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"test"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"いいよ,こいよ"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">appSign</span><span style="color:#D4D4D4;">(params));</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>输出结果为:01479cf20504d865519ac50f33ba3a7d</p><h3 id="typescript-javascript" tabindex="-1"><a class="header-anchor" href="#typescript-javascript"><span>TypeScript/JavaScript</span></a></h3><div class="language-typescript line-numbers-mode" data-highlighter="shiki" data-ext="typescript" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-typescript"><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">createHash</span><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">from</span><span style="color:#CE9178;"> 'node:crypto'</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">type</span><span style="color:#4EC9B0;"> Params</span><span style="color:#D4D4D4;"> = </span><span style="color:#4EC9B0;">Record</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">any</span><span style="color:#D4D4D4;">></span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#DCDCAA;"> md5</span><span style="color:#D4D4D4;"> = (</span><span style="color:#9CDCFE;">str</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">=></span><span style="color:#DCDCAA;"> createHash</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'md5'</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">update</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">str</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">digest</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'hex'</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;">/**</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * 为请求参数进行 APP 签名</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">export</span><span style="color:#569CD6;"> function</span><span style="color:#DCDCAA;"> appSign</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">params</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">Params</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">appkey</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">appsec</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> params</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">appkey</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">appkey</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> searchParams</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> URLSearchParams</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">params</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> searchParams</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">sort</span><span style="color:#D4D4D4;">()</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#DCDCAA;"> md5</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">searchParams</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">() + </span><span style="color:#9CDCFE;">appsec</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#9CDCFE;">console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">log</span><span style="color:#D4D4D4;">(</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;"> appSign</span><span style="color:#D4D4D4;">(</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> id:</span><span style="color:#B5CEA8;"> 114514</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> str:</span><span style="color:#CE9178;"> '1919810'</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> test:</span><span style="color:#CE9178;"> 'いいよ,こいよ'</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> '1d8b6e7d45233436'</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> '560c52ccd288fed045859ed18bffd973'</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ),</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> '01479cf20504d865519ac50f33ba3a7d'</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>输出结果为:01479cf20504d865519ac50f33ba3a7d</p><h3 id="swift" tabindex="-1"><a class="header-anchor" href="#swift"><span>Swift</span></a></h3><div class="language-swift line-numbers-mode" data-highlighter="shiki" data-ext="swift" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-swift"><span class="line"><span style="color:#C586C0;">import</span><span style="color:#4EC9B0;"> Foundation</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#4EC9B0;"> CommonCrypto</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;">//Swift标准库没有MD5函数,所以我们要自己实现一个</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> MD5</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">string</span><span style="color:#D4D4D4;">: </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">) -> </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> length = </span><span style="color:#4EC9B0;">Int</span><span style="color:#D4D4D4;">(CC_MD5_DIGEST_LENGTH)</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> digest = [</span><span style="color:#4EC9B0;">UInt8</span><span style="color:#D4D4D4;">](</span><span style="color:#DCDCAA;">repeating</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#DCDCAA;">count</span><span style="color:#D4D4D4;">: length)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> d = string.</span><span style="color:#DCDCAA;">data</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">using</span><span style="color:#D4D4D4;">: .</span><span style="color:#9CDCFE;">utf8</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> _</span><span style="color:#D4D4D4;"> = d.</span><span style="color:#DCDCAA;">withUnsafeBytes</span><span style="color:#D4D4D4;"> { body -> </span><span style="color:#4EC9B0;">String</span><span style="color:#C586C0;"> in</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;"> CC_MD5</span><span style="color:#D4D4D4;">(body.</span><span style="color:#9CDCFE;">baseAddress</span><span style="color:#D4D4D4;">, </span><span style="color:#DCDCAA;">CC_LONG</span><span style="color:#D4D4D4;">(d.</span><span style="color:#9CDCFE;">count</span><span style="color:#D4D4D4;">), &digest)</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#CE9178;"> ""</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> (</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">..<length).</span><span style="color:#DCDCAA;">reduce</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> $0</span><span style="color:#D4D4D4;"> + </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">format</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"%02x"</span><span style="color:#D4D4D4;">, digest[</span><span style="color:#569CD6;">$1</span><span style="color:#D4D4D4;">])</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> appSign</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">params</span><span style="color:#D4D4D4;">: [</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">:</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">],</span><span style="color:#DCDCAA;">appKey</span><span style="color:#D4D4D4;">:</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">,</span><span style="color:#DCDCAA;">appSec</span><span style="color:#D4D4D4;">:</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">) -> </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#D4D4D4;"> signedParams = params</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> signedParams[</span><span style="color:#CE9178;">"appkey"</span><span style="color:#D4D4D4;">] = appKey</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> sortedParams = signedParams.</span><span style="color:#DCDCAA;">sorted</span><span style="color:#D4D4D4;"> { </span><span style="color:#569CD6;">$0</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">key</span><span style="color:#D4D4D4;"> < </span><span style="color:#569CD6;">$1</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">key</span><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> //在制作成query时,需要显式addingPercentEncoding转换</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> query = sortedParams.</span><span style="color:#DCDCAA;">map</span><span style="color:#D4D4D4;"> { </span><span style="color:#CE9178;">"</span><span style="color:#569CD6;">\\($0</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">key</span><span style="color:#569CD6;">)</span><span style="color:#CE9178;">=</span><span style="color:#569CD6;">\\($0</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">addingPercentEncoding</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">withAllowedCharacters</span><span style="color:#D4D4D4;">: .</span><span style="color:#9CDCFE;">urlQueryAllowed</span><span style="color:#D4D4D4;">)!</span><span style="color:#569CD6;">)</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;"> }.</span><span style="color:#DCDCAA;">joined</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">separator</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"&"</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> let</span><span style="color:#D4D4D4;"> sign = </span><span style="color:#DCDCAA;">MD5</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">string</span><span style="color:#D4D4D4;">: query+appSec)</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> sign</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;">//testSign</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">let</span><span style="color:#D4D4D4;"> appKey = </span><span style="color:#CE9178;">"1d8b6e7d45233436"</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">let</span><span style="color:#D4D4D4;"> appSec = </span><span style="color:#CE9178;">"560c52ccd288fed045859ed18bffd973"</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">let</span><span style="color:#D4D4D4;"> signResult = </span><span style="color:#DCDCAA;">appSign</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">params</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"114514"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "str"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"1919810"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "test"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"いいよ,こいよ"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">],</span><span style="color:#DCDCAA;">appKey</span><span style="color:#D4D4D4;">:appKey,</span><span style="color:#DCDCAA;">appSec</span><span style="color:#D4D4D4;">:appSec)</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;">print</span><span style="color:#D4D4D4;">(signResult)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>输出结果为:01479cf20504d865519ac50f33ba3a7d</p><h3 id="cplusplus" tabindex="-1"><a class="header-anchor" href="#cplusplus"><span>CplusPlus</span></a></h3><p>需要 c++ 23 标准库,<a href="https://github.com/libcpr/cpr" target="_blank" rel="noopener noreferrer">cpr</a>、<a href="https://github.com/weidai11/cryptopp" target="_blank" rel="noopener noreferrer">cryptopp</a>、<a href="https://github.com/nlohmann/json" target="_blank" rel="noopener noreferrer">nlohmann/json</a> 等依赖</p><div class="language-c++ line-numbers-mode" data-highlighter="shiki" data-ext="c++" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-c++"><span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <print></span><span style="color:#6A9955;"> // std::println</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;">/// thrid party libraries</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <cpr/cpr.h></span><span style="color:#6A9955;"> // cpr::util::urlEncode()</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <cryptopp/md5.h></span></span>
|
||||
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <cryptopp/hex.h></span></span>
|
||||
<span class="line"><span style="color:#C586C0;">#include</span><span style="color:#CE9178;"> <nlohmann/json.hpp></span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;">/*</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * 注意,假定不会发生错误!</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;">/* 获取 md5 hex(lower) */</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;">std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">string</span><span style="color:#DCDCAA;"> Get_md5_hex</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">const</span><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">string</span><span style="color:#569CD6;"> &</span><span style="color:#9CDCFE;">Input_str</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> CryptoPP</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">Weak1</span><span style="color:#D4D4D4;">::MD5 hash;</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::string md5_hex;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> CryptoPP</span><span style="color:#D4D4D4;">::StringSource </span><span style="color:#DCDCAA;">ss</span><span style="color:#D4D4D4;">(Input_str, </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> new</span><span style="color:#4EC9B0;"> CryptoPP</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">HashFilter</span><span style="color:#D4D4D4;">(hash,</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> new</span><span style="color:#4EC9B0;"> CryptoPP</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">HexEncoder</span><span style="color:#D4D4D4;">(</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> new</span><span style="color:#4EC9B0;"> CryptoPP</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">StringSink</span><span style="color:#D4D4D4;">(md5_hex)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> )</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> )</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> );</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">ranges</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">for_each</span><span style="color:#D4D4D4;">(md5_hex, [](</span><span style="color:#569CD6;">char</span><span style="color:#569CD6;"> &</span><span style="color:#9CDCFE;">x</span><span style="color:#D4D4D4;">) { x = </span><span style="color:#4EC9B0;">std</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">tolower</span><span style="color:#D4D4D4;">(x); });</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> md5_hex;</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;">/* 将 json 转换为 url 编码字符串 */</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;">std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">string</span><span style="color:#DCDCAA;"> Json_to_url_encode_str</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">const</span><span style="color:#4EC9B0;"> nlohmann</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">json</span><span style="color:#569CD6;"> &</span><span style="color:#9CDCFE;">Json</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::string encode_str;</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#569CD6;">const</span><span style="color:#569CD6;"> auto</span><span style="color:#D4D4D4;"> &[key, value]: </span><span style="color:#9CDCFE;">Json</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">items</span><span style="color:#D4D4D4;">()) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> encode_str</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(key).</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"="</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">cpr</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">util</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">urlEncode</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">is_string</span><span style="color:#D4D4D4;">() ? </span><span style="color:#9CDCFE;">value</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">get</span><span style="color:#D4D4D4;"><</span><span style="color:#4EC9B0;">std</span><span style="color:#D4D4D4;">::string>() : </span><span style="color:#DCDCAA;">to_string</span><span style="color:#D4D4D4;">(value))).</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"&"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;"> // remove the last '&'</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> encode_str</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">resize</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">encode_str</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">size</span><span style="color:#D4D4D4;">() - </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">'</span><span style="color:#D7BA7D;">\\0</span><span style="color:#CE9178;">'</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> encode_str;</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#4EC9B0;">std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">string</span><span style="color:#DCDCAA;"> App_sign</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">nlohmann</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">json</span><span style="color:#569CD6;"> &</span><span style="color:#9CDCFE;">Params</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">const</span><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">string</span><span style="color:#569CD6;"> &</span><span style="color:#9CDCFE;">App_key</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">const</span><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">string</span><span style="color:#569CD6;"> &</span><span style="color:#9CDCFE;">App_sec</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> Params</span><span style="color:#D4D4D4;">[</span><span style="color:#CE9178;">"appkey"</span><span style="color:#D4D4D4;">] = App_key;</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> Params</span><span style="color:#D4D4D4;">[</span><span style="color:#CE9178;">"sign"</span><span style="color:#D4D4D4;">] = </span><span style="color:#DCDCAA;">Get_md5_hex</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">Json_to_url_encode_str</span><span style="color:#D4D4D4;">(Params) + App_sec);</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#DCDCAA;"> Json_to_url_encode_str</span><span style="color:#D4D4D4;">(Params);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">int</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">() {</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> nlohmann</span><span style="color:#D4D4D4;">::json Params;</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> Params</span><span style="color:#D4D4D4;">[</span><span style="color:#CE9178;">"id"</span><span style="color:#D4D4D4;">] = </span><span style="color:#B5CEA8;">114514</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> Params</span><span style="color:#D4D4D4;">[</span><span style="color:#CE9178;">"str"</span><span style="color:#D4D4D4;">] = </span><span style="color:#CE9178;">"1919810"</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> Params</span><span style="color:#D4D4D4;">[</span><span style="color:#CE9178;">"test"</span><span style="color:#D4D4D4;">] = </span><span style="color:#CE9178;">"いいよ,こいよ"</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;"> constexpr</span><span style="color:#569CD6;"> auto</span><span style="color:#D4D4D4;"> App_key = </span><span style="color:#CE9178;">"1d8b6e7d45233436"</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> constexpr</span><span style="color:#569CD6;"> auto</span><span style="color:#D4D4D4;"> App_sec = </span><span style="color:#CE9178;">"560c52ccd288fed045859ed18bffd973"</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::string sign = </span><span style="color:#DCDCAA;">App_sign</span><span style="color:#D4D4D4;">(Params, App_key, App_sec);</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"{}"</span><span style="color:#D4D4D4;">, </span><span style="color:#DCDCAA;">to_string</span><span style="color:#D4D4D4;">(Params));</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> std</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"{}"</span><span style="color:#D4D4D4;">, sign);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="shiki" data-ext="text" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-text"><span class="line"><span>{"appkey":"1d8b6e7d45233436","id":114514,"sign":"01479cf20504d865519ac50f33ba3a7d","str":"1919810","test":"いいよ,こいよ"}</span></span>
|
||||
<span class="line"><span>appkey=1d8b6e7d45233436&id=114514&sign=01479cf20504d865519ac50f33ba3a7d&str=1919810&test=%E3%81%84%E3%81%84%E3%82%88%EF%BC%8C%E3%81%93%E3%81%84%E3%82%88</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div>`,17))])}const u=r(i,[["render",y]]),v=JSON.parse('{"path":"/docs/misc/sign/APP.html","title":"APP API 签名与鉴权","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1745052268000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":1,"url":"https://github.com/SocialSisterYi"},{"name":"cctyl","username":"cctyl","email":"34262992+cctyl@users.noreply.github.com","commits":1,"url":"https://github.com/cctyl"},{"name":"LaMerChiang","username":"LaMerChiang","email":"catlair@qq.com","commits":1,"url":"https://github.com/LaMerChiang"},{"name":"Lightning-Lion","username":"Lightning-Lion","email":"85005672+Lightning-Lion@users.noreply.github.com","commits":1,"url":"https://github.com/Lightning-Lion"},{"name":"YuHuanTin","username":"YuHuanTin","email":"51024916+YuHuanTin@users.noreply.github.com","commits":1,"url":"https://github.com/YuHuanTin"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":1,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"0c42c00036ec457a4786431ba9944daf72c96fc0","time":1745052268000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"fix(misc/sign/APP.md): broken demo links"},{"hash":"e7ab2d770b423a891ed7e663d94bfe1f0f59501d","time":1718245563000,"email":"51024916+YuHuanTin@users.noreply.github.com","author":"YuHuanTin","message":"wbi、av2bv、bv2av 的 c++ 实现 (#1035)"},{"hash":"faa3d97c263907ca8c492093d91406e27fc106ed","time":1703135741000,"email":"85005672+Lightning-Lion@users.noreply.github.com","author":"Lightning-Lion","message":"Update APP.md (#911)"},{"hash":"5603b1acbd02f33e54616c8a5e0ae7061a426c8e","time":1695047571000,"email":"catlair@qq.com","author":"LaMerChiang","message":"Update APP.md (#819)"},{"hash":"901e787fc655962b88dac9896b25f41d796cd2c9","time":1688262289000,"email":"34262992+cctyl@users.noreply.github.com","author":"cctyl","message":"feature: App Sign 添加java版本实现 (#729)"},{"hash":"05ac3d5e2a9e28be3bf129ae8c78ffdbebaa161c","time":1684805901000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"添加文档【Wbi 接口签名】,修改目录结构"}]},"filePathRelative":"docs/misc/sign/APP.md"}');export{u as comp,v as data};
|
||||
@@ -0,0 +1,12 @@
|
||||
import{_ as s,c as a,a as e,o as n}from"./app-Dgsdh8A6.js";const d={};function o(l,t){return n(),a("div",null,t[0]||(t[0]=[e(`<h1 id="漫画任务操作" tabindex="-1"><a class="header-anchor" href="#漫画任务操作"><span>漫画任务操作</span></a></h1><h2 id="分享漫画" tabindex="-1"><a class="header-anchor" href="#分享漫画"><span>分享漫画</span></a></h2><blockquote><p>https://manga.bilibili.com/twirp/activity.v1.Activity/ShareComic</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)/ APP</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>platform</td><td>str</td><td>平台</td><td>必要</td><td>android</td></tr></tbody></table><p><strong>json 回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num / str</td><td>返回值</td><td>见对应表格</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td></td></tr><tr><td>meta</td><td>obj</td><td>错误信息</td><td>invalid_argument 时存在,例如 <code>{"argument":"platform"}</code></td></tr><tr><td>data</td><td>obj</td><td></td><td><code>code</code> 为 0,<code>msg</code> 为空时存在</td></tr></tbody></table><p><code>code</code> - <code>msg</code> 对应表:</p><table><thead><tr><th>code</th><th>code 类型</th><th>msg</th><th>备注</th></tr></thead><tbody><tr><td>0</td><td>num</td><td>空</td><td>分享成功,<code>data</code> 存在</td></tr><tr><td>0</td><td>num</td><td>今日已分享</td><td></td></tr><tr><td>invalid_argument</td><td>str</td><td>xxxx must be valid</td><td>xxxx 字段为必须,<code>meta</code>存在</td></tr><tr><td>unauthenticated</td><td>str</td><td>must login</td><td>必须登录才能分享</td></tr></tbody></table><p><code>data</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>point</td><td>num</td><td>获取积分</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-bash"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> https://manga.bilibili.com/twirp/activity.v1.Activity/ShareComic</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxx"</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'platform=android'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>分享成功:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">5</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><details><summary>今日已分享:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"今日已分享"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,18)]))}const i=s(d,[["render",o]]),c=JSON.parse('{"path":"/docs/manga/Activity.html","title":"漫画任务操作","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/manga/Activity.md"}');export{i as comp,c as data};
|
||||
@@ -0,0 +1,117 @@
|
||||
import{_ as n}from"./battery-100-VBikFKl4.js";import{_ as a,c as l,a as e,o as t}from"./app-Dgsdh8A6.js";const o={};function p(c,s){return t(),l("div",null,s[0]||(s[0]=[e('<h1 id="b币方式充电" tabindex="-1"><a class="header-anchor" href="#b币方式充电"><span>B币方式充电</span></a></h1><img src="'+n+`" width="100" height="100"><p><strong>注</strong>:以前充电是电池的概念,1B币折合10电池,一般地充电10电池可获得1经验</p><p><strong>目前(2020/12/02后)则是贝壳的概念,1B币折合1贝壳、1经验(如果存在小数点,则经验值向下取整,即2.5B币获得2经验)</strong></p><h2 id="新版本b币充电" tabindex="-1"><a class="header-anchor" href="#新版本b币充电"><span>新版本B币充电</span></a></h2><blockquote><p>https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/quick</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>bp_num</td><td>num</td><td>贝壳数量</td><td>必要</td><td>必须在2-9999之间</td></tr><tr><td>is_bp_remains_prior</td><td>bool</td><td>是否优先扣除B币余额</td><td>必要</td><td>[true,false],B币充电请选择true</td></tr><tr><td>up_mid</td><td>num</td><td>充电对象用户mid</td><td>必要</td><td></td></tr><tr><td>otype</td><td>str</td><td>充电来源</td><td>必要</td><td>up:空间充电<br>archive:视频充电</td></tr><tr><td>oid</td><td>num</td><td>充电来源代码</td><td>必要</td><td>空间充电:充电对象用户mid<br>视频充电:稿件avid</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功(并不代表充电成功) <br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>-500:服务器错误</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>mid</td><td>num</td><td>本用户mid</td><td></td></tr><tr><td>up_mid</td><td>num</td><td>目标用户mid</td><td></td></tr><tr><td>order_no</td><td>str</td><td>留言token</td><td>用于添加充电留言</td></tr><tr><td>bp_num</td><td>str</td><td>充电贝壳数</td><td></td></tr><tr><td>exp</td><td>num</td><td>获得经验数</td><td></td></tr><tr><td>status</td><td>num</td><td>返回结果</td><td>4:成功<br>-2:低于20电池下限<br>-4:B币不足</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>默认为空</td></tr></tbody></table><p><strong>示例:</strong></p><p>以空间的方式向用户<code>mid=293793435</code>充了2贝壳,得到2经验,留言token为<code>BPRG5CEC3VUPOOANA540</code></p><p>此时<code>data</code>.<code>status</code>=<code>4</code></p><p><s>自己给自己冲QAQ</s></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/quick'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'bp_num=2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'is_bp_remains_prior=true'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'up_mid=293793435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'otype=up'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'oid=293793435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">293793435</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "up_mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">293793435</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "order_no"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"BPRG5CEC3VUPOOANA540"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "bp_num"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "exp"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"2"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p>当所充电贝壳数小于2时,充电不会成功</p><p>此时<code>data</code>.<code>status</code>=<code>-2</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/quick'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'bp_num=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'is_bp_remains_prior=true'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'otype=up'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'oid=293793435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "up_mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "order_no"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "bp_num"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "exp"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">-2</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"elec raw order create failed: 88201"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p>当所充贝壳数折合的B币数不足时,充电也不会成功</p><p>此时<code>data</code>.<code>status</code>=<code>-4</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/quick'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'bp_num=99'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'is_bp_remains_prior=true'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'up_mid=293793435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'otype=up'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'oid=293793435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "up_mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "order_no"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "bp_num"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "exp"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">-4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"bp.to.battery http failed, invalid args, errNo=800409904: B 币余额不足"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="老版本b币充电" tabindex="-1"><a class="header-anchor" href="#老版本b币充电"><span>老版本B币充电</span></a></h2><p>老版本目前已过期,调用接口成功后(code返回0),data.status会返回0,且B币不会消耗,贝壳也不会增加。以下是历史信息:</p><details><summary>查看折叠内容</summary><blockquote><p>https://api.bilibili.com/x/ugcpay/trade/elec/pay/quick</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>elec_num</td><td>num</td><td>充电电池数量</td><td>必要</td><td>必须在2-9999之间</td></tr><tr><td>up_mid</td><td>num</td><td>充电对象用户mid</td><td>必要</td><td></td></tr><tr><td>otype</td><td>str</td><td>充电来源</td><td>必要</td><td>up:空间充电<br>archive:视频充电</td></tr><tr><td>oid</td><td>num</td><td>充电来源代码</td><td>必要</td><td>空间充电:充电对象用户mid<br>视频充电:稿件avid</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功(并不代表充电成功) <br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>mid</td><td>num</td><td>本用户mid</td><td></td></tr><tr><td>up_mid</td><td>num</td><td>目标用户mid</td><td></td></tr><tr><td>order_no</td><td>str</td><td>留言token</td><td>用于添加充电留言</td></tr><tr><td>elec_num</td><td>num</td><td>充电电池数</td><td></td></tr><tr><td>exp</td><td>num</td><td>获得经验数</td><td></td></tr><tr><td>status</td><td>num</td><td>返回结果</td><td>4:成功<br>-2:低于20电池下限<br>-4:B币不足</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>默认为空</td></tr></tbody></table><p><strong>示例:</strong></p><p>以空间的方式向用户<code>mid=293793435</code>充了20电池,得到2经验,留言token为<code>BPRG5CEC3VUPOOANA540</code></p><p>此时<code>data</code>.<code>status</code>=<code>4</code></p><p><s>再次自己冲自己QAQ</s></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/quick'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'elec_num=20'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'up_mid=293793435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'otype=up'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'oid=293793435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">293793435</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "up_mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">293793435</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "order_no"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"BPRG5CEC3VUPOOANA540"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "elec_num"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">20</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "exp"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p>当所充电池数小于2时,充电不会成功</p><p>此时<code>data</code>.<code>status</code>=<code>-2</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/quick'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'elec_num=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'up_mid=293793435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'otype=up'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'oid=293793435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "up_mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "order_no"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "elec_num"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "exp"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">-2</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"elec raw order create failed: 88201"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p>当所充电池数折合的B币数不足时,充电也不会成功</p><p>此时<code>data</code>.<code>status</code>=<code>-4</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/quick'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'elec_num=999'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'up_mid=293793435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'otype=up'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'oid=293793435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "up_mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "order_no"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "elec_num"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "exp"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">-4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"bp.to.battery http failed, invalid args, errNo=800409904: B 币余额不足"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details></details>`,32)]))}const i=a(o,[["render",p]]),D=JSON.parse('{"path":"/docs/electric/Bcoin.html","title":"B币方式充电","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1740498696000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"},{"name":"wuziqian211","username":"wuziqian211","email":"65224318+wuziqian211@users.noreply.github.com","commits":1,"url":"https://github.com/wuziqian211"}],"changelog":[{"hash":"6c1f03e75334aaba6f3b6f3bf346b0326073b779","time":1740498696000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"晨叶梦春","message":"update"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/electric/Bcoin.md"}');export{i as comp,D as data};
|
||||
@@ -0,0 +1,88 @@
|
||||
import{_ as n,c as a,a as l,o as t}from"./app-Dgsdh8A6.js";const o={};function e(p,s){return t(),a("div",null,s[0]||(s[0]=[l(`<h1 id="签到" tabindex="-1"><a class="header-anchor" href="#签到"><span>签到</span></a></h1><blockquote><p>https://manga.bilibili.com/twirp/activity.v1.Activity/ClockIn</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)/ APP</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>platform</td><td>str</td><td>平台</td><td>必要</td><td>android</td></tr><tr><td>device</td><td>str</td><td>平台</td><td>非必要</td><td>h5</td></tr></tbody></table><p><strong>正文参数( application/json ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>type</td><td>num</td><td></td><td>非必要</td><td>补签时使用</td></tr><tr><td>date</td><td>str</td><td>补签日期</td><td>必要</td><td>补签时使用</td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num / str</td><td>返回值</td><td>0:成功<br>invalid_argument:今日已签到</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>成功:空<br>已签到:clockin clockin is duplicate</td></tr><tr><td>meta</td><td>obj</td><td>错误信息</td><td>今日已签到时存在</td></tr><tr><td>data</td><td>obj</td><td></td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>普通签到:</p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-bash"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -L</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://manga.bilibili.com/twirp/activity.v1.Activity/ClockIn'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Cookie: SESSDATA=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Content-Type: application/x-www-form-urlencoded'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'platform=android'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>签到成功:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {}</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><details><summary>今日已签到:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"invalid_argument"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"clockin clockin is duplicate"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "meta"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "argument"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"clockin"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p>补签:</p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-bash"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -L</span><span style="color:#CE9178;"> 'https://manga.bilibili.com/twirp/activity.v1.Activity/ClockIn?platform=android'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Cookie: SESSDATA=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'content-type: application/json;charset=UTF-8'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-d </span><span style="color:#CE9178;">'{"type":0,"date":"2023-02-15"}'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>补签成功:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {}</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h1 id="查询签到状态" tabindex="-1"><a class="header-anchor" href="#查询签到状态"><span>查询签到状态</span></a></h1><blockquote><p>https://manga.bilibili.com/twirp/activity.v1.Activity/GetClockInInfo</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)/ APP</p><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>空</td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>day_count</td><td>num</td><td>连续签到天数</td><td></td></tr><tr><td>status</td><td>num</td><td>今日是否已签到</td><td>0:未签到<br>1:已签到</td></tr><tr><td>credit_icon</td><td>str</td><td></td><td></td></tr><tr><td>sign_before_icon</td><td>str</td><td></td><td></td></tr><tr><td>sign_today_icon</td><td>str</td><td></td><td></td></tr><tr><td>breathe_icon</td><td>str</td><td></td><td></td></tr><tr><td>new_credit_x_icon</td><td>str</td><td></td><td></td></tr><tr><td>coupon_pic</td><td>str</td><td></td><td></td></tr><tr><td>points</td><td>array</td><td>一次签到周期中每次签到可获得点数</td><td></td></tr><tr><td>point_infos</td><td>array</td><td></td><td></td></tr></tbody></table><p><code>point_infos</code>数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>point</td><td>num</td><td>签到可获取积分</td><td></td></tr><tr><td>origin_point</td><td>num</td><td></td><td></td></tr><tr><td>is_activity</td><td>bool</td><td></td><td></td></tr><tr><td>title</td><td>str</td><td>签到奖励描述</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-bash"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -L</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://manga.bilibili.com/twirp/activity.v1.Activity/GetClockInInfo'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Cookie: SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>成功:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "day_count"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">58</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "points"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#B5CEA8;"> 10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#B5CEA8;"> 20</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#B5CEA8;"> 20</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#B5CEA8;"> 10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#B5CEA8;"> 10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#B5CEA8;"> 10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#B5CEA8;"> 30</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "credit_icon"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/v2/9da6QImiK_w192_h192.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "sign_before_icon"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/v2/BuA6z3lhN_w192_h192.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "sign_today_icon"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/v2/TWSLUHbbg_w192_h192.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "breathe_icon"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/anime.breathe.svga"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "point_infos"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "origin_point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "is_activity"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"10积分"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">20</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "origin_point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">20</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "is_activity"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"20积分"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">20</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "origin_point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">20</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "is_activity"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"20积分"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "origin_point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "is_activity"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"10积分"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "origin_point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "is_activity"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"10积分"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "origin_point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "is_activity"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"10积分"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">30</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "origin_point"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">30</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "is_activity"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"30积分+福利券"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "new_credit_x_icon"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/v2/QP5DsW2S_w192_h192.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "coupon_pic"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/v2/Yalqqoiz_w402_h162.png"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,33)]))}const c=n(o,[["render",e]]),r=JSON.parse('{"path":"/docs/manga/ClockIn.html","title":"签到","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1676998806000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":1,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/manga/ClockIn.md"}');export{c as comp,r as data};
|
||||
@@ -0,0 +1,75 @@
|
||||
import{_ as s,c as a,a as n,o as d}from"./app-Dgsdh8A6.js";const l={};function e(o,t){return d(),a("div",null,t[0]||(t[0]=[n(`<h1 id="获取当前话全部图片地址" tabindex="-1"><a class="header-anchor" href="#获取当前话全部图片地址"><span>获取当前话全部图片地址</span></a></h1><blockquote><p>https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)/ APP</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP登录凭证</td><td>必要</td><td>使用APP鉴权方式时必填</td></tr><tr><td>appkey</td><td>str</td><td>cc8617fd6961e070</td><td>非必要</td><td></td></tr><tr><td>mobi_app</td><td>str</td><td>android_comic</td><td>非必要</td><td></td></tr><tr><td>version</td><td>str</td><td>4.21.0</td><td>非必要</td><td></td></tr><tr><td>build</td><td>str</td><td>36421000</td><td>非必要</td><td></td></tr><tr><td>channel</td><td>str</td><td>bilicomic</td><td>非必要</td><td></td></tr><tr><td>platform</td><td>str</td><td>android</td><td>非必要</td><td></td></tr><tr><td>device</td><td>str</td><td>android</td><td>非必要</td><td></td></tr><tr><td>buvid</td><td>str</td><td>XY118701XXXXXXXXX104911DXXXXXCAEXXXXE</td><td>非必要</td><td>长度为37</td></tr><tr><td>machine</td><td>str</td><td></td><td>非必要</td><td>手机品牌+型号</td></tr><tr><td>is_teenager</td><td>num</td><td>0</td><td>非必要</td><td></td></tr><tr><td>no_recommend</td><td>num</td><td>0</td><td>非必要</td><td></td></tr><tr><td>ts</td><td>num</td><td>秒级时间戳</td><td>非必要</td><td></td></tr></tbody></table><p><strong>正文参数( application/json ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>epId(ep_id)</td><td>num</td><td>当前话的id</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td></td></tr><tr><td>data</td><td>obj</td><td></td><td></td></tr></tbody></table><p><code>data</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>path</td><td>str</td><td>.index 文件路径</td><td></td></tr><tr><td>images</td><td>array</td><td>本话图片信息</td><td></td></tr><tr><td>last_modified</td><td>str</td><td>本话信息最后修改时间</td><td></td></tr><tr><td>host</td><td>str</td><td><code>https://manga.hdslb.com</code></td><td></td></tr><tr><td>video</td><td>obj</td><td></td><td></td></tr></tbody></table><p><code>images</code> 数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>path</td><td>str</td><td>图片的路径</td><td>不包含host</td></tr><tr><td>x</td><td>num</td><td>图片宽度</td><td>单位:像素px</td></tr><tr><td>y</td><td>num</td><td>图片高度</td><td>单位:像素px</td></tr><tr><td>video_path</td><td>str</td><td></td><td></td></tr><tr><td>video_size</td><td>str</td><td></td><td></td></tr></tbody></table><p><code>video</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>svid</td><td>str</td><td></td><td></td></tr><tr><td>filename</td><td>str</td><td></td><td></td></tr><tr><td>route</td><td>str</td><td></td><td></td></tr><tr><td>resource</td><td>array</td><td></td><td></td></tr><tr><td>raw_width</td><td>str</td><td></td><td></td></tr><tr><td>raw_height</td><td>str</td><td></td><td></td></tr><tr><td>raw_rotate</td><td>str</td><td></td><td></td></tr><tr><td>img_urls</td><td>array</td><td></td><td></td></tr><tr><td>bin_url</td><td>str</td><td></td><td></td></tr><tr><td>img_x_len</td><td>num</td><td></td><td></td></tr><tr><td>img_x_size</td><td>num</td><td></td><td></td></tr><tr><td>img_y_len</td><td>num</td><td></td><td></td></tr><tr><td>img_y_size</td><td>num</td><td></td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-bash"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -L</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Cookie: SESSDATA=xxx;'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Content-Type: application/json'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-raw </span><span style="color:#CE9178;">'{</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "ep_id": 321912</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">}'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "path"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"/bfs/manga/26564/321912/data.index?token=80eab62fef85c1c134a6399f817a938f&ts=63404145"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "images"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "path"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "x"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1600</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2268</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "video_path"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "video_size"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "path"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"/bfs/manga/bf1c48540b68f473b429317d8f6fa8cdb6eed3a5.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "x"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1600</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2268</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "video_path"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "video_size"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "path"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"/bfs/manga/a46cfe90cfb49c67a4dbfc0002e5bc3d87d02963.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "x"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1600</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2268</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "video_path"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "video_size"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "last_modified"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"2019-05-13 21:15:53"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "host"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://manga.hdslb.com"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "video"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "svid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "filename"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "route"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "resource"</span><span style="color:#D4D4D4;">: [],</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "raw_width"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "raw_height"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "raw_rotate"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "img_urls"</span><span style="color:#D4D4D4;">: [],</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "bin_url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "img_x_len"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "img_x_size"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">160</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "img_y_len"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "img_y_size"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">90</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h1 id="获取某一图片的token" tabindex="-1"><a class="header-anchor" href="#获取某一图片的token"><span>获取某一图片的token</span></a></h1><blockquote><p>https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)/ APP</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP登录凭证</td><td>必要</td><td>使用APP鉴权方式时必填</td></tr><tr><td>appkey</td><td>str</td><td>cc8617fd6961e070</td><td>非必要</td><td></td></tr><tr><td>mobi_app</td><td>str</td><td>android_comic</td><td>非必要</td><td></td></tr><tr><td>version</td><td>str</td><td>4.21.0</td><td>非必要</td><td></td></tr><tr><td>build</td><td>str</td><td>36421000</td><td>非必要</td><td></td></tr><tr><td>channel</td><td>str</td><td>bilicomic</td><td>非必要</td><td></td></tr><tr><td>platform</td><td>str</td><td>android</td><td>非必要</td><td></td></tr><tr><td>device</td><td>str</td><td>android</td><td>非必要</td><td></td></tr><tr><td>buvid</td><td>str</td><td>XY118701XXXXXXXXX104911DXXXXXCAEXXXXE</td><td>非必要</td><td>长度为37</td></tr><tr><td>machine</td><td>str</td><td>samsung+SM-G9730</td><td>非必要</td><td>手机品牌+型号</td></tr><tr><td>is_teenager</td><td>num</td><td>0</td><td>非必要</td><td></td></tr><tr><td>no_recommend</td><td>num</td><td>0</td><td>非必要</td><td></td></tr><tr><td>ts</td><td>num</td><td>秒级时间戳</td><td>非必要</td><td></td></tr></tbody></table><p><strong>正文参数( application/json ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>urls</td><td>str</td><td>请求token的图片地址</td><td>必要</td><td><code>[\\"https://i0.hdslb.com{path}\\"]</code> <br>{path}代表图片的相对网站路径,支持jpg和webp</td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td></td></tr><tr><td>data</td><td>array</td><td></td><td></td></tr></tbody></table><p><code>data</code> 数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>url</td><td>str</td><td>图片下载的地址</td><td>此时网址开头 https://manga.hdslb.com</td></tr><tr><td>token</td><td>str</td><td>图片下载需要的token</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-bash"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -L</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Cookie: SESSDATA=xxx;'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Content-Type: application/json'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-raw </span><span style="color:#CE9178;">'{</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "urls": "[\\"https://i0.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg\\"]"</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">}'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "token"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"36931815abb35857627a22c347dc1c86&ts=634045c2"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ]</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h1 id="下载图片" tabindex="-1"><a class="header-anchor" href="#下载图片"><span>下载图片</span></a></h1><p><em>请求方式:GET</em></p><p>在上一步获取token的基础上,构建如下的url</p><p>例如获取到此token</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-"><span class="line"><span>{</span></span>
|
||||
<span class="line"><span> "code": 0,</span></span>
|
||||
<span class="line"><span> "msg": "",</span></span>
|
||||
<span class="line"><span> "data": [</span></span>
|
||||
<span class="line"><span> {</span></span>
|
||||
<span class="line"><span> "url": "https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg",</span></span>
|
||||
<span class="line"><span> "token": "36931815abb35857627a22c347dc1c86&ts=634045c2"</span></span>
|
||||
<span class="line"><span> }</span></span>
|
||||
<span class="line"><span> ]</span></span>
|
||||
<span class="line"><span>}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>则访问以下网址即可,注意需要添加<code>?token=</code>。此网址有效期较短</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-"><span class="line"><span>https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg?token=36931815abb35857627a22c347dc1c86&ts=634045c2</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><strong>注</strong>:若不加取图 Token 直接访问 <code>https://(i0|i1).hdslb.com/bfs/(manga|new_dyn|archive)/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg</code>均无法获取</p>`,44)]))}const r=s(l,[["render",e]]),i=JSON.parse('{"path":"/docs/manga/Download.html","title":"获取当前话全部图片地址","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1693842068000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"},{"name":"LaMerChiang","username":"LaMerChiang","email":"catlair@qq.com","commits":1,"url":"https://github.com/LaMerChiang"}],"changelog":[{"hash":"92b30f354ab21b97fe52357161fd04e2ca687c97","time":1693842068000,"email":"catlair@qq.com","author":"LaMerChiang","message":"fix: 修正文档中存在的错误路径,标签和目录 (#806)"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/manga/Download.md"}');export{r as comp,i as data};
|
||||
@@ -0,0 +1,51 @@
|
||||
import{_ as a}from"./battery-100-VBikFKl4.js";import{_ as n,c as t,a as l,o as e}from"./app-Dgsdh8A6.js";const o={};function d(p,s){return e(),t("div",null,s[0]||(s[0]=[l('<h1 id="微信-支付宝方式充电" tabindex="-1"><a class="header-anchor" href="#微信-支付宝方式充电"><span>微信&支付宝方式充电</span></a></h1><img src="'+a+`" width="100" height="100"><p>操作流程:</p><ol><li>申请充电二维码及扫码秘钥,秘钥临时保存备用</li><li>使用<code>qr_code_url</code>中的值生成二维码</li><li>用支付宝或微信扫描</li><li>以扫码秘钥作为参数轮询检查扫码支付结果</li></ol><h2 id="申请充电二维码及扫码秘钥" tabindex="-1"><a class="header-anchor" href="#申请充电二维码及扫码秘钥"><span>申请充电二维码及扫码秘钥</span></a></h2><blockquote><p>https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/qr_code/create</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p>秘钥有效时间为10分钟</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>bp_num</td><td>num</td><td>充电B币数量</td><td>必要</td><td>必须在2-9999之间</td></tr><tr><td>is_bp_remains_prior</td><td>bool</td><td>是否优先扣除B币</td><td>必要</td><td>true:是<br>false:否<br>在B币不足时剩余的部分利用支付平台支付</td></tr><tr><td>up_mid</td><td>num</td><td>充电对象用户mid</td><td>必要</td><td></td></tr><tr><td>otype</td><td>str</td><td>充电来源</td><td>必要</td><td>up:空间充电<br>archive:视频充电</td></tr><tr><td>oid</td><td>num</td><td>充电来源代码</td><td>必要</td><td>空间充电:充电对象用户mid<br>视频充电:稿件avid</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>-500:服务器错误</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>qr_code_url</td><td>str</td><td>支付二维码生成内容</td><td>存在转义</td></tr><tr><td>qr_token</td><td>str</td><td>扫码秘钥</td><td></td></tr><tr><td>exp</td><td>num</td><td>获得经验数</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>申请空间的方式向用户23215368充电10电池且不使用B币的支付二维码</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/qr_code/create'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'elec_num=10'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'up_mid=23215368'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'is_bp_remains_prior=false'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'otype=up'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'oid=23215368'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "qr_code_url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://api.bilibili.com/x/ugcpay/trade/elec/pay/qr_code/gateway?mid=293793435&token=c1cb1d95d2194ba58df6bb0f24ae1aaa"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "qr_token"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"c1cb1d95d2194ba58df6bb0f24ae1aaa"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "exp"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="检查扫码支付结果" tabindex="-1"><a class="header-anchor" href="#检查扫码支付结果"><span>检查扫码支付结果</span></a></h2><blockquote><p>https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>qr_token</td><td>str</td><td>扫码秘钥</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>qr_token</td><td>str</td><td>扫码秘钥</td><td></td></tr><tr><td>order_no</td><td>str</td><td>留言token</td><td>未成功则无此项<br>用于添加充电留言</td></tr><tr><td>mid</td><td>num</td><td>当前用户mid</td><td></td></tr><tr><td>status</td><td>num</td><td>状态值</td><td>若秘钥错误则无此项<br>1:已支付<br>2:未扫描<br>3:未确认</td></tr></tbody></table><p><strong>示例:</strong></p><p>当申请到的支付二维码未被扫描时,<code>data</code>.<code>status</code>的值为<code>2</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'qr_token=c7cbdc47fc424cd18f2146db653597b8'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "qr_token"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"c7cbdc47fc424cd18f2146db653597b8"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">293793435</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p>当申请到的支付二维码已扫描但未确认时,<code>data</code>.<code>status</code>的值为<code>3</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'qr_token=c7cbdc47fc424cd18f2146db653597b8'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "qr_token"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"c7cbdc47fc424cd18f2146db653597b8"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">293793435</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">3</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p>成功支付后,<code>data</code>.<code>status</code>的值为<code>1</code>,且<code>data</code>.<code>order_no</code>存在留言token</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'qr_token=c7cbdc47fc424cd18f2146db653597b8'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "qr_token"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"bd649c836c524550bfe22a369334fc05"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "order_no"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"BPTD36U3KP82I31RSSLG"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">293793435</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,41)]))}const i=n(o,[["render",d]]),D=JSON.parse('{"path":"/docs/electric/WeChat_Alipay.html","title":"微信&支付宝方式充电","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1740498696000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":1,"url":"https://github.com/SessionHu"},{"name":"wuziqian211","username":"wuziqian211","email":"65224318+wuziqian211@users.noreply.github.com","commits":1,"url":"https://github.com/wuziqian211"}],"changelog":[{"hash":"6c1f03e75334aaba6f3b6f3bf346b0326073b779","time":1740498696000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"晨叶梦春","message":"update"},{"hash":"b1a06806f09ed3ea130eefc94e33df2bc0335424","time":1691494779000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"将 http 改为 https (#776)"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/electric/WeChat&Alipay.md"}');export{i as comp,D as data};
|
||||
@@ -0,0 +1,26 @@
|
||||
import{_ as a,c as t,a as e,o as n}from"./app-Dgsdh8A6.js";const l={};function o(r,s){return n(),t("div",null,s[0]||(s[0]=[e(`<h1 id="大会员操作" tabindex="-1"><a class="header-anchor" href="#大会员操作"><span>大会员操作</span></a></h1><h2 id="兑换卡券" tabindex="-1"><a class="header-anchor" href="#兑换卡券"><span>兑换卡券</span></a></h2><blockquote><p><a href="https://api.bilibili.com/x/vip/privilege/receive" target="_blank" rel="noopener noreferrer">https://api.bilibili.com/x/vip/privilege/receive</a></p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie (SESSDATA)</p><p><strong>正文参数 (application/x-www-form-urlencoded):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>type</td><td>num</td><td>兑换类型</td><td>必要</td><td>1:B币券<br>2:会员购优惠券<br>3:漫画福利券<br>4:会员购包邮券<br>5:漫画商城优惠券<br>6:装扮体验卡<br>7:课堂优惠券</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token (位于cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf 校验失败<br>-400:请求错误<br>69800:网络繁忙 请稍后再试<br>69801:你已领取过该权益</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>成功时为<code>0</code></td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/vip/privilege/receive'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'type=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="大会员每日经验" tabindex="-1"><a class="header-anchor" href="#大会员每日经验"><span>大会员每日经验</span></a></h2><blockquote><p><a href="https://api.bilibili.com/x/vip/experience/add" target="_blank" rel="noopener noreferrer">https://api.bilibili.com/x/vip/experience/add</a></p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie (SESSDATA)</p><p><strong>正文参数 (application/x-www-form-urlencoded):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>csrf</td><td>str</td><td>CSRF Token (位于cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf 校验失败<br>69198:用户经验已经领取<br>6034007:请求频繁,请稍后再试</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>成功时为<code>0</code></td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>type</td><td>num</td><td>0</td><td><strong>作用尚不明确</strong></td></tr><tr><td>is_grant</td><td>bool</td><td>是否领取成功</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/vip/experience/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><p>当经验领取成功时:</p><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "is_grant"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>当经验已经领取过时:</p><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">69198</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"用户经验已经领取"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "is_grant"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,27)]))}const p=a(l,[["render",o]]),d=JSON.parse('{"path":"/docs/vip/action.html","title":"大会员操作","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1745140161000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"},{"name":"7rikka","username":"7rikka","email":"takanashirikkax@gmail.com","commits":1,"url":"https://github.com/7rikka"},{"name":"LaMerChiang","username":"LaMerChiang","email":"catlair@qq.com","commits":1,"url":"https://github.com/LaMerChiang"},{"name":"wuziqian211","username":"wuziqian211","email":"65224318+wuziqian211@users.noreply.github.com","commits":1,"url":"https://github.com/wuziqian211"}],"changelog":[{"hash":"f52ac24e26fd311fa61f0ac2645982a0cae758ff","time":1745140161000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"晨叶梦春","message":"fix #1177"},{"hash":"b8a124109ddb9e2c54fd840e7952e171647bce70","time":1701182583000,"email":"catlair@qq.com","author":"LaMerChiang","message":"Update action.md 大会员每日经验 (#877)"},{"hash":"57c1817fbafe5ef102a0a84080f2cf040ce1c446","time":1687240232000,"email":"takanashirikkax@gmail.com","author":"7rikka","message":"添加大会员新的兑换项 (#710)"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/vip/action.md"}');export{p as comp,d as data};
|
||||
@@ -0,0 +1,59 @@
|
||||
import{_ as d,c as r,a as o,b as s,d as n,e as a,w as e,r as p,o as i}from"./app-Dgsdh8A6.js";const u={};function c(D,l){const t=p("RouteLink");return i(),r("div",null,[l[50]||(l[50]=o(`<h1 id="仲裁操作" tabindex="-1"><a class="header-anchor" href="#仲裁操作"><span>仲裁操作</span></a></h1><h2 id="申请加入风纪委员会" tabindex="-1"><a class="header-anchor" href="#申请加入风纪委员会"><span>申请加入风纪委员会</span></a></h2><blockquote><p>https://api.bilibili.com/x/credit/v2/jury/apply</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie</p><p>只有用户会员90天内无违规、实名认证且非封禁状态才可以申请加入风纪委员会</p><p>申请成功后可获得30天资格</p><p><strong>正文参数( application/x-www-form-urlencoded):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th></tr></thead><tbody><tr><td>csrf</td><td>str</td><td>cookie中<code>bili_jct</code>的值</td><td>必要</td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf 校验失败<br>25001:申请等级限制(会员等级<3)<br>25002:没有实名认证<br>25003:90天内有封禁记录<br>25013:不能重复申请风纪委资格<br>25016:当日风纪委员名额已发完</td></tr><tr><td>message</td><td>str</td><td>信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="旧api" tabindex="-1"><a class="header-anchor" href="#旧api"><span>旧API</span></a></h4><details><summary>查看旧版API:</summary><blockquote><p>https://api.bilibili.com/x/credit/jury/apply</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)或APP</p><p>只有用户会员等级≥Lv4、90天内无违规、实名认证且非封禁状态才可以申请加入风纪委员会</p><p>每日10:00开放新名额</p><p>申请成功后可获得30天资格</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP登录Token</td><td>APP方式必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf 校验失败<br>25001:申请等级限制(会员等级<3)<br>25002:没有实名认证<br>25003:90天内有封禁记录<br>25013:不能重复申请风纪委资格<br>25016:当日风纪委员名额已发完</td></tr><tr><td>message</td><td>str</td><td>信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>Cookie方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/credit/jury/apply'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>APP方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/credit/jury/apply'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'access_key=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details></details><h2 id="拉取新案件" tabindex="-1"><a class="header-anchor" href="#拉取新案件"><span>拉取新案件</span></a></h2><blockquote><p>https://api.bilibili.com/x/credit/v2/jury/case/next</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:Cookie</p><p><strong>标头参数(Headers):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>Cookie</td><td>str</td><td>Cookie</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>25006:风纪委员资格已过期<br>25008:没有案件<br>25014:已审满</td></tr><tr><td>message</td><td>str</td><td>信息</td><td>默认为0,当code不为0时,显示错误信息</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td>作用尚不明确</td></tr><tr><td>data</td><td>object</td><td>数据本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>case_id</td><td>str</td><td>仲裁案件id</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>Cookie方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/credit/v2/jury/case/next'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--header </span><span style="color:#CE9178;">'cookie: XXXXX'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "case_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"AC2m4HlrIrHv"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="旧api-1" tabindex="-1"><a class="header-anchor" href="#旧api-1"><span>旧API</span></a></h4><details><summary>查看旧版API:</summary><blockquote><p>https://api.bilibili.com/x/credit/jury/caseObtain</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)或APP</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP登录Token</td><td>APP方式必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>25005:不是风纪委员<br>25008:没有案件<br>25014:已审满</td></tr><tr><td>message</td><td>str</td><td>信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td>作用尚不明确</td></tr><tr><td>data</td><td>object</td><td>数据本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>id</td><td>num</td><td>仲裁案件id</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>Cookie方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/credit/jury/caseObtain'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>APP方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/credit/jury/caseObtain'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'access_key=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1239790</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details></details><h2 id="进行仲裁投票" tabindex="-1"><a class="header-anchor" href="#进行仲裁投票"><span>进行仲裁投票</span></a></h2><blockquote><p>https://api.bilibili.com/x/credit/v2/jury/vote</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p>`,37)),s("table",null,[l[20]||(l[20]=s("thead",null,[s("tr",null,[s("th",null,"参数名"),s("th",null,"类型"),s("th",null,"内容"),s("th",null,"必要性"),s("th",null,"备注")])],-1)),s("tbody",null,[l[16]||(l[16]=s("tr",null,[s("td",null,"case_id"),s("td",null,"str"),s("td",null,"案件id"),s("td",null,"必要"),s("td")],-1)),s("tr",null,[l[3]||(l[3]=s("td",null,"vote",-1)),l[4]||(l[4]=s("td",null,"num",-1)),l[5]||(l[5]=s("td",null,"投票类型",-1)),l[6]||(l[6]=s("td",null,"必要",-1)),s("td",null,[l[1]||(l[1]=n("见「")),a(t,{to:"/docs/blackroom/jury/judgement_info.html"},{default:e(()=>l[0]||(l[0]=[n("众裁信息")])),_:1,__:[0]}),l[2]||(l[2]=n("」中表"))])]),s("tr",null,[l[12]||(l[12]=s("td",null,"insiders",-1)),l[13]||(l[13]=s("td",null,"num",-1)),l[14]||(l[14]=s("td",null,"是否观看此类视频",-1)),l[15]||(l[15]=s("td",null,"非必要",-1)),s("td",null,[l[8]||(l[8]=n("默认值为0")),l[9]||(l[9]=s("br",null,null,-1)),l[10]||(l[10]=n("见「")),a(t,{to:"/docs/blackroom/jury/judgement_info.html"},{default:e(()=>l[7]||(l[7]=[n("众裁信息")])),_:1,__:[7]}),l[11]||(l[11]=n("」中表"))])]),l[17]||(l[17]=s("tr",null,[s("td",null,"content"),s("td",null,"str"),s("td",null,"理由"),s("td",null,"非必要"),s("td")],-1)),l[18]||(l[18]=s("tr",null,[s("td",null,"anonymous"),s("td",null,"num"),s("td",null,"是否匿名"),s("td",null,"非必要"),s("td",null,[n("默认值为0"),s("br"),n("0:不匿名"),s("br"),n("1:匿名")])],-1)),l[19]||(l[19]=s("tr",null,[s("td",null,"csrf"),s("td",null,"str"),s("td",null,[n("cookie中"),s("code",null,"bili_jct"),n("的值")]),s("td",null,"必要"),s("td")],-1))])]),l[51]||(l[51]=o(`<p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:未登录<br>-111:csrf 错误<br>-400:请求错误(投票类型错误)<br>25005:不是风纪委员<br>25011:投票类型错误<br>25018:不能进行此操作<br><br><em>注:新版本对于一个不存在的<code>case_id</code>,不会报错。</em></td></tr><tr><td>message</td><td>str</td><td>信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td>作用尚不明确</td></tr></tbody></table><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="旧api-2" tabindex="-1"><a class="header-anchor" href="#旧api-2"><span>旧API</span></a></h4>`,5)),s("details",null,[l[44]||(l[44]=s("summary",null,"查看旧版API:",-1)),l[45]||(l[45]=n(" > https://api.bilibili.com/x/credit/jury/vote ")),l[46]||(l[46]=s("p",null,[s("em",null,"请求方式:POST")],-1)),l[47]||(l[47]=s("p",null,"认证方式:Cookie(SESSDATA)或APP",-1)),l[48]||(l[48]=s("p",null,[s("strong",null,"正文参数( application/x-www-form-urlencoded ):")],-1)),s("table",null,[l[43]||(l[43]=s("thead",null,[s("tr",null,[s("th",null,"参数名"),s("th",null,"类型"),s("th",null,"内容"),s("th",null,"必要性"),s("th",null,"备注")])],-1)),s("tbody",null,[l[35]||(l[35]=s("tr",null,[s("td",null,"cid"),s("td",null,"num"),s("td",null,"案件id"),s("td",null,"必要"),s("td")],-1)),s("tr",null,[l[24]||(l[24]=s("td",null,"vote",-1)),l[25]||(l[25]=s("td",null,"num",-1)),l[26]||(l[26]=s("td",null,"投票类型",-1)),l[27]||(l[27]=s("td",null,"必要",-1)),s("td",null,[l[22]||(l[22]=n("见「")),a(t,{to:"/docs/blackroom/jury/judgement_info.html"},{default:e(()=>l[21]||(l[21]=[n("众裁信息")])),_:1,__:[21]}),l[23]||(l[23]=n("」中表"))])]),s("tr",null,[l[31]||(l[31]=s("td",null,"content",-1)),l[32]||(l[32]=s("td",null,"str",-1)),l[33]||(l[33]=s("td",null,"理由",-1)),l[34]||(l[34]=s("td",null,"非必要",-1)),s("td",null,[l[29]||(l[29]=n("见「")),a(t,{to:"/docs/blackroom/jury/judgement_info.html"},{default:e(()=>l[28]||(l[28]=[n("众裁信息")])),_:1,__:[28]}),l[30]||(l[30]=n("」中表"))])]),l[36]||(l[36]=s("tr",null,[s("td",null,"likes"),s("td",null,"nums"),s("td",null,"支持的观点"),s("td",null,"非必要"),s("td")],-1)),l[37]||(l[37]=s("tr",null,[s("td",null,"hates"),s("td",null,"nums"),s("td",null,"反对的观点"),s("td",null,"非必要"),s("td")],-1)),l[38]||(l[38]=s("tr",null,[s("td",null,"attr"),s("td",null,"num"),s("td",null,"是否匿名"),s("td",null,"非必要"),s("td",null,[n("0:匿名"),s("br"),n("1:不匿名")])],-1)),l[39]||(l[39]=s("tr",null,[s("td",null,"apply_type"),s("td",null,"num"),s("td",null,"是否更改原因"),s("td",null,"非必要"),s("td",null,[n("0:保持原来原因"),s("br"),n("1:投票给新原因")])],-1)),l[40]||(l[40]=s("tr",null,[s("td",null,"origin_reason"),s("td",null,"num"),s("td",null,"原始原因"),s("td",null,"非必要"),s("td",null,"见「封禁公示」中表")],-1)),l[41]||(l[41]=s("tr",null,[s("td",null,"apply_reason"),s("td",null,"num"),s("td",null,"新原因"),s("td",null,"非必要"),s("td",null,"见「封禁公示」中表")],-1)),l[42]||(l[42]=s("tr",null,[s("td",null,"csrf"),s("td",null,"str"),s("td",null,"CSRF Token(位于cookie)"),s("td",null,"Cookie方式必要"),s("td")],-1))])]),l[49]||(l[49]=o(`<p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:未登录<br>-111:csrf 错误<br>-400:请求错误(投票类型错误)<br>25005:不是风纪委员<br>25009: 案件不存在<br>25011:投票类型错误<br>25012:重复投票</td></tr><tr><td>message</td><td>str</td><td>信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td>作用尚不明确</td></tr></tbody></table><p><strong>示例:</strong></p><p>为案件<code>2333</code>投票,建议封禁,无理由,不匿名,无支持/反对观点,不修改投票原因</p><p>Cookie方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/credit/jury/vote'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'cid=2333'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'vote=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'content='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'likes='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'hates='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'attr=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'apply_type=0'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'origin_reason='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'apply_reason='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>APP方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/credit/jury/vote'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'access_key=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'cid=2333'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'vote=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'content='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'likes='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'hates='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'attr=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'apply_type=0'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'origin_reason='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'apply_reason='</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,10))])])}const b=d(u,[["render",c]]),m=JSON.parse('{"path":"/docs/blackroom/jury/action.html","title":"仲裁操作","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/blackroom/jury/action.md"}');export{b as comp,m as data};
|
||||
@@ -0,0 +1,19 @@
|
||||
import{_ as t,c as a,a as e,o as n}from"./app-Dgsdh8A6.js";const l={};function o(d,s){return n(),a("div",null,s[0]||(s[0]=[e(`<h1 id="音频投币-收藏" tabindex="-1"><a class="header-anchor" href="#音频投币-收藏"><span>音频投币&收藏</span></a></h1><h2 id="查询音频收藏状态" tabindex="-1"><a class="header-anchor" href="#查询音频收藏状态"><span>查询音频收藏状态</span></a></h2><blockquote><p>https://www.bilibili.com/audio/music-service-c/web/collections/songs-coll</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p>鉴权方式:Cookie中<code>DedeUserID</code>存在且不为0</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>sid</td><td>num</td><td>音频auid</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>72000000:参数错误<br>72010002:账号未登陆<br>7201006:该音频不存在或已被下架</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>默认为success</td></tr><tr><td>data</td><td>bool</td><td>是否收藏</td><td>false:未收藏<br>true:已收藏</td></tr></tbody></table><p><strong>示例:</strong></p><p>查询音频<code>au13598</code>的收藏状态</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://www.bilibili.com/audio/music-service-c/web/collections/songs-coll'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'sid=13598'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx;DedeUserID=1;'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"success"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="查询音频投币数" tabindex="-1"><a class="header-anchor" href="#查询音频投币数"><span>查询音频投币数</span></a></h2><blockquote><p>https://www.bilibili.com/audio/music-service-c/web/coin/audio</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p>鉴权方式:Cookie中<code>DedeUserID</code>存在且不为0</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>sid</td><td>num</td><td>音频auid</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>72000000:参数错误<br>72010002:账号未登陆<br>7201006:该音频不存在或已被下架</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>默认为success</td></tr><tr><td>data</td><td>num</td><td>投币数量</td><td>0为未投币,上限为2</td></tr></tbody></table><p><strong>示例:</strong></p><p>查询音频<code>au13598</code>的投币数</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://www.bilibili.com/audio/music-service-c/web/coin/audio'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'sid=15664'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx;DedeUserID=1;'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"success"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="投币音频" tabindex="-1"><a class="header-anchor" href="#投币音频"><span>投币音频</span></a></h2><blockquote><p>https://www.bilibili.com/audio/music-service-c/web/coin/add</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>sid</td><td>num</td><td>音频 auid</td><td>必要</td><td></td></tr><tr><td>multiply</td><td>num</td><td>投币数量(最大为 2)</td><td>必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于 cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>72000000:参数错误<br>72010002:账号未登陆<br>7201006:该音频不存在或已被下架</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>data</td><td>str</td><td>当前投币数量</td><td>0 为未投币,上限为 2</td></tr></tbody></table><p><strong>示例:</strong></p><p>为音频<code>au13598</code>投币</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://www.bilibili.com/audio/music-service-c/web/coin/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'sid=15664'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx;DedeUserID=1;'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"1"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,42)]))}const i=t(l,[["render",o]]),c=JSON.parse('{"path":"/docs/audio/action.html","title":"音频投币&收藏","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/audio/action.md"}');export{i as comp,c as data};
|
||||
@@ -0,0 +1,29 @@
|
||||
import{_ as t,a,b as e}from"./fav-DItVJQlV.js";import{_ as n,c as l,a as d,o}from"./app-Dgsdh8A6.js";const r={};function i(p,s){return o(),l("div",null,s[0]||(s[0]=[d('<h1 id="专栏点赞-投币-收藏" tabindex="-1"><a class="header-anchor" href="#专栏点赞-投币-收藏"><span>专栏点赞&投币&收藏</span></a></h1><h2 id="点赞文章" tabindex="-1"><a class="header-anchor" href="#点赞文章"><span>点赞文章</span></a></h2><img src="'+t+`" width="100" height="100"><blockquote><p>https://api.bilibili.com/x/article/like</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>id</td><td>num</td><td>文章cvid</td><td>必要</td><td></td></tr><tr><td>type</td><td>num</td><td>操作方式</td><td>必要</td><td>1:点赞<br>2:取消赞</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功 <br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>10003:不存在该稿件<br>65006:已赞过<br>65004:取消点赞失败</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>为文章<code>cv5806746</code>点赞</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/article/like'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'id=5806746'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'type=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="投币文章" tabindex="-1"><a class="header-anchor" href="#投币文章"><span>投币文章</span></a></h2><img src="`+a+`" width="100" height="100"><blockquote><p>https://api.bilibili.com/x/web-interface/coin/add</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>aid</td><td>num</td><td>文章cvid</td><td>必要</td><td></td></tr><tr><td>upid</td><td>num</td><td>文章作者mid</td><td>必要</td><td></td></tr><tr><td>multiply</td><td>num</td><td>投币数量</td><td>必要</td><td>上限为2</td></tr><tr><td>avtype</td><td>num</td><td>2</td><td>必要</td><td>必须为2</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-102:账号被封停<br>-104:硬币不足<br>-111:csrf校验失败<br>-400:请求错误<br>10003:不存在该稿件<br>34002:不能给自己投币<br>34003:非法的投币数量<br>34005:超过投币上限</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p>data 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>like</td><td>bool</td><td>是否点赞成功</td><td>true:成功<br>false:失败<br>已赞过则附加点赞失败</td></tr></tbody></table><p><strong>示例:</strong></p><p>为文章<code>cv5806746</code>投币1枚</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/coin/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=5806746'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'upid=486980924'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'multiply=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'avtype=2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "like"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="收藏文章" tabindex="-1"><a class="header-anchor" href="#收藏文章"><span>收藏文章</span></a></h2><img src="`+e+`" width="100" height="100"><blockquote><p>https://api.bilibili.com/x/article/favorites/add</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>id</td><td>num</td><td>文章cvid</td><td>必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>-404:无此项</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>正确为success</td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>收藏文章<code>cv5806746</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/article/favorites/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'id=5806746'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,45)]))}const h=n(r,[["render",i]]),D=JSON.parse('{"path":"/docs/article/action.html","title":"专栏点赞&投币&收藏","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1745141309000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"},{"name":"wuziqian211","username":"wuziqian211","email":"65224318+wuziqian211@users.noreply.github.com","commits":1,"url":"https://github.com/wuziqian211"},{"name":"btjawa","username":"btjawa","email":"125720787+btjawa@users.noreply.github.com","commits":1,"url":"https://github.com/btjawa"}],"changelog":[{"hash":"c4dc2268a9c5d61487399cbcde9a89dd125ff881","time":1745141309000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"晨叶梦春","message":"add #1163","coAuthors":[{"name":"btjawa","email":"125720787+btjawa@users.noreply.github.com"}]},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/article/action.md"}');export{h as comp,D as data};
|
||||
@@ -0,0 +1,30 @@
|
||||
import{_ as t,c as a,a as e,o as n}from"./app-Dgsdh8A6.js";const l={};function d(o,s){return n(),a("div",null,s[0]||(s[0]=[e(`<h1 id="相簿操作" tabindex="-1"><a class="header-anchor" href="#相簿操作"><span>相簿操作</span></a></h1><details><summary>功能已下线</summary><h2 id="点赞相簿" tabindex="-1"><a class="header-anchor" href="#点赞相簿"><span><s>点赞相簿</s></span></a></h2><blockquote><p>https://api.vc.bilibili.com/link_draw/v2/Vote/operate</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>doc_id</td><td>num</td><td>相簿id</td><td>必要</td><td></td></tr><tr><td>type</td><td>num</td><td>操作方式</td><td>必要</td><td>1:点赞<br>2:取消赞</td></tr><tr><td>csrf_token</td><td>str</td><td>CSRF Token(位于cookie)</td><td>非必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>1:参数错误<br>3:未登录<br>110022:已经操作过了</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>默认为success</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为success</td></tr><tr><td>data</td><td>obj</td><td>数据本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>type</td><td>num</td><td>操作方式</td><td>1:点赞<br>2:取消赞</td></tr></tbody></table><p><strong>示例:</strong></p><p>点赞相簿<code>id=99184721</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.vc.bilibili.com/link_draw/v2/Vote/operate'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'doc_id=99184721'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'type=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf_token=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"success"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"success"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="收藏相簿" tabindex="-1"><a class="header-anchor" href="#收藏相簿"><span><s>收藏相簿</s></span></a></h2><blockquote><p>https://api.vc.bilibili.com/user_plus/v1/Fav/add</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>fav_id</td><td>num</td><td>相簿id</td><td>必要</td><td></td></tr><tr><td>biz_type</td><td>num</td><td>2</td><td>必要</td><td>作用尚不明确</td></tr><tr><td>csrf_token</td><td>str</td><td>CSRF Token(位于cookie)</td><td>非必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-400:参数错误<br>-500:未登录<br>-507:已收藏</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>默认为OK</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为OK</td></tr><tr><td>data</td><td>array</td><td>空</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>收藏相簿<code>id=99184721</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.vc.bilibili.com/user_plus/v1/Fav/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'fav_id=99184721'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'biz_type=2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf_token=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"OK"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"OK"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: []</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="取消收藏相簿" tabindex="-1"><a class="header-anchor" href="#取消收藏相簿"><span>取消收藏相簿</span></a></h2><blockquote><p>https://api.vc.bilibili.com/user_plus/v1/Fav/delete</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>fav_id</td><td>num</td><td>相簿id</td><td>必要</td><td></td></tr><tr><td>biz_type</td><td>num</td><td>2</td><td>必要</td><td>作用尚不明确</td></tr><tr><td>csrf_token</td><td>str</td><td>CSRF Token(位于cookie)</td><td>非必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-400:参数错误<br>-500:未登录</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>默认为OK</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为OK</td></tr><tr><td>data</td><td>array</td><td>空</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>取消收藏相簿<code>id=99184721</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.vc.bilibili.com/user_plus/v1/Fav/delete'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'fav_id=99184721'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'biz_type=2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf_token=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"OK"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"OK"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: []</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details></details>`,2)]))}const p=t(l,[["render",d]]),i=JSON.parse('{"path":"/docs/album/action.html","title":"相簿操作","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1745165052000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"},{"name":"wuziqian211","username":"wuziqian211","email":"65224318+wuziqian211@users.noreply.github.com","commits":2,"url":"https://github.com/wuziqian211"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":1,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"ab2762aeaa0aad65603478ca704cd4cbc3b9c425","time":1745165052000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat: mark all album doc as down"},{"hash":"2382b768aaafef33247bf09510649e2501341b26","time":1720284320000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"wuziqian211","message":"feat: 更新部分接口文档的表述 (#1049)"},{"hash":"b16381e0ed1d6337d80801b719de1f56b917a0e1","time":1720278007000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"wuziqian211","message":"更新 action.md"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/album/action.md"}');export{p as comp,i as data};
|
||||
@@ -0,0 +1,55 @@
|
||||
import{_ as e,c as l,a as t,b as d,d as a,e as o,w as r,r as i,o as p}from"./app-Dgsdh8A6.js";const c={};function u(h,s){const n=i("RouteLink");return p(),l("div",null,[s[2]||(s[2]=t(`<h1 id="动态操作" tabindex="-1"><a class="header-anchor" href="#动态操作"><span>动态操作</span></a></h1><h2 id="点赞动态" tabindex="-1"><a class="header-anchor" href="#点赞动态"><span>点赞动态</span></a></h2><blockquote><p>https://api.bilibili.com/x/dynamic/feed/dyn/thumb</p></blockquote><p><em>请求方法: POST</em></p><p>认证方式: Cookie (SESSDATA)</p><p><strong>URL 参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>csrf</td><td>string</td><td>CSRF Token (即 Cookie 中 bili_jct)</td><td>必要</td><td></td></tr></tbody></table><p><strong>正文参数 (application/json):</strong></p><p>根对象:</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>dyn_id_str</td><td>string</td><td>动态 id</td><td>必要</td><td></td></tr><tr><td>up</td><td>number</td><td>点赞状态</td><td>必要</td><td>0: 切换<br>1: 点赞<br>2: 取消点赞</td></tr><tr><td>spmid</td><td>string</td><td><code>333.1369.0.0</code></td><td>不必要</td><td></td></tr><tr><td>from_spmid</td><td>string</td><td><code>333.999.0.0</code></td><td>不必要</td><td></td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>number</td><td>返回值</td><td>0: 成功<br>-101: 账号未登录<br>-111: csrf 校验失败<br>4100001: 参数错误</td></tr><tr><td>message</td><td>string</td><td>错误消息</td><td>成功时为 <code>0</code></td></tr><tr><td>ttl</td><td>number</td><td><code>1</code></td><td></td></tr><tr><td>data</td><td>object</td><td>空对象</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>点赞动态 <code>1057955152016703512</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/dynamic/feed/dyn/thumb'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --url-query</span><span style="color:#CE9178;"> 'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxxxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -H</span><span style="color:#CE9178;"> 'content-type: application/json'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-raw</span><span style="color:#CE9178;"> '{"dyn_id_str":"1057955152016703512","up":1}'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {}</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="点赞动态-旧版" tabindex="-1"><a class="header-anchor" href="#点赞动态-旧版"><span>点赞动态 (旧版)</span></a></h2><blockquote><p>https://api.vc.bilibili.com/dynamic_like/v1/dynamic_like/thumb</p></blockquote><p><em>请求方法: POST</em></p><p>认证方式: Cookie (SESSDATA)</p><p><strong>正文参数 (application/x-www-form-urlencoded):</strong></p><p>根对象:</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>dynamic_id</td><td>string</td><td>动态 id</td><td>必要</td><td></td></tr><tr><td>up</td><td>number</td><td>点赞状态</td><td>必要</td><td>0: 切换<br>1: 点赞<br>2: 取消点赞</td></tr><tr><td>csrf</td><td>string</td><td>CSRF Token (即 Cookie 中 bili_jct)</td><td>必要</td><td></td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>number</td><td>返回值</td><td>0: 成功<br>-101: 账号未登录<br>-111: csrf 校验失败<br>4100001: 参数错误</td></tr><tr><td>message</td><td>string</td><td>错误消息</td><td>成功时为 <code>0</code></td></tr><tr><td>ttl</td><td>number</td><td><code>1</code></td><td></td></tr><tr><td>data</td><td>object</td><td>空对象</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>点赞动态 <code>1060771233257226247</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://api.vc.bilibili.com/dynamic_like/v1/dynamic_like/thumb'</span><span style="color:#D7BA7D;"> \\ </span><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf=xxxxxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'dynamic_id=1060771233257226247'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'up=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {}</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="删除动态" tabindex="-1"><a class="header-anchor" href="#删除动态"><span>删除动态</span></a></h2>`,32)),d("p",null,[s[1]||(s[1]=a("参见 ")),o(n,{to:"/docs/creativecenter/opus.html#%E5%88%A0%E9%99%A4%E5%8A%A8%E6%80%81"},{default:r(()=>s[0]||(s[0]=[a("创作中心 -> 图文操作 -> 删除动态")])),_:1,__:[0]})]),s[3]||(s[3]=t(`<h2 id="删除动态-旧版" tabindex="-1"><a class="header-anchor" href="#删除动态-旧版"><span>删除动态 (旧版)</span></a></h2><blockquote><p><a href="https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/rm_dynamic" target="_blank" rel="noopener noreferrer">https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/rm_dynamic</a></p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数(multipart/form-data):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>dynamic_id</td><td>num</td><td>动态id</td><td>必要</td><td></td></tr><tr><td>csrf_token</td><td>str</td><td>csrf</td><td>必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>csrf</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>500404:已经删除过该动态<br>500406:动态不是自己的</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>成功时为空文本</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>同<code>msg</code></td></tr><tr><td>data</td><td>obj</td><td>数据本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>_gt_</td><td>num</td><td>0</td><td><strong>作用尚不明确</strong></td></tr></tbody></table><p><strong>示例:</strong></p><p>删除动态<code>dynamic_id=588320531406678918</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/rm_dynamic'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'dynamic_id=588320531406678918'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf_token=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "_gt_"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="删除定时发布动态" tabindex="-1"><a class="header-anchor" href="#删除定时发布动态"><span>删除定时发布动态</span></a></h2><blockquote><p><a href="https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/rm_draft" target="_blank" rel="noopener noreferrer">https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/rm_draft</a></p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数(application/x-www-form-urlencoded):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>draft_id</td><td>num</td><td>定时发布动态id</td><td>必要</td><td></td></tr><tr><td>csrf_token</td><td>str</td><td>csrf</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>4120015:系统异常</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td></td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>数据本体</td><td>空对象,即<code>{}</code></td></tr></tbody></table><p><strong>示例:</strong></p><p>删除定时发布动态<code>draft_id=755409289278914611</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/rm_draft'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'draft_id=755409289278914611'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf=xxxx'</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">, </span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">, </span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {}</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="设置置顶动态" tabindex="-1"><a class="header-anchor" href="#设置置顶动态"><span>设置置顶动态</span></a></h2><blockquote><p>https://api.bilibili.com/x/dynamic/feed/space/set_top</p></blockquote><p><strong>请求方法: POST</strong></p><p>认证方式: Cookie (SESSDATA)</p><p>鉴权方式: Cookie 中 <code>buvid3</code> 不为空</p><p><strong>URL 参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>csrf</td><td>string</td><td>CSRF Token (即 Cookie 中 bili_jct)</td><td>必要</td><td></td></tr></tbody></table><p><strong>正文参数 (application/json):</strong></p><p>根对象:</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>dyn_str</td><td>string</td><td>动态 id</td><td>必要</td><td></td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>number</td><td>返回值</td><td>0: 成功<br>-101: 账号未登录<br>-111: csrf 校验失败<br>4100001: 参数错误</td></tr><tr><td>message</td><td>string</td><td>错误消息</td><td>成功时为 <code>0</code></td></tr><tr><td>ttl</td><td>number</td><td><code>1</code></td><td></td></tr><tr><td>data</td><td>object</td><td>空对象</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>置顶动态 <code>1063487284684259332</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/dynamic/feed/space/set_top'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --url-query</span><span style="color:#CE9178;"> 'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxxxx; buvid3=aaa'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -H</span><span style="color:#CE9178;"> 'content-type: application/json'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-raw</span><span style="color:#CE9178;"> '{"dyn_str":"1063487284684259332"}'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {}</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="取消置顶动态" tabindex="-1"><a class="header-anchor" href="#取消置顶动态"><span>取消置顶动态</span></a></h2><blockquote><p>https://api.bilibili.com/x/dynamic/feed/space/rm_top</p></blockquote><p><strong>请求方法: POST</strong></p><p>认证方式: Cookie (SESSDATA)</p><p><strong>URL 参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>csrf</td><td>string</td><td>CSRF Token (即 Cookie 中 bili_jct)</td><td>必要</td><td></td></tr></tbody></table><p><strong>正文参数 (application/json):</strong></p><p>根对象:</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>dyn_str</td><td>string</td><td>动态 id</td><td>必要</td><td></td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>number</td><td>返回值</td><td>0: 成功<br>-101: 账号未登录<br>-111: csrf 校验失败<br>4100001: 参数错误</td></tr><tr><td>message</td><td>string</td><td>错误消息</td><td>成功时为 <code>0</code></td></tr><tr><td>ttl</td><td>number</td><td><code>1</code></td><td></td></tr><tr><td>data</td><td>object</td><td>空对象</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>取消置顶动态 <code>1063487284684259332</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/dynamic/feed/space/rm_top'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --url-query</span><span style="color:#CE9178;"> 'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxxxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -H</span><span style="color:#CE9178;"> 'content-type: application/json'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-raw</span><span style="color:#CE9178;"> '{"dyn_str":"1063487284684259332"}'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {}</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,61))])}const b=e(c,[["render",u]]),D=JSON.parse('{"path":"/docs/dynamic/action.html","title":"动态操作","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1746964165000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"},{"name":"wuziqian211","username":"wuziqian211","email":"65224318+wuziqian211@users.noreply.github.com","commits":4,"url":"https://github.com/wuziqian211"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":7,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"4144fc9fcc65988e5f0d368796d5962f0aa0f609","time":1746964165000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"fix(dynamic/action.md): typo","coAuthors":[{"name":"晨叶梦春","email":"65224318+wuziqian211@users.noreply.github.com"}]},{"hash":"11dee979766e979fc9a52842abb4c915af3bf1ab","time":1746619234000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat: 取消置顶动态"},{"hash":"105dfe311a2ca438da2a129fe14f61c196096934","time":1746612363000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"fix(dynamic/action.md): set_top needs buvid3"},{"hash":"4d20caed1eb9151b8f51dbeadbc9a403121873d2","time":1746597381000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat: 置顶动态"},{"hash":"53e79c6f6df3bdb1018d0492608f0dc246f52167","time":1745855930000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat(dynamic/action.md): link to new remove dynamic"},{"hash":"e70777654991bb482cdbdc9cd4893e7319325d71","time":1745853050000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat(dynamic/action.md): old thumb"},{"hash":"be33ec2ea1b78e3faa606e327bb02007f411e43d","time":1745772724000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat(dynamic/action.md): thumb"},{"hash":"fb1d970a9becd5741684ceb0e2a7b16530065aa5","time":1745154419000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"晨叶梦春","message":"添加回被 #1049 误删除的部分"},{"hash":"2382b768aaafef33247bf09510649e2501341b26","time":1720284320000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"wuziqian211","message":"feat: 更新部分接口文档的表述 (#1049)"},{"hash":"478feea1b24b4ac252c8f7cb4ac335c15e4504eb","time":1720280017000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"wuziqian211","message":"feat: 规范化文档"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/dynamic/action.md"}');export{b as comp,D as data};
|
||||
@@ -0,0 +1,159 @@
|
||||
import{_ as t,a,b as n}from"./fav-DItVJQlV.js";import{_ as e,c as l,a as d,o}from"./app-Dgsdh8A6.js";const r={};function p(i,s){return o(),l("div",null,s[0]||(s[0]=[d('<h1 id="稿件观众操作" tabindex="-1"><a class="header-anchor" href="#稿件观众操作"><span>稿件观众操作</span></a></h1><h2 id="点赞" tabindex="-1"><a class="header-anchor" href="#点赞"><span>点赞</span></a></h2><img src="'+t+`" width="100" height="100"><h3 id="点赞视频-web端" tabindex="-1"><a class="header-anchor" href="#点赞视频-web端"><span>点赞视频(web端)</span></a></h3><blockquote><p>https://api.bilibili.com/x/web-interface/archive/like</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:仅可Cookie(SESSDATA)</p><p>需验证 Cookie 中<code>buvid3</code>字段存在且正常, 否则将导致触发风控</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>aid</td><td>num</td><td>稿件 avid</td><td>必要(可选)</td><td>avid 与 bvid 任选一个</td></tr><tr><td>bvid</td><td>str</td><td>稿件 bvid</td><td>必要(可选)</td><td>avid 与 bvid 任选一个</td></tr><tr><td>like</td><td>num</td><td>操作方式</td><td>必要</td><td>1:点赞<br>2:取消赞</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于 Cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功 <br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>-403: 账号异常<br> 10003:不存在该稿件<br>65004:取消点赞失败<br>65006:重复点赞</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>点赞视频<code>av79677524</code>/<code>BV1uJ411r7hL</code></p><p>avid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/archive/like'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=79677524'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'like=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>bvid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/archive/like'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'bvid=BV1uJ411r7hL'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'like=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="点赞视频-app端" tabindex="-1"><a class="header-anchor" href="#点赞视频-app端"><span>点赞视频(APP端)</span></a></h3><blockquote><p>https://app.bilibili.com/x/v2/view/like</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:仅可APP</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP 登录 Token</td><td>APP 方式必要</td><td></td></tr><tr><td>aid</td><td>num</td><td>稿件 avid</td><td>必要</td><td></td></tr><tr><td>like</td><td>num</td><td>操作方式</td><td>必要</td><td>0:点赞<br>1:取消赞</td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功 <br>-101:账号未登录<br>-400:请求错误<br>-403: 账号异常<br>10003:不存在该稿件</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>数据本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>toast</td><td>str</td><td>提示信息内容</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>点赞视频<code>av79677524</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://app.bilibili.com/x/v2/view/like'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'access_key=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=79677524'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'like=0'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "toast"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"点赞收到!视频可能推荐哦"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="判断视频近期是否被点赞-双端" tabindex="-1"><a class="header-anchor" href="#判断视频近期是否被点赞-双端"><span>判断视频近期是否被点赞(双端)</span></a></h3><blockquote><p>https://api.bilibili.com/x/web-interface/archive/has/like</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p>注: 这一 API 实际上只能判断出视频<strong>在近期内</strong>是否被点赞, 并不能判断出视频是否被点赞. 「近期」的定义不明, 但至少半年前点赞过的视频, 用这一接口获取到的结果就已经是 <code>0</code> 了. 参见 <a href="https://github.com/SocialSisterYi/bilibili-API-collect/issues/380" target="_blank" rel="noopener noreferrer">#380</a>.</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP 登录 Token</td><td>APP 方式必要</td><td></td></tr><tr><td>aid</td><td>num</td><td>稿件 avid</td><td>必要(可选)</td><td>avid 与 bvid 任选一个</td></tr><tr><td>bvid</td><td>str</td><td>稿件 bvid</td><td>必要(可选)</td><td>avid 与 bvid 任选一个</td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-400:请求错误<br>-101:账号未登录</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>num</td><td>被点赞标志</td><td>0:未点赞<br>1:已点赞</td></tr></tbody></table><p><strong>示例:</strong></p><p>视频<code>av39330059</code>/<code>BV1Bt411z799</code>的状态为已点赞</p><p>avid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/archive/has/like'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=39330059'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>bvid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/archive/has/like'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'bvid=BV1Bt411z799'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="点踩" tabindex="-1"><a class="header-anchor" href="#点踩"><span>点踩</span></a></h2><h3 id="点踩视频-app端" tabindex="-1"><a class="header-anchor" href="#点踩视频-app端"><span>点踩视频(App端)</span></a></h3><blockquote><p>https://app.biliapi.net/x/v2/view/dislike</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:仅可App</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP 登录 Token</td><td>必要</td><td></td></tr><tr><td>aid</td><td>num</td><td>视频 aid</td><td>必要</td><td></td></tr><tr><td>dislike</td><td>num</td><td>操作类型</td><td>必要</td><td>0:点踩<br>1:取消点踩</td></tr></tbody></table><p><strong>json回复:</strong></p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功 <br>-101:账号未登录<br>-400:请求错误<br>-404:啥都木有<br> 65005:取消踩失败 未点踩过<br>65007:已踩过</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>点踩视频</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -L</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://app.biliapi.net/x/v2/view/dislike'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Content-Type: application/x-www-form-urlencoded'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'access_key=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'dislike=0'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>取消点踩</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -L</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://app.biliapi.net/x/v2/view/dislike'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Content-Type: application/x-www-form-urlencoded'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'access_key=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'dislike=1'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="投币" tabindex="-1"><a class="header-anchor" href="#投币"><span>投币</span></a></h2><img src="`+a+`" width="100" height="100"><h3 id="投币视频-web端" tabindex="-1"><a class="header-anchor" href="#投币视频-web端"><span>投币视频(web端)</span></a></h3><blockquote><p>https://api.bilibili.com/x/web-interface/coin/add</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:仅可Cookie(SESSDATA)</p><p>需验证 Cookie 中<code>buvid3</code>字段存在且正常, 否则将导致触发风控</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>aid</td><td>num</td><td>稿件 avid</td><td>必要(可选)</td><td>avid 与 bvid 任选一个</td></tr><tr><td>bvid</td><td>str</td><td>稿件 bvid</td><td>必要(可选)</td><td>avid 与 bvid 任选一个</td></tr><tr><td>multiply</td><td>num</td><td>投币数量</td><td>必要</td><td>上限为2</td></tr><tr><td>select_like</td><td>num</td><td>是否附加点赞</td><td>非必要</td><td>0:不点赞<br>1:同时点赞<br>默认为0</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于 Cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-102:账号被封停<br>-104:硬币不足<br>-111:csrf校验失败<br>-400:请求错误<br>-403: 账号异常<br>10003:不存在该稿件<br>34002:不能给自己投币<br>34003:非法的投币数量<br>34004:投币间隔太短<br>34005:超过投币上限</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p>data 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>like</td><td>bool</td><td>是否点赞成功</td><td>true:成功<br>false:失败<br>已赞过则附加点赞失败</td></tr></tbody></table><p><strong>示例:</strong></p><p>为视频<code>av90671873</code>/<code>BV1N7411A7wC</code>投币2枚</p><p>avid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/coin/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=90671873'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'select_like=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'multiply=2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>bvid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/coin/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'bvid=BV1N7411A7wC'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'select_like=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'multiply=2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "like"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="投币视频-app端" tabindex="-1"><a class="header-anchor" href="#投币视频-app端"><span>投币视频(APP端)</span></a></h3><blockquote><p>https://app.bilibili.com/x/v2/view/coin/add</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:仅可APP</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP 登录 Token</td><td>APP 方式必要</td><td></td></tr><tr><td>aid</td><td>num</td><td>稿件 avid</td><td>必要</td><td></td></tr><tr><td>multiply</td><td>num</td><td>投币数量</td><td>必要</td><td>上限为2</td></tr><tr><td>select_like</td><td>num</td><td>附加点赞</td><td>非必要</td><td>0:不点赞<br>1:同时点赞<br>默认为0</td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-102:账号被封停<br>-104:硬币不足<br>-400:请求错误<br>10003:不存在该稿件<br>34002:不能给自己投币<br>34003:非法的投币数量<br>34004:投币间隔太短<br>34005:超过投币上限</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p>data 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>like</td><td>bool</td><td>是否点赞成功</td><td>true:成功<br>false:失败<br>已赞过则附加点赞失败</td></tr></tbody></table><p>为视频<code>av90671873</code>投币2枚</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://app.bilibili.com/x/v2/view/coin/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'access_key=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=90671873'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'select_like=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'multiply=2'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "like"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="判断视频是否被投币-双端" tabindex="-1"><a class="header-anchor" href="#判断视频是否被投币-双端"><span>判断视频是否被投币(双端)</span></a></h3><blockquote><p>https://api.bilibili.com/x/web-interface/archive/coins</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP 登录 Token</td><td>APP方式必要</td><td></td></tr><tr><td>aid</td><td>num</td><td>稿件 avid</td><td>必要(可选)</td><td>avid 与 bvid 任选一个</td></tr><tr><td>bvid</td><td>str</td><td>稿件 bvid</td><td>必要(可选)</td><td>avid 与 bvid 任选一个</td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-400:请求错误<br>-101:账号未登录</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>multiply</td><td>num</td><td>投币枚数</td><td>未投币为0</td></tr></tbody></table><p><strong>示例:</strong></p><p>视频<code>av37896701</code>/<code>BV18t411q7zz</code>的投币数为2枚</p><p>avid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/archive/coins'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=37896701'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>bvid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/archive/coins'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'bvid=BV18t411q7zz'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "multiply"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="收藏" tabindex="-1"><a class="header-anchor" href="#收藏"><span>收藏</span></a></h2><img src="`+n+`" width="100" height="100"><h3 id="收藏视频-双端" tabindex="-1"><a class="header-anchor" href="#收藏视频-双端"><span>收藏视频(双端)</span></a></h3><blockquote><p>https://api.bilibili.com/medialist/gateway/coll/resource/deal</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p>鉴权方式:Cookie方式时需要验证referer为 <code>.bilibili.com</code>域名下</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP 登录 Token</td><td>APP 方式必要</td><td></td></tr><tr><td>rid</td><td>num</td><td>稿件 avid</td><td>必要</td><td></td></tr><tr><td>type</td><td>num</td><td>必须为2</td><td>必要</td><td></td></tr><tr><td>add_media_ids</td><td>nums</td><td>需要加入的收藏夹 mlid</td><td>必要(可选)</td><td>同时添加多个,用<code>,</code>(%2C)分隔</td></tr><tr><td>del_media_ids</td><td>nums</td><td>需要取消的收藏夹 mlid</td><td>必要(可选)</td><td>同时取消多个,用<code>,</code>(%2C)分隔</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于 Cookie)</td><td>Cookie 方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>-403:访问权限不足<br>10003:不存在该稿件<br>11010: 您访问的内容不存在<br>11201:已经收藏过了<br>11202:已经取消收藏了<br>11203:达到收藏上限<br>72010017:参数错误</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>正确为success</td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>prompt</td><td>bool</td><td>是否为未关注用户收藏</td><td>false:否<br>true:是</td></tr></tbody></table><p><strong>示例:</strong></p><p>将视频<code>av49166435</code>添加到收藏夹<code>49166435</code>中</p><p>Cookie方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/medialist/gateway/coll/resource/deal'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'rid=90671873'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'type=2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'add_media_ids=49166435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'del_media_ids='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-e </span><span style="color:#CE9178;">'https://www.bilibili.com'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>APP方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/medialist/gateway/coll/resource/deal'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'access_key=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'rid=90671873'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'type=2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'add_media_ids=49166435'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'del_media_ids='</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "prompt"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"success"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="收藏视频-web端" tabindex="-1"><a class="header-anchor" href="#收藏视频-web端"><span>收藏视频(Web端)</span></a></h3><blockquote><p>https://api.bilibili.com/x/v3/fav/resource/deal</p></blockquote><p><em>请求方式: POST</em></p><p>认证方式: Cookie(SESSDATA)</p><p><strong>正文参数(application/x-www-form-urlencoded):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>rid</td><td>num</td><td>稿件 avid</td><td>必要</td><td></td></tr><tr><td>type</td><td>num</td><td>必须为2</td><td>必要</td><td></td></tr><tr><td>add_media_ids</td><td>nums</td><td>需要加入的收藏夹 mlid</td><td>必要(可选)</td><td>同时添加多个,用<code>,</code>(%2C)分隔</td></tr><tr><td>del_media_ids</td><td>nums</td><td>需要取消的收藏夹 mlid</td><td>必要(可选)</td><td>同时取消多个,用<code>,</code>(%2C)分隔</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token (即 Cookie 中 bili_jct)</td><td>必要</td><td></td></tr><tr><td>platform</td><td>str</td><td>平台标识?</td><td>非必要</td><td>web端: web</td></tr><tr><td>eab_x</td><td>num</td><td>1</td><td>非必要</td><td>作用尚不明确</td></tr><tr><td>ramval</td><td>num</td><td>正整数</td><td>非必要</td><td>可能与在该页面的停留时间相关?</td></tr><tr><td>ga</td><td>num</td><td>1</td><td>非必要</td><td>作用尚不明确</td></tr><tr><td>gaia_source</td><td>str</td><td>???</td><td>非必要</td><td>web端: web_normal</td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>-101: 账号未登录<br>-111: csrf 校验失败<br>2001000: 参数错误</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td>错误时为 null 或不存在</td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>prompt</td><td>bool</td><td>是否为未关注用户收藏?</td><td>false:否<br>true:是</td></tr><tr><td>ga_data</td><td>null</td><td></td><td>作用尚不明确</td></tr><tr><td>toast_msg</td><td>str</td><td>空</td><td>作用尚不明确</td></tr><tr><td>success_num</td><td>num</td><td>0</td><td>作用尚不明确</td></tr></tbody></table><p><strong>示例:</strong></p><p>将视频 <code>av2</code> 添加到收藏夹 <code>645769214</code> 中</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> "https://api.bilibili.com/x/v3/fav/resource/deal"</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"rid=2"</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"type=2"</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"csrf=xxx"</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"add_media_ids=1428261914"</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "prompt"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ga_data"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "toast_msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "success_num"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="判断视频是否被收藏-双端" tabindex="-1"><a class="header-anchor" href="#判断视频是否被收藏-双端"><span>判断视频是否被收藏(双端)</span></a></h3><blockquote><p>https://api.bilibili.com/x/v2/fav/video/favoured</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP 登录 Token</td><td>APP 方式必要</td><td></td></tr><tr><td>aid</td><td>num 或 str</td><td>稿件 avid 或稿件 bvid</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-400:请求错误<br>-101:账号未登录</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p>data 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>count</td><td>num</td><td>1</td><td>作用尚不明确</td></tr><tr><td>favoured</td><td>bool</td><td>是否收藏</td><td>true:已收藏<br>false:未收藏</td></tr></tbody></table><p><strong>示例:</strong></p><p>视频<code>av46281123</code>/<code>BV1Bb411H7Dv</code>的状态为已收藏</p><p>avid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v2/fav/video/favoured'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=46281123'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>bvid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v2/fav/video/favoured'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=BV1Bb411H7Dv'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "count"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "favoured"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="一键三连" tabindex="-1"><a class="header-anchor" href="#一键三连"><span>一键三连</span></a></h2><p><img src="`+t+'" align="left" width="50" height="50"><img src="'+a+'" align="left" width="50" height="50"><img src="'+n+`" width="50" height="50"></p><h3 id="一键三连视频-web端" tabindex="-1"><a class="header-anchor" href="#一键三连视频-web端"><span>一键三连视频(web端)</span></a></h3><blockquote><p>https://api.bilibili.com/x/web-interface/archive/like/triple</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:仅可Cookie(SESSDATA)</p><p>同时点赞投币收藏视频,收藏于默认收藏夹中</p><p>需验证 Cookie 中<code>buvid3</code>字段存在且正常, 否则将导致触发风控</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>aid</td><td>num</td><td>稿件 avid</td><td>必要(可选)</td><td>avid 与 bvid 任选一个</td></tr><tr><td>bvid</td><td>str</td><td>稿件 bvid</td><td>必要(可选)</td><td>avid 与 bvid 任选一个</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于 Cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>10003:不存在该稿件<br>-403: 账号异常</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>like</td><td>bool</td><td>是否点赞成功</td><td>true:成功<br>false:失败</td></tr><tr><td>coin</td><td>bool</td><td>是否投币成功</td><td>true:成功<br>false:失败</td></tr><tr><td>fav</td><td>bool</td><td>是否收藏成功</td><td>true:成功<br>false:失败</td></tr><tr><td>multiply</td><td>num</td><td>投币枚数</td><td>默认为2</td></tr></tbody></table><p><strong>示例:</strong></p><p>将视频<code>av91003840</code>/<code>BV1Wj411f79U</code>一键三连</p><p>avid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/archive/like/triple'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=91003840'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>bvid方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/archive/like/triple'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'bvid=BV1Wj411f79U'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "like"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "coin"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "fav"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "multiply"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="一键三连视频-app端" tabindex="-1"><a class="header-anchor" href="#一键三连视频-app端"><span>一键三连视频(APP端)</span></a></h3><blockquote><p>https://app.bilibili.com/x/v2/view/like/triple</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:仅可APP</p><p>同时点赞投币收藏视频,收藏于默认收藏夹中</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP 登录 Token</td><td>APP 方式必要</td><td></td></tr><tr><td>aid</td><td>num</td><td>稿件 avid</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-400:请求错误<br>10003:不存在该稿件</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>like</td><td>bool</td><td>是否点赞成功</td><td>true:成功<br>false:失败</td></tr><tr><td>coin</td><td>bool</td><td>是否投币成功</td><td>true:成功<br>false:失败</td></tr><tr><td>fav</td><td>bool</td><td>是否收藏成功</td><td>true:成功<br>false:失败</td></tr><tr><td>multiply</td><td>num</td><td>投币枚数</td><td>默认为2</td></tr></tbody></table><p><strong>示例:</strong></p><p>将视频<code>av91003840</code>一键三连</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://app.bilibili.com/x/v2/view/like/triple'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'access_key=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'aid=91003840'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "like"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "coin"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "fav"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "multiply"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="分享" tabindex="-1"><a class="header-anchor" href="#分享"><span>分享</span></a></h2><h3 id="分享视频-web端" tabindex="-1"><a class="header-anchor" href="#分享视频-web端"><span>分享视频 (Web端)</span></a></h3><blockquote><p>https://api.bilibili.com/x/web-interface/share/add</p></blockquote><p><em>请求方式:POST</em></p><p>鉴权方式: Cookie (buvid3)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>aid</td><td>num</td><td>稿件 aid</td><td>必要 (可选)</td><td>aid 与 bvid 任选一个</td></tr><tr><td>bvid</td><td>str</td><td>稿件 bvid</td><td>必要 (可选)</td><td>aid 与 bvid 任选一个</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token (即 Cookie 中 bili_jct)</td><td>不必要</td><td></td></tr><tr><td>eab_x</td><td>num</td><td>2</td><td>不必要</td><td>作用尚不明确</td></tr><tr><td>ramval</td><td>num</td><td>0</td><td>不必要</td><td>作用尚不明确</td></tr><tr><td>source</td><td>str</td><td>web_normal</td><td>不必要</td><td></td></tr><tr><td>ga</td><td>num</td><td>1</td><td>不必要</td><td>可能与风控有关?</td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>-101: 账号未登录<br>-111: csrf校验失败<br>-400: 请求错误<br>403: 账号异常,操作失败<br>71000: 重复分享</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>num</td><td>当前分享数</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>分享视频<code>BV1oA411776z</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-interface/share/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'bvid=BV1oA411776z'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">19</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,225)]))}const u=e(r,[["render",p]]),h=JSON.parse('{"path":"/docs/video/action.html","title":"稿件观众操作","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1741620310000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":4,"url":"https://github.com/SocialSisterYi"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":5,"url":"https://github.com/SessionHu"},{"name":"zdjniubi","username":"zdjniubi","email":"39577077+zdjniubi@users.noreply.github.com","commits":1,"url":"https://github.com/zdjniubi"},{"name":"LaMerChiang","username":"LaMerChiang","email":"catlair@qq.com","commits":1,"url":"https://github.com/LaMerChiang"},{"name":"djeozhang","username":"djeozhang","email":"djeozhang@tencent.com","commits":1,"url":"https://github.com/djeozhang"}],"changelog":[{"hash":"1d4c2d9e63de341aeb5cb7ee0622e9f7c8568c96","time":1741620310000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"fix(video/action.md): fav required add_media_ids"},{"hash":"1e24c6b1889160c4c35c01416aa4239501accf5f","time":1726759053000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"调整部分接口描述与错误修复 (#1088)","coAuthors":[{"name":"社会易姐QwQ","email":"45892418+SocialSisterYi@users.noreply.github.com"}]},{"hash":"2465990ccc5aea35ad6d0b17dc7c2f36bc5e45c0","time":1722059352000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"feat: 更新web端视频操作播放合集相关接口 (#1064)"},{"hash":"18c1efbc102ae6b44c8f5314c90e5e64f0d926cd","time":1721909032000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"feat: bili_ticket 算法 Java 实现 及 信息补充 及 错误修正 (#1061)"},{"hash":"e82b450f7302d6a9796ba56511e0f7e0e32cff7d","time":1703232457000,"email":"39577077+zdjniubi@users.noreply.github.com","author":"Gospel","message":"稿件观众操作接口增加鉴权说明 (#840)","coAuthors":[{"name":"LaMerChiang","email":"catlair@qq.com"},{"name":"djeozhang","email":"djeozhang@tencent.com"},{"name":"SocialSisterYi","email":"1440239038@qq.com"}]},{"hash":"b1a06806f09ed3ea130eefc94e33df2bc0335424","time":1691494779000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"将 http 改为 https (#776)"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/video/action.md"}');export{u as comp,h as data};
|
||||
@@ -0,0 +1,134 @@
|
||||
import{_ as p,c as d,a as t,b as a,d as n,e,w as o,r,o as c}from"./app-Dgsdh8A6.js";const i={};function D(u,s){const l=r("RouteLink");return c(),d("div",null,[s[10]||(s[10]=t('<h1 id="收藏夹操作" tabindex="-1"><a class="header-anchor" href="#收藏夹操作"><span>收藏夹操作</span></a></h1><h2 id="管理收藏夹" tabindex="-1"><a class="header-anchor" href="#管理收藏夹"><span>管理收藏夹</span></a></h2><h3 id="新建收藏夹" tabindex="-1"><a class="header-anchor" href="#新建收藏夹"><span>新建收藏夹</span></a></h3><blockquote><p>https://api.bilibili.com/x/v3/fav/folder/add</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>title</td><td>str</td><td>收藏夹标题</td><td>必要</td><td></td></tr><tr><td>intro</td><td>str</td><td>收藏夹简介</td><td>非必要</td><td>默认为空</td></tr><tr><td>privacy</td><td>num</td><td>是否公开</td><td>非必要</td><td>默认为公开<br>0:公开<br>1:私密</td></tr><tr><td>cover</td><td>str</td><td>封面图url</td><td>非必要</td><td>封面会被审核</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-102:账号被封停</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><p>略....</p>',13)),a("p",null,[s[1]||(s[1]=n("详见")),e(l,{to:"/docs/fav/info.html#%E8%8E%B7%E5%8F%96%E6%94%B6%E8%97%8F%E5%A4%B9%E5%85%83%E6%95%B0%E6%8D%AE"},{default:o(()=>s[0]||(s[0]=[n("获取收藏夹元数据")])),_:1,__:[0]}),s[2]||(s[2]=n("中的")),s[3]||(s[3]=a("code",null,"data",-1)),s[4]||(s[4]=n("对象"))]),s[11]||(s[11]=t(`<p><strong>示例:</strong></p><p>创建一个叫<code>test</code>,简介是<code>2333</code>,封面<code>https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png</code>,的公开收藏夹:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v3/fav/folder/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'title=test'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'intro=2333'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'privacy=0'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'cover=https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1182306172</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "fid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">11823061</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">470310172</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "attr"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"test"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "cover"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "upper"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "face"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "followed"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "vip_type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "vip_statue"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "cover_type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "cnt_info"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "collect"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "play"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "thumb_up"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "share"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "intro"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"2333"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ctime"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mtime"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "state"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "fav_state"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "like_state"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "media_count"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="修改收藏夹" tabindex="-1"><a class="header-anchor" href="#修改收藏夹"><span>修改收藏夹</span></a></h3><blockquote><p>https://api.bilibili.com/x/v3/fav/folder/edit</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>media_id</td><td>num</td><td>目标收藏夹mdid</td><td>必要</td><td></td></tr><tr><td>title</td><td>str</td><td>修改收藏夹标题</td><td>必要</td><td></td></tr><tr><td>intro</td><td>str</td><td>修改收藏夹简介</td><td>非必要</td><td></td></tr><tr><td>privacy</td><td>num</td><td>是否公开</td><td>非必要</td><td>默认为公开<br><br>0:公开<br>1:私密</td></tr><tr><td>cover</td><td>str</td><td>封面图url</td><td>非必要</td><td>封面会被审核</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-102:账号被封停</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><p>略....</p>`,15)),a("p",null,[s[6]||(s[6]=n("详见")),e(l,{to:"/docs/fav/info.html#%E8%8E%B7%E5%8F%96%E6%94%B6%E8%97%8F%E5%A4%B9%E5%85%83%E6%95%B0%E6%8D%AE"},{default:o(()=>s[5]||(s[5]=[n("获取收藏夹元数据")])),_:1,__:[5]}),s[7]||(s[7]=n("中的")),s[8]||(s[8]=a("code",null,"data",-1)),s[9]||(s[9]=n("对象"))]),s[12]||(s[12]=t(`<p><strong>示例:</strong></p><p>修改id为<code>1182306172</code>的名字为<code>test</code>,简介为<code>2333</code>,封面为<code>https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png</code>,公开收藏夹:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v3/fav/folder/edit'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'media_id=1182306172'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'title=test'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'intro=2333'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'privacy=0'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'cover=https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1182306172</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "fid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">11823061</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">470310172</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "attr"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">6</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"test"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "cover"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "upper"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "face"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "followed"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "vip_type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "vip_statue"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "cover_type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "cnt_info"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "collect"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "play"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "thumb_up"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "share"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "intro"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"2333"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ctime"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mtime"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "state"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "fav_state"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "like_state"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "media_count"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="删除收藏夹" tabindex="-1"><a class="header-anchor" href="#删除收藏夹"><span>删除收藏夹</span></a></h3><blockquote><p>https://api.bilibili.com/x/v3/fav/folder/del</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>media_ids</td><td>nums</td><td>目标收藏夹mdid列表</td><td>必要</td><td>每个成员间用<code>,</code>分隔</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>成功为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>num</td><td>信息本体</td><td>成功为0</td></tr></tbody></table><p><strong>示例:</strong></p><p>删除id为<code>1182306172</code>的收藏夹:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v3/fav/folder/del'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'media_ids=1182306172'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="管理收藏内容" tabindex="-1"><a class="header-anchor" href="#管理收藏内容"><span>管理收藏内容</span></a></h2><h3 id="批量复制内容" tabindex="-1"><a class="header-anchor" href="#批量复制内容"><span>批量复制内容</span></a></h3><blockquote><p>https://api.bilibili.com/x/v3/fav/resource/copy</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>src_media_id</td><td>num</td><td>源收藏夹id</td><td>必要</td><td></td></tr><tr><td>tar_media_id</td><td>num</td><td>目标收藏夹id</td><td>必要</td><td></td></tr><tr><td>mid</td><td>num</td><td>当前用户mid</td><td>必要</td><td></td></tr><tr><td>resources</td><td>strs</td><td>目标内容id列表</td><td>必要</td><td>格式:{内容id}:{内容类型}<br>每个成员间用<code>,</code>分隔<br>类型:<br>2:视频稿件<br>12:音频<br>21:视频合集<br>内容id:<br>视频稿件:视频稿件avid<br>音频:音频auid<br>视频合集:视频合集id</td></tr><tr><td>platform</td><td>str</td><td>平台标识</td><td>非必要</td><td>可为web</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>11010:您访问的内容不存在</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td>成功为0</td></tr></tbody></table><p><strong>示例:</strong></p><p>将id为<code>1288061499</code>的收藏夹中视频稿件<code>av21822819</code> <code>av21918689</code> <code>av22288065</code>复制到id为<code>1178751999</code>的收藏夹中</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v3/fav/resource/copy'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'src_media_id=1288061499'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'tar_media_id=1178751999'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'mid=233333'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'resources=21822819:2,21918689:2,22288065:2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'platform=web'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="批量移动内容" tabindex="-1"><a class="header-anchor" href="#批量移动内容"><span>批量移动内容</span></a></h3><blockquote><p>https://api.bilibili.com/x/v3/fav/resource/move</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>src_media_id</td><td>num</td><td>源收藏夹id</td><td>必要</td><td></td></tr><tr><td>tar_media_id</td><td>num</td><td>目标收藏夹id</td><td>必要</td><td></td></tr><tr><td>mid</td><td>num</td><td>当前用户mid</td><td>必要</td><td></td></tr><tr><td>resources</td><td>strs</td><td>目标内容id列表</td><td>必要</td><td>格式:{内容id}:{内容类型}<br>每个成员间用<code>,</code>分隔<br>类型:<br>2:视频稿件<br>12:音频<br>21:视频合集<br>内容id:<br>视频稿件:视频稿件avid<br>音频:音频auid<br>视频合集:视频合集id</td></tr><tr><td>platform</td><td>str</td><td>平台标识</td><td>非必要</td><td>可为web</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>11010:您访问的内容不存在</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td>成功为0</td></tr></tbody></table><p><strong>示例:</strong></p><p>将id为<code>1288061499</code>的收藏夹中视频稿件<code>av21822819</code> <code>av21918689</code> <code>av22288065</code>移动到id为<code>1178751999</code>的收藏夹中</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v3/fav/resource/move'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'src_media_id=1288061499'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'tar_media_id=1178751999'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'mid=233333'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'resources=21822819:2,21918689:2,22288065:2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'platform=web'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="批量删除内容" tabindex="-1"><a class="header-anchor" href="#批量删除内容"><span>批量删除内容</span></a></h3><blockquote><p>https://api.bilibili.com/x/v3/fav/resource/batch-del</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>resources</td><td>目标内容id列表</td><td>必要</td><td>格式:{内容id}:{内容类型}<br>每个成员间用<code>,</code>分隔<br>类型:<br>2:视频稿件<br>12:音频<br>21:视频合集<br>内容id:<br>视频稿件:视频稿件avid<br>音频:音频auid<br>视频合集:视频合集id</td><td></td></tr><tr><td>media_id</td><td>num</td><td>目标收藏夹id</td><td>必要</td><td></td></tr><tr><td>platform</td><td>str</td><td>平台标识</td><td>非必要</td><td>可为web</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>11010:您访问的内容不存在</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td>成功为0</td></tr></tbody></table><p><strong>示例:</strong></p><p>将id为<code>1178751999</code>的收藏夹中视频稿件<code>av21822819</code> <code>av21918689</code> <code>av22288065</code>取消收藏</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v3/fav/resource/batch-del'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'resources=21822819:2,21918689:2,22288065:2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'media_id=1178751999'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'platform=web'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="清空所有失效内容" tabindex="-1"><a class="header-anchor" href="#清空所有失效内容"><span>清空所有失效内容</span></a></h3><blockquote><p>https://api.bilibili.com/x/v3/fav/resource/clean</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>media_id</td><td>num</td><td>目标收藏夹id</td><td>必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td>成功为0</td></tr></tbody></table><p><strong>示例:</strong></p><p>清理id为<code>1161340172</code>的收藏夹</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v3/fav/resource/clean'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'media_id=1161340172'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,70))])}const v=p(i,[["render",D]]),b=JSON.parse('{"path":"/docs/fav/action.html","title":"收藏夹操作","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/fav/action.md"}');export{v as comp,b as data};
|
||||
@@ -0,0 +1,17 @@
|
||||
import{_ as t,c as a,a as e,o as n}from"./app-Dgsdh8A6.js";const l={};function d(o,s){return n(),a("div",null,s[0]||(s[0]=[e(`<h1 id="表情操作" tabindex="-1"><a class="header-anchor" href="#表情操作"><span>表情操作</span></a></h1><h2 id="添加表情包" tabindex="-1"><a class="header-anchor" href="#添加表情包"><span>添加表情包</span></a></h2><blockquote><p>https://api.bilibili.com/x/emote/package/add</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p>只能添加有会员权限或已购买的表情包</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>package_id</td><td>num</td><td>表情包id</td><td>必要</td><td></td></tr><tr><td>business</td><td>str</td><td>使用场景</td><td>必要</td><td>reply:评论区<br>dynamic:动态</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>-403:访问权限不足</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>添加id为<code>25</code>的表情包,使用场景为评论区</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/emote/package/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'package_id=25'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'business=reply'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="移除表情包" tabindex="-1"><a class="header-anchor" href="#移除表情包"><span>移除表情包</span></a></h2><blockquote><p>https://api.bilibili.com/x/emote/package/remove</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>package_id</td><td>num</td><td>表情包id</td><td>必要</td><td></td></tr><tr><td>business</td><td>str</td><td>使用场景</td><td>必要</td><td>reply:评论区<br>dynamic:动态</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>-403:访问权限不足</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>移除id为<code>25</code>的表情包,使用场景为评论区</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/emote/package/remove'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'package_id=25'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'business=reply'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,28)]))}const p=t(l,[["render",d]]),i=JSON.parse('{"path":"/docs/emoji/action.html","title":"表情操作","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/emoji/action.md"}');export{p as comp,i as data};
|
||||
@@ -0,0 +1,91 @@
|
||||
import{_ as o,c as p,a as d,b as t,d as n,e as a,w as e,r,o as i}from"./app-Dgsdh8A6.js";const c={};function D(u,s){const l=r("RouteLink");return i(),p("div",null,[s[48]||(s[48]=d('<h1 id="操作" tabindex="-1"><a class="header-anchor" href="#操作"><span>操作</span></a></h1><h2 id="提交答题" tabindex="-1"><a class="header-anchor" href="#提交答题"><span>提交答题</span></a></h2><h3 id="提交基础题" tabindex="-1"><a class="header-anchor" href="#提交基础题"><span>提交基础题</span></a></h3><blockquote><p>https://api.bilibili.com/x/answer/v4/base/check</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p>',7)),t("table",null,[s[15]||(s[15]=t("thead",null,[t("tr",null,[t("th",null,"参数名"),t("th",null,"类型"),t("th",null,"内容"),t("th",null,"必要性"),t("th",null,"备注")])],-1)),t("tbody",null,[t("tr",null,[s[3]||(s[3]=t("td",null,"question_id",-1)),s[4]||(s[4]=t("td",null,"num",-1)),s[5]||(s[5]=t("td",null,"题目id",-1)),s[6]||(s[6]=t("td",null,"必要",-1)),t("td",null,[s[1]||(s[1]=n("从")),a(l,{to:"/docs/newbie_exam/fetch.html#%E6%8B%89%E5%8F%96%E5%9F%BA%E7%A1%80%E9%A2%98"},{default:e(()=>s[0]||(s[0]=[n("拉取基础题api")])),_:1,__:[0]}),s[2]||(s[2]=n("获得"))])]),t("tr",null,[s[10]||(s[10]=t("td",null,"ans_hash",-1)),s[11]||(s[11]=t("td",null,"str",-1)),s[12]||(s[12]=t("td",null,"选项hash",-1)),s[13]||(s[13]=t("td",null,"必要",-1)),t("td",null,[s[8]||(s[8]=n("从")),a(l,{to:"/docs/newbie_exam/fetch.html#%E6%8B%89%E5%8F%96%E5%9F%BA%E7%A1%80%E9%A2%98"},{default:e(()=>s[7]||(s[7]=[n("拉取基础题api")])),_:1,__:[7]}),s[9]||(s[9]=n("获得"))])]),s[14]||(s[14]=t("tr",null,[t("td",null,"csrf"),t("td",null,"str"),t("td",null,"CSRF Token(位于cookie)"),t("td",null,"Cookie方式必要"),t("td")],-1))])]),s[49]||(s[49]=d(`<p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-400:请求错误<br>41014:答题过快或错误太多<br>41012:用户答题提交题目id不合法<br>41020:用户基础题已通过<br>41023:用户答题记录不存在</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>passed</td><td>bool</td><td>选项是否正确</td><td>true:选项正确<br>false:选项错误</td></tr></tbody></table><p><strong>示例:</strong></p><p>提交题目id为<code>104</code>的题,选项hash为<code>cb4c8cc9424fc771f7c1598e74de498f</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/answer/v4/base/check'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'question_id=104'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'ans_hash=cb4c8cc9424fc771f7c1598e74de498f'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "passed"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="提交附加题" tabindex="-1"><a class="header-anchor" href="#提交附加题"><span>提交附加题</span></a></h3><blockquote><p>https://api.bilibili.com/x/answer/v4/base/check</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p>`,14)),t("table",null,[s[31]||(s[31]=t("thead",null,[t("tr",null,[t("th",null,"参数名"),t("th",null,"类型"),t("th",null,"内容"),t("th",null,"必要性"),t("th",null,"备注")])],-1)),t("tbody",null,[t("tr",null,[s[19]||(s[19]=t("td",null,"question_id",-1)),s[20]||(s[20]=t("td",null,"num",-1)),s[21]||(s[21]=t("td",null,"题目id",-1)),s[22]||(s[22]=t("td",null,"必要",-1)),t("td",null,[s[17]||(s[17]=n("从")),a(l,{to:"/docs/newbie_exam/fetch.html#%E6%8B%89%E5%8F%96%E5%9F%BA%E7%A1%80%E9%A2%98"},{default:e(()=>s[16]||(s[16]=[n("拉取基础题api")])),_:1,__:[16]}),s[18]||(s[18]=n("获得"))])]),t("tr",null,[s[26]||(s[26]=t("td",null,"ans_hash",-1)),s[27]||(s[27]=t("td",null,"str",-1)),s[28]||(s[28]=t("td",null,"选项hash",-1)),s[29]||(s[29]=t("td",null,"必要",-1)),t("td",null,[s[24]||(s[24]=n("从")),a(l,{to:"/docs/newbie_exam/fetch.html#%E6%8B%89%E5%8F%96%E5%9F%BA%E7%A1%80%E9%A2%98"},{default:e(()=>s[23]||(s[23]=[n("拉取基础题api")])),_:1,__:[23]}),s[25]||(s[25]=n("获得"))])]),s[30]||(s[30]=t("tr",null,[t("td",null,"csrf"),t("td",null,"str"),t("td",null,"CSRF Token(位于cookie)"),t("td",null,"Cookie方式必要"),t("td")],-1))])]),s[50]||(s[50]=d(`<p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-400:请求错误<br>41014:答题过快或错误太多<br>41012:用户答题提交题目id不合法<br>41023:用户答题记录不存在</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>passed</td><td>bool</td><td>选项是否正确</td><td>true:选项正确<br>false:选项错误</td></tr></tbody></table><p><strong>示例:</strong></p><p>提交题目id为<code>104</code>的题,选项hash为<code>cb4c8cc9424fc771f7c1598e74de498f</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/answer/v4/base/check'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'question_id=104'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'ans_hash=cb4c8cc9424fc771f7c1598e74de498f'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "passed"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="提交自选题" tabindex="-1"><a class="header-anchor" href="#提交自选题"><span>提交自选题</span></a></h3><blockquote><p>https://api.bilibili.com/x/answer/v4/pro/check</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p>`,14)),t("table",null,[s[47]||(s[47]=t("thead",null,[t("tr",null,[t("th",null,"参数名"),t("th",null,"类型"),t("th",null,"内容"),t("th",null,"必要性"),t("th",null,"备注")])],-1)),t("tbody",null,[t("tr",null,[s[35]||(s[35]=t("td",null,"question_id",-1)),s[36]||(s[36]=t("td",null,"num",-1)),s[37]||(s[37]=t("td",null,"题目id",-1)),s[38]||(s[38]=t("td",null,"必要",-1)),t("td",null,[s[33]||(s[33]=n("从")),a(l,{to:"/docs/newbie_exam/fetch.html#%E6%8B%89%E5%8F%96%E5%9F%BA%E7%A1%80%E9%A2%98"},{default:e(()=>s[32]||(s[32]=[n("拉取基础题api")])),_:1,__:[32]}),s[34]||(s[34]=n("获得"))])]),t("tr",null,[s[42]||(s[42]=t("td",null,"ans_hash",-1)),s[43]||(s[43]=t("td",null,"str",-1)),s[44]||(s[44]=t("td",null,"选项hash",-1)),s[45]||(s[45]=t("td",null,"必要",-1)),t("td",null,[s[40]||(s[40]=n("从")),a(l,{to:"/docs/newbie_exam/fetch.html#%E6%8B%89%E5%8F%96%E5%9F%BA%E7%A1%80%E9%A2%98"},{default:e(()=>s[39]||(s[39]=[n("拉取基础题api")])),_:1,__:[39]}),s[41]||(s[41]=n("获得"))])]),s[46]||(s[46]=t("tr",null,[t("td",null,"csrf"),t("td",null,"str"),t("td",null,"CSRF Token(位于cookie)"),t("td",null,"Cookie方式必要"),t("td")],-1))])]),s[51]||(s[51]=d(`<p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-400:请求错误<br>41014:答题过快或错误太多<br>41012:用户答题提交题目id不合法<br>41023:用户答题记录不存在<br>41026:获取用户DB题目信息异常</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>passed</td><td>bool</td><td>true</td><td>恒为<code>true</code></td></tr></tbody></table><p><strong>示例:</strong></p><p>提交题目id为<code>2935</code>的题,选项hash为<code>ffd55cbe0624f466bee2ea3eb576a4d0</code></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/answer/v4/pro/check'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'question_id=2935'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'ans_hash=ffd55cbe0624f466bee2ea3eb576a4d0'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "passed"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="获取验证码" tabindex="-1"><a class="header-anchor" href="#获取验证码"><span>获取验证码</span></a></h2><blockquote><p>https://api.bilibili.com/x/answer/v4/captcha</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-400:请求错误<br>41010:用户答题非法访问<br>41014:答题过快或错误太多<br>41020:用户基础题已通过<br>41021:用户基础题未通过</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>type</td><td>str</td><td>验证码类型?</td><td>geetest:极验</td></tr><tr><td>gt</td><td>str</td><td>极验id</td><td></td></tr><tr><td>challenge</td><td>str</td><td>极验key</td><td></td></tr><tr><td>token</td><td>str</td><td>(?)</td><td></td></tr><tr><td>url</td><td>str</td><td>(?)</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/answer/v4/captcha'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"geetest"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "gt"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"abc55d1fb914cb110cfb4c232a4b4c35"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "challenge"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"90a6e03e626e13ee186ddae0107c3ae2"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "token"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="提交验证码" tabindex="-1"><a class="header-anchor" href="#提交验证码"><span>提交验证码</span></a></h2><blockquote><p>https://api.bilibili.com/x/answer/v4/captcha/check</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>注:</strong></p><p>旧版<code>edition=0</code>同时提交自选题分类以及验证码</p><p>新版<code>edition=2</code>仅仅提交验证码</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>types</td><td>nums</td><td>自选题分类(旧版)</td><td>非必要</td><td>新版不需要此字段</td></tr><tr><td>type</td><td>str</td><td>验证码类型</td><td>非必要</td><td></td></tr><tr><td>bilibili_token</td><td>str</td><td></td><td>非必要</td><td></td></tr><tr><td>bilibili_code</td><td>str</td><td></td><td>非必要</td><td></td></tr><tr><td>geetest_challenge</td><td>str</td><td>极验key</td><td>非必要</td><td></td></tr><tr><td>geetest_seccode</td><td>str</td><td>极验结果+|jordan</td><td>非必要</td><td></td></tr><tr><td>geetest_validate</td><td>str</td><td>极验结果</td><td>非必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-105:验证码错误<br>-400:请求错误<br>41010:用户答题非法访问<br>41014:答题过快或错误太多<br>41021:用户基础题未通过<br>41031:自选题未通过</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/answer/v4/captcha/check'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'types='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'type=geetest'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'bilibili_token='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'bilibili_code='</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'geetest_challenge=3f809a7a9c51edca751fd26c032c182d'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'geetest_seccode=513ec576a275a3eb250829202d4dce46|jordan'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'geetest_validate=513ec576a275a3eb250829202d4dce46'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="提交自选题分类" tabindex="-1"><a class="header-anchor" href="#提交自选题分类"><span>提交自选题分类</span></a></h2><blockquote><p>https://api.bilibili.com/x/answer/v4/pro/type/check</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>types</td><td>nums</td><td>自选题分类(新版)</td><td>必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-400:请求错误<br>41010:用户答题非法访问<br>41014:答题过快或错误太多<br>41021:用户基础题未通过<br>41031:自选题未通过<br>41052:用户题目类型不合法<br>41055:基础附加题未通过</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>选择<code>游戏</code> <code>影视</code> <code>科教/知识</code> <code>动画/动漫</code>分类</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/answer/v4/pro/type/check'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'types=1,2,3,4'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="提前交卷" tabindex="-1"><a class="header-anchor" href="#提前交卷"><span>提前交卷</span></a></h2><blockquote><p>https://api.bilibili.com/x/answer/v4/submit</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:APP或Cookie(SESSDATA)</p><p>当当前得分>=60时,可请求本接口提前完成答题</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-400:请求错误<br>41014:答题过快或错误太多<br>41023:用户答题记录不存在<br>41031:自选题未通过</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>hid</td><td>num</td><td>答题会话id</td><td></td></tr><tr><td>mid</td><td>num</td><td>答题用户mid</td><td></td></tr><tr><td>score</td><td>num</td><td>得分</td><td></td></tr><tr><td>status</td><td>num</td><td>0</td><td></td></tr><tr><td>number</td><td>num</td><td>0</td><td></td></tr><tr><td>result</td><td>str</td><td>succeed</td><td></td></tr><tr><td>stage</td><td>str</td><td>result</td><td></td></tr><tr><td>version</td><td>str</td><td>版本</td><td>目前为<code>v4</code></td></tr><tr><td>start_time</td><td>num</td><td>本次答题开始时间</td><td>时间戳</td></tr><tr><td>first_answer</td><td>num</td><td>0</td><td></td></tr><tr><td>progress</td><td>str</td><td></td><td></td></tr><tr><td>text</td><td>str</td><td></td><td></td></tr><tr><td>url</td><td>str</td><td></td><td></td></tr><tr><td>in_reg_audit</td><td>bool</td><td></td><td></td></tr><tr><td>edition</td><td>num</td><td>答题版本</td><td>0:旧版(40+10+50)<br>2:新版(40+30+30)</td></tr><tr><td>rewards</td><td>null</td><td></td><td></td></tr><tr><td>captcha</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/answer/v4/submit'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "hid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1623207905520705</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">293793435</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "score"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">63</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "result"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"succeed"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "stage"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"result"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "version"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"v4"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "start_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1636889218</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "first_answer"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "progress"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "text"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "in_reg_audit"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "edition"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "rewards"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "captcha"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,64))])}const b=o(c,[["render",D]]),m=JSON.parse('{"path":"/docs/newbie_exam/action.html","title":"操作","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/newbie_exam/action.md"}');export{b as comp,m as data};
|
||||
@@ -0,0 +1,74 @@
|
||||
import{_ as n,c as a,a as t,o as l}from"./app-Dgsdh8A6.js";const o={};function e(p,s){return l(),a("div",null,s[0]||(s[0]=[t(`<h1 id="相簿活动列表" tabindex="-1"><a class="header-anchor" href="#相簿活动列表"><span>相簿活动列表</span></a></h1><details><summary>功能已下线</summary><h2 id="获取相簿热门活动列表" tabindex="-1"><a class="header-anchor" href="#获取相簿热门活动列表"><span>获取相簿热门活动列表</span></a></h2><blockquote><p>https://api.vc.bilibili.com/photo_activity/v2/Activity/list</p></blockquote><p><em>请求方式:GET</em></p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>type</td><td>num</td><td>活动类型</td><td>非必要</td><td>0:全部<br>1:展示类<br>2:比赛类</td></tr><tr><td>biz</td><td>num</td><td>分区</td><td>非必要</td><td>0:全部<br>1:画友<br>2:摄影<br>默认为0</td></tr><tr><td>page_num</td><td>num</td><td>页码</td><td>非必要</td><td>默认为4</td></tr><tr><td>page_size</td><td>num</td><td>每页项数</td><td>非必要</td><td>默认为0</td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>1:参数错误</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>默认为success</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为success</td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>total_count</td><td>str</td><td>总计活动数</td><td></td></tr><tr><td>items</td><td>array</td><td>活动列表</td><td></td></tr></tbody></table><p><code>data</code>中的<code>items</code>数组:</p><table><thead><tr><th>项</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>0</td><td>obj</td><td>活动 1</td><td></td></tr><tr><td>n</td><td>obj</td><td>活动 (n+1)</td><td></td></tr><tr><td>……</td><td>obj</td><td>……</td><td>……</td></tr></tbody></table><p><code>data</code>中的<code>items</code>数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>cover</td><td>str</td><td>活动图片url</td><td></td></tr><tr><td>title</td><td>str</td><td>活动标题</td><td></td></tr><tr><td>link</td><td>str</td><td>活动页面url</td><td></td></tr><tr><td>type</td><td>num</td><td>活动类型</td><td>1:展示类<br>2:比赛类</td></tr><tr><td>biz</td><td>num</td><td>所属分区</td><td>1:画友<br>2:摄影</td></tr><tr><td>tag</td><td>str</td><td>活动关联的TAG</td><td></td></tr><tr><td>start_time</td><td>num</td><td>开始时间</td><td>时间戳</td></tr><tr><td>end_time</td><td>num</td><td>结束时间</td><td>时间戳</td></tr><tr><td>desc</td><td>str</td><td>备注</td><td></td></tr><tr><td>desc_type</td><td>num</td><td>活动状态</td><td>1:已结束<br>2:进行中</td></tr></tbody></table><p><strong>示例:</strong></p><p>获取<code>画友</code>分区,全部类型的5条活动</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.vc.bilibili.com/photo_activity/v2/Activity/list'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'type=0'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'biz=1'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'page_num=0'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'page_size=5'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"success"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"success"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "total_count"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">21</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "items"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "cover"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/vc/344d175cf88f217ce8bd0f004a2c5e770eff2e03.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"#月饼拟人#创作大赛!丰厚奖励等你来拿!"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "link"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/read/cv1102416"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "biz"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "tag"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "start_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1535817600</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "end_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1540915200</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"已结束"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "desc_type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "cover"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/vc/63d48fbc37f0142a9c72e06ebc950d4089f881d6.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"「ISLAND」同人绘画大赛"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "link"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/blackboard/activity-rkOlNomMQ.html"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "biz"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "tag"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"ISLAND同人绘画"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "start_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1530720000</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "end_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1534435200</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"已结束"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "desc_type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "cover"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/vc/08d20bc6c10e1e310946ebaaf56c2c90c921644d.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"我家大师兄脑子有坑同人绘画大赛"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "link"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/blackboard/activity-S1lV0Ot6M.html"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "biz"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "tag"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"兄坑同人绘画大赛"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "start_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1525449600</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "end_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1528473600</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"已结束"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "desc_type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "cover"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/vc/4eb48398ec0824e96fc878235536f2e0b4a8aef5.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"国宝复“活”计划"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "link"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/blackboard/activity-SJ4hL_UFz.html"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "biz"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "tag"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"国宝复“活”计划"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "start_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1521388800</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "end_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1525017600</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"已结束"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "desc_type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "cover"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/vc/9068f91f62ea5a36cbafff263d7e47af99cc9836.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"画师专访——管郁生"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "link"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/blackboard/interview-guanyusheng.html"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "biz"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "tag"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "start_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1517414400</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "end_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"进行中"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "desc_type"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ]</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details></details>`,2)]))}const r=n(o,[["render",e]]),i=JSON.parse('{"path":"/docs/album/activity_list.html","title":"相簿活动列表","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1745165052000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":1,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"ab2762aeaa0aad65603478ca704cd4cbc3b9c425","time":1745165052000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat: mark all album doc as down"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/album/activity_list.md"}');export{r as comp,i as data};
|
||||
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 8.8 KiB |
@@ -0,0 +1,53 @@
|
||||
import{_ as p,c as i,a as e,b as n,d as l,e as a,w as o,r,o as d}from"./app-Dgsdh8A6.js";const u={};function D(c,s){const t=r("RouteLink");return d(),i("div",null,[s[32]||(s[32]=e('<h1 id="横幅轮播图" tabindex="-1"><a class="header-anchor" href="#横幅轮播图"><span>横幅轮播图</span></a></h1><h2 id="获取各分区的轮播图-web端" tabindex="-1"><a class="header-anchor" href="#获取各分区的轮播图-web端"><span>获取各分区的轮播图_web端</span></a></h2><blockquote><p>https://api.bilibili.com/x/web-show/region/banner</p></blockquote><p><em>请求方式: GET</em></p><p>需要请求头参数 User-Agent</p><p>鉴权方式:Wbi 签名 (可选)</p><p><strong>URL参数:</strong></p>',7)),n("table",null,[s[18]||(s[18]=n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"内容"),n("th",null,"必要性"),n("th",null,"备注")])],-1)),n("tbody",null,[n("tr",null,[s[2]||(s[2]=n("td",null,"region_id",-1)),s[3]||(s[3]=n("td",null,"num",-1)),s[4]||(s[4]=n("td",null,"目标分区id",-1)),s[5]||(s[5]=n("td",null,"必要",-1)),n("td",null,[s[1]||(s[1]=l("参见")),a(t,{to:"/docs/video/video_zone_v2.html"},{default:o(()=>s[0]||(s[0]=[l("视频分区一览v2")])),_:1,__:[0]})])]),n("tr",null,[s[8]||(s[8]=n("td",null,"w_rid",-1)),s[9]||(s[9]=n("td",null,"str",-1)),s[10]||(s[10]=n("td",null,"Wbi 签名",-1)),s[11]||(s[11]=n("td",null,"非必要",-1)),n("td",null,[s[7]||(s[7]=l("详见 ")),a(t,{to:"/docs/misc/sign/wbi.html"},{default:o(()=>s[6]||(s[6]=[l("Wbi 签名")])),_:1,__:[6]})])]),n("tr",null,[s[14]||(s[14]=n("td",null,"wts",-1)),s[15]||(s[15]=n("td",null,"num",-1)),s[16]||(s[16]=n("td",null,"当前时间戳",-1)),s[17]||(s[17]=n("td",null,"非必要",-1)),n("td",null,[s[13]||(s[13]=l("详见 ")),a(t,{to:"/docs/misc/sign/wbi.html"},{default:o(()=>s[12]||(s[12]=[l("Wbi 签名")])),_:1,__:[12]})])])])]),s[33]||(s[33]=e("<p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>str</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>region_banner_list</td><td>array</td><td>存储轮播图的对象</td><td></td></tr></tbody></table><p><code>data</code> 对象里的 <code>region_banner_list</code> 数组:</p><table><thead><tr><th>项</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>0</td><td>obj</td><td>第一个轮播图对象</td><td></td></tr><tr><td>n</td><td>obj</td><td>第 (n+1) 轮播图对象</td><td></td></tr><tr><td>……</td><td>obj</td><td>……</td><td></td></tr></tbody></table><p><code>region_banner_list</code> 数组里的对象:</p>",8)),n("table",null,[s[28]||(s[28]=n("thead",null,[n("tr",null,[n("th",null,"字段"),n("th",null,"类型"),n("th",null,"内容"),n("th",null,"备注")])],-1)),n("tbody",null,[s[24]||(s[24]=n("tr",null,[n("td",null,"image"),n("td",null,"str"),n("td",null,"封面资源路径"),n("td")],-1)),s[25]||(s[25]=n("tr",null,[n("td",null,"title"),n("td",null,"str"),n("td",null,"封面标题"),n("td")],-1)),s[26]||(s[26]=n("tr",null,[n("td",null,"sub_title"),n("td",null,"str"),n("td",null,"封面子标题"),n("td",null,"空")],-1)),s[27]||(s[27]=n("tr",null,[n("td",null,"url"),n("td",null,"str"),n("td",null,"点击封面后指向的链接"),n("td",null,"可能为视频地址,也有可能是活动地址")],-1)),n("tr",null,[s[21]||(s[21]=n("td",null,"rid",-1)),s[22]||(s[22]=n("td",null,"num",-1)),n("td",null,[s[20]||(s[20]=l("分区参见")),a(t,{to:"/docs/video/video_zone_v2.html"},{default:o(()=>s[19]||(s[19]=[l("视频分区一览v2")])),_:1,__:[19]})]),s[23]||(s[23]=n("td",null,null,-1))])])]),s[34]||(s[34]=e(`<p><strong>示例:</strong></p><p>获取 <code>音乐区</code> 时刻为 <code>Wed, 06 Aug 2025 01:41:35 GMT</code> 的 B 站轮播图 <a href="https://www.bilibili.com/c/music/" target="_blank" rel="noopener noreferrer">音乐区地址</a></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> "https://api.bilibili.com/x/web-show/region/banner"</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> "region_id=1003"</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -H</span><span style="color:#CE9178;"> "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko Chrome/58.0.3029.110 Safari/537.36"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "region_banner_list"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/app/61e4bf3bba74f7d975342ae9d6ec7b0a2ea7c83f.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"舞力全开派对首测共创活动上线啦!"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "sub_title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/blackboard/era/wzjckpevcdCgf4Rv.html"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "rid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1003</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/app/a7d63dc78d10f769bd80c6c27ba6cc337b00d9d9.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"玛莎拉达带着他的一系列爆款术曲来了!"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "sub_title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/video/BV1Tbtjz1Ehv"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "rid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1003</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/app/01beb60c493f98eea6844cc2efcbde7315ce6224.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"陶喆Alin合作曲MV首播!"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "sub_title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/video/BV1w1tnznEMw/?spm_id_from=333.337.search-card.all.click"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "rid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1003</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/app/64060527172b03292b860e43532ff56faabdbe2d.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"四种语言版《AMANI》:愿世界和平"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "sub_title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/video/BV1WTgVzHE2S/"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "rid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1003</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/app/cbc4469b10c041702c49e847552301afeea323cd.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"孙亦航来B站啦!"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "sub_title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/video/BV1RHtFzLEUA"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "rid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1003</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i0.hdslb.com/bfs/app/134cede692acbbe3080dc2a2ecc920db1f4f7498.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"潘玮柏狂爱《Yes I Do》"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "sub_title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/video/BV1RAtcz7EJX/?spm_id_from=333.337.search-card.all.click"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "rid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1003</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ]</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,4)),n("ul",null,[n("li",null,[s[30]||(s[30]=l("Tip: 可以使用 ")),a(t,{to:"/docs/misc/picture.html"},{default:o(()=>s[29]||(s[29]=[l("图片格式化")])),_:1,__:[29]}),s[31]||(s[31]=l("中 获取主色调的方式获取轮播图封面的主色调"))])])])}const y=p(u,[["render",D]]),v=JSON.parse('{"path":"/docs/web_widget/banner.html","title":"横幅轮播图","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1754482183000,"contributors":[{"name":"TeAnli","username":"TeAnli","email":"159260777+TeAnli@users.noreply.github.com","commits":1,"url":"https://github.com/TeAnli"}],"changelog":[{"hash":"268b4cfe10fa51a9857a6d2f6cc772a6927306e3","time":1754482183000,"email":"159260777+TeAnli@users.noreply.github.com","author":"TeAnli","message":"feat: 添加各分区轮播图 (#1372)"}]},"filePathRelative":"docs/web_widget/banner.md"}');export{y as comp,v as data};
|
||||
@@ -0,0 +1,38 @@
|
||||
import{_ as t,c as n,a,o as l}from"./app-Dgsdh8A6.js";const e={};function o(p,s){return l(),n("div",null,s[0]||(s[0]=[a(`<h1 id="首页公告栏" tabindex="-1"><a class="header-anchor" href="#首页公告栏"><span>首页公告栏</span></a></h1><h2 id="动态首页公告栏-新版" tabindex="-1"><a class="header-anchor" href="#动态首页公告栏-新版"><span>动态首页公告栏 (新版)</span></a></h2><blockquote><p>https://api.bilibili.com/x/dynamic/feed/dyn/banner</p></blockquote><p><em>请求方法: GET</em></p><p><strong>URL 参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>platform</td><td>number</td><td>平台?</td><td>不必要</td><td>默认为 <code>1</code>, 留空无</td></tr><tr><td>position</td><td>string</td><td>位置?</td><td>不必要</td><td>默认为 <code>web动态</code>, 留空无</td></tr><tr><td>web_location</td><td>string</td><td><code>333.1365</code></td><td>不必要</td><td></td></tr></tbody></table><p><strong>JSON 回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>number</td><td>返回值</td><td>0: 成功</td></tr><tr><td>data</td><td>object</td><td>数据本体</td><td></td></tr><tr><td>message</td><td>string</td><td>错误信息</td><td>成功时为 <code>0</code></td></tr><tr><td>ttl</td><td>number</td><td><code>1</code></td><td></td></tr></tbody></table><p><code>data</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>banners</td><td>object[]</td><td>横幅们</td><td>套了个娃</td></tr></tbody></table><p><code>data.banners[]</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>banner_id</td><td>number</td><td>横幅 id</td><td>旧版接口无</td></tr><tr><td>end_time</td><td>number</td><td>结束时间</td><td>UNIX 秒级时间戳</td></tr><tr><td>img_url</td><td>string</td><td>图片 URL</td><td></td></tr><tr><td>link</td><td>string</td><td>跳转链接</td><td></td></tr><tr><td>platform</td><td>number</td><td>平台</td><td>与请求参数对应</td></tr><tr><td>position</td><td>string</td><td>位置</td><td>与请求参数对应</td></tr><tr><td>start_time</td><td>number</td><td>开始时间</td><td>UNIX 秒级时间戳</td></tr><tr><td>title</td><td>string</td><td>标题</td><td></td></tr><tr><td>weight</td><td>number</td><td>权重</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/dynamic/feed/dyn/banner?platform=1&position=web动态&web_location=333.1365'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "banners"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "banner_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">20</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "end_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2056204800</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "img_url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/vc/9c699f2acbcad00197e92c401b835d2c6aba8a55.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "link"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/blackboard/activity-5zJxM3spoS.html"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "platform"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "position"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"web动态"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "start_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1582862523</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"点击进入"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "weight"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ]</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="动态首页公告栏-旧版" tabindex="-1"><a class="header-anchor" href="#动态首页公告栏-旧版"><span>动态首页公告栏 (旧版)</span></a></h2><blockquote><p>https://api.vc.bilibili.com/banner_svr/v1/banner_svr/show</p></blockquote><p><em>请求方法: GET</em></p><p><strong>URL 参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>platform</td><td>number</td><td>平台?</td><td>不必要</td><td>默认为 <code>1</code></td></tr><tr><td>position</td><td>string</td><td>位置?</td><td>不必要</td><td>默认为 <code>web动态</code></td></tr></tbody></table><p><strong>JSON 回复:</strong></p><p>与 <a href="#%E5%8A%A8%E6%80%81%E9%A6%96%E9%A1%B5%E5%85%AC%E5%91%8A%E6%A0%8F-%E6%96%B0%E7%89%88">动态首页公告栏 (新版)</a> 相同, 除了少了个 <code>data.banners[].banner_id</code></p><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.vc.bilibili.com/banner_svr/v1/banner_svr/show'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "banners"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "img_url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/vc/9c699f2acbcad00197e92c401b835d2c6aba8a55.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"点击进入"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "link"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/blackboard/activity-5zJxM3spoS.html"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "platform"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "weight"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "position"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"web动态"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "start_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1582862523</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "end_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2056204800</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ]</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,26)]))}const r=t(e,[["render",o]]),i=JSON.parse('{"path":"/docs/dynamic/banner.html","title":"首页公告栏","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1746060344000,"contributors":[{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":2,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"8c6bb6be92e88f285b73f0d0b3f4f5831196c062","time":1746060344000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat: 动态首页公告栏 (旧版)"},{"hash":"f9d238b0be29ff95f7584e58967afa007f8d6d6f","time":1746059860000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat: 动态首页公告栏 (新版)"}]},"filePathRelative":"docs/dynamic/banner.md"}');export{r as comp,i as data};
|
||||
@@ -0,0 +1,27 @@
|
||||
import{_ as n,c as a,a as t,o as l}from"./app-Dgsdh8A6.js";const e={};function o(p,s){return l(),a("div",null,s[0]||(s[0]=[t(`<h1 id="批量查询" tabindex="-1"><a class="header-anchor" href="#批量查询"><span>批量查询</span></a></h1><h2 id="用户名查-mid" tabindex="-1"><a class="header-anchor" href="#用户名查-mid"><span>用户名查 mid</span></a></h2><h3 id="动态" tabindex="-1"><a class="header-anchor" href="#动态"><span>动态</span></a></h3><blockquote><p>https://api.bilibili.com/x/polymer/web-dynamic/v1/name-to-uid</p></blockquote><p><em>请求方法: GET</em></p><p>认证方式: Cookie (SESSDATA)</p><p><strong>URL 参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>names</td><td>string</td><td>用户名</td><td>必要</td><td>多个用户名以 <code>,</code> 分隔</td></tr></tbody></table><p><strong>JSON 回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>number</td><td>返回值</td><td>0: 成功<br>-101: 账号未登录<br>-400: 请求错误</td></tr><tr><td>data</td><td>object</td><td>数据本体</td><td></td></tr><tr><td>message</td><td>string</td><td>错误信息</td><td>成功时为 <code>0</code></td></tr><tr><td>ttl</td><td>number</td><td><code>1</code></td><td></td></tr></tbody></table><p><code>data</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>uid_list</td><td>object[]</td><td>UID 列表</td><td>套了个娃</td></tr></tbody></table><p><code>data.uid_list[]</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>name</td><td>string</td><td>用户名</td><td></td></tr><tr><td>uid</td><td>string</td><td>mid (UID)</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/polymer/web-dynamic/v1/name-to-uid'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">'names=社会易姐qwq,session小胡,陈睿,洛天依'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "uid_list"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"社会易姐QwQ"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "uid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"293793435"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"陈睿"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "uid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"208259"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"Session小胡"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "uid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"645769214"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"洛天依"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "uid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"36081646"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ]</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,18)]))}const i=n(e,[["render",o]]),r=JSON.parse('{"path":"/docs/user/batch.html","title":"批量查询","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1752997711000,"contributors":[{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":1,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"69afaf047d317824f00b99aa770e49daada79851","time":1752997711000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat: add username to mid"}]},"filePathRelative":"docs/user/batch.md"}');export{i as comp,r as data};
|
||||
|
Before Width: | Height: | Size: 6.1 KiB After Width: | Height: | Size: 6.1 KiB |
@@ -0,0 +1 @@
|
||||
const t="/bilibili-API-collect/assets/battery-100-CiBN5pdd.png";export{t as _};
|
||||
@@ -0,0 +1,202 @@
|
||||
import{_ as t,c,a as o,b as s,d as a,e,w as p,r,o as i}from"./app-Dgsdh8A6.js";const D={};function y(d,n){const l=r("RouteLink");return i(),c("div",null,[n[21]||(n[21]=o(`<h1 id="biliticket" tabindex="-1"><a class="header-anchor" href="#biliticket"><span>BiliTicket</span></a></h1><h2 id="简述" tabindex="-1"><a class="header-anchor" href="#简述"><span>简述</span></a></h2><p><code>bili_ticket</code> 位于请求头 Cookie 中, 非必需, 但存在可降低风控概率</p><p>由 <a href="https://github.com/aynuarance" target="_blank" rel="noopener noreferrer">@aynuarance</a> 于 <a href="https://github.com/SocialSisterYi/bilibili-API-collect/issues/903" target="_blank" rel="noopener noreferrer">#903</a> 提供的思路,根据时间戳使用 <code>hmac_sha256</code> 算法计算 <code>hexsign</code>。</p><p>是 <a href="https://jwt.io/" target="_blank" rel="noopener noreferrer">JWT 令牌</a>,有效时长为 259260 秒,即 3 天。 例如 <code>eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDI3NDI3NDYsImlhdCI6MTcwMjQ4MzQ4NiwicGx0IjotMX0.xQgtTAc41NA1gzvd9yKUPgucUy_DKcQj6OG1vj8V7ZA</code></p><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "alg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"HS256"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "kid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"s03"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "typ"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"JWT"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="算法" tabindex="-1"><a class="header-anchor" href="#算法"><span>算法</span></a></h2><ol><li>获取 UNIX 秒级时间戳存入变量如 <code>timestamp</code></li><li>计算变量 <code>hexsign</code> 值,使用 <code>hmac_sha256</code> 算法,密钥为 <code>XgwSnGZ1p</code>,消息为字符串 <code>"ts"</code> 与变量 <code>timestamp</code> 值拼接</li><li>构造请求参数,<code>key_id</code> 为 <code>ec02</code>,<code>hexsign</code> 为变量 <code>hexsign</code> 值,<code>context[ts]</code> 为变量 <code>timestamp</code> 值,<code>csrf</code> 为 cookie 中的 <code>bili_jct</code> 值也可为空</li><li>发送 <code>POST</code> 请求,获取 <code>data</code> 字段中的 <code>ticket</code> 字段的值即为所求</li></ol><h2 id="接口" tabindex="-1"><a class="header-anchor" href="#接口"><span>接口</span></a></h2><blockquote><p>https://api.bilibili.com/bapis/bilibili.api.ticket.v1.Ticket/GenWebTicket</p></blockquote><p><em>请求方式: POST</em></p><p>鉴权方式: 请求头 <code>Referer</code> 为空或 <code>.bilibili.com</code> 子域下任意页</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>key_id</td><td>str</td><td>ec02</td><td>必要</td><td></td></tr><tr><td>hexsign</td><td>str</td><td>由 <code>hmac_sha256</code> 算法计算的 <code>hexsign</code> 值</td><td>必要</td><td></td></tr><tr><td>context[ts]</td><td>num</td><td>UNIX 秒级时间戳</td><td>必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>cookie 中的 <code>bili_jct</code> 值</td><td>非必要</td><td></td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>400: 参数错误</td></tr><tr><td>message</td><td>str</td><td>返回消息</td><td>OK: 成功</td></tr><tr><td>data</td><td>obj</td><td>数据本体</td><td></td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><code>data</code> 对象:</p>`,18)),s("table",null,[n[9]||(n[9]=s("thead",null,[s("tr",null,[s("th",null,"字段"),s("th",null,"类型"),s("th",null,"内容"),s("th",null,"备注")])],-1)),s("tbody",null,[n[5]||(n[5]=s("tr",null,[s("td",null,"ticket"),s("td",null,"str"),s("td",null,"bili_ticket"),s("td")],-1)),n[6]||(n[6]=s("tr",null,[s("td",null,"created_at"),s("td",null,"num"),s("td",null,"创建时间"),s("td",null,"UNIX 秒级时间戳")],-1)),n[7]||(n[7]=s("tr",null,[s("td",null,"ttl"),s("td",null,"num"),s("td",null,"有效时长"),s("td",null,"259200 秒 (3 天)")],-1)),n[8]||(n[8]=s("tr",null,[s("td",null,"context"),s("td",null,"obj"),s("td",null,"空"),s("td")],-1)),s("tr",null,[n[2]||(n[2]=s("td",null,"nav",-1)),n[3]||(n[3]=s("td",null,"obj",-1)),n[4]||(n[4]=s("td",null,"wbi_img 相关",-1)),s("td",null,[n[1]||(n[1]=a("参见 ")),e(l,{to:"/docs/misc/sign/wbi.html"},{default:p(()=>n[0]||(n[0]=[a("WBI 签名")])),_:1,__:[0]})])])])]),n[22]||(n[22]=s("p",null,[s("code",null,"nav"),a(" 对象:")],-1)),s("table",null,[n[20]||(n[20]=s("thead",null,[s("tr",null,[s("th",null,"字段"),s("th",null,"类型"),s("th",null,"内容"),s("th",null,"备注")])],-1)),s("tbody",null,[s("tr",null,[n[12]||(n[12]=s("td",null,"img",-1)),n[13]||(n[13]=s("td",null,"str",-1)),n[14]||(n[14]=s("td",null,"img_key 值",-1)),s("td",null,[n[11]||(n[11]=a("参见 ")),e(l,{to:"/docs/misc/sign/wbi.html"},{default:p(()=>n[10]||(n[10]=[a("WBI 签名")])),_:1,__:[10]})])]),s("tr",null,[n[17]||(n[17]=s("td",null,"sub",-1)),n[18]||(n[18]=s("td",null,"str",-1)),n[19]||(n[19]=s("td",null,"sub_key 值",-1)),s("td",null,[n[16]||(n[16]=a("参见 ")),e(l,{to:"/docs/misc/sign/wbi.html"},{default:p(()=>n[15]||(n[15]=[a("WBI 签名")])),_:1,__:[15]})])])])]),n[23]||(n[23]=o(`<p><strong>示例:</strong></p><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"OK"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ticket"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MjM2OTMwODAsImlhdCI6MTcyMzQzMzgyMCwicGx0IjotMX0.efOwv7i4m0ykABrXEDHGAechU2AByMcP_-3EYpQrNKs"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "created_at"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1723433820</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">259200</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "context"</span><span style="color:#D4D4D4;">: {},</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "nav"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "img"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/wbi/7cd084941338484aae1ad9425b84077c.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "sub"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/wbi/4932caff0ff746eab6f01bf08b70ac45.png"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="demo" tabindex="-1"><a class="header-anchor" href="#demo"><span>Demo</span></a></h2><p>此处提供 <a href="#python">Python</a>, <a href="#java">Java</a>, <a href="#javascript-nodejs">JavaScript (Node.js)</a> 的示例代码</p><h3 id="python" tabindex="-1"><a class="header-anchor" href="#python"><span>Python</span></a></h3><p>需要 <code>requests</code> 依赖</p><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-python"><span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> hmac</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> hashlib</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> requests</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> time</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">def</span><span style="color:#DCDCAA;"> hmac_sha256</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">key</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">message</span><span style="color:#D4D4D4;">):</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> """</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> 使用HMAC-SHA256算法对给定的消息进行加密</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> :param key: 密钥</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> :param message: 要加密的消息</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> :return: 加密后的哈希值</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> """</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> # 将密钥和消息转换为字节串</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> key = key.encode(</span><span style="color:#CE9178;">'utf-8'</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> message = message.encode(</span><span style="color:#CE9178;">'utf-8'</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;"> # 创建HMAC对象,使用SHA256哈希算法</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> hmac_obj = hmac.new(key, message, hashlib.sha256)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;"> # 计算哈希值</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> hash_value = hmac_obj.digest()</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;"> # 将哈希值转换为十六进制字符串</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> hash_hex = hash_value.hex()</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> hash_hex</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#C586C0;">if</span><span style="color:#9CDCFE;"> __name__</span><span style="color:#D4D4D4;"> == </span><span style="color:#CE9178;">'__main__'</span><span style="color:#D4D4D4;">:</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> o = hmac_sha256(</span><span style="color:#CE9178;">"XgwSnGZ1p"</span><span style="color:#D4D4D4;">,</span><span style="color:#569CD6;">f</span><span style="color:#CE9178;">"ts</span><span style="color:#569CD6;">{</span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">(time.time())</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> url = </span><span style="color:#CE9178;">"https://api.bilibili.com/bapis/bilibili.api.ticket.v1.Ticket/GenWebTicket"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> params = {</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "key_id"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"ec02"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "hexsign"</span><span style="color:#D4D4D4;">:o,</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "context[ts]"</span><span style="color:#D4D4D4;">:</span><span style="color:#569CD6;">f</span><span style="color:#CE9178;">"</span><span style="color:#569CD6;">{</span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">(time.time())</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "csrf"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">''</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> headers = {</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> 'user-agent'</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> resp = requests.post(url, </span><span style="color:#9CDCFE;">params</span><span style="color:#D4D4D4;">=params,</span><span style="color:#9CDCFE;">headers</span><span style="color:#D4D4D4;">=headers).json()</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;"> print</span><span style="color:#D4D4D4;">(resp)</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="java" tabindex="-1"><a class="header-anchor" href="#java"><span>Java</span></a></h3><p>无需第三方依赖</p><div class="language-java line-numbers-mode" data-highlighter="shiki" data-ext="java" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-java"><span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.io.ByteArrayOutputStream;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.io.InputStream;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.net.HttpURLConnection;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.net.URI;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.nio.charset.StandardCharsets;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> javax.crypto.Mac;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> javax.crypto.spec.SecretKeySpec;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> BiliTicketDemo</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;"> /**</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * Convert a byte array to a hex string.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@param</span><span style="color:#9CDCFE;"> bytes</span><span style="color:#6A9955;"> The byte array to convert.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@return</span><span style="color:#6A9955;"> The hex string representation of the given byte array.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> String</span><span style="color:#DCDCAA;"> bytesToHex</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">byte</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">bytes</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> StringBuilder</span><span style="color:#9CDCFE;"> sb</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> StringBuilder</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">byte</span><span style="color:#9CDCFE;"> b</span><span style="color:#C586C0;"> :</span><span style="color:#D4D4D4;"> bytes) {</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> hex</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">Integer</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toHexString</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">0xff</span><span style="color:#D4D4D4;"> & b);</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">hex</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">length</span><span style="color:#D4D4D4;">() == </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> sb</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'0'</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> sb</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(hex);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> sb</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;"> /**</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * Generate a HMAC-SHA256 hash of the given message string using the given key</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * string.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@param</span><span style="color:#9CDCFE;"> key</span><span style="color:#6A9955;"> The key string to use for the HMAC-SHA256 hash.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@param</span><span style="color:#9CDCFE;"> message</span><span style="color:#6A9955;"> The message string to hash.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@throws</span><span style="color:#4EC9B0;"> Exception</span><span style="color:#6A9955;"> If an error occurs during the HMAC-SHA256 hash generation.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@return</span><span style="color:#6A9955;"> The HMAC-SHA256 hash of the given message string using the given key</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * string.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> String</span><span style="color:#DCDCAA;"> hmacSha256</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> key</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> message</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">throws</span><span style="color:#4EC9B0;"> Exception</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> Mac</span><span style="color:#9CDCFE;"> mac</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">Mac</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getInstance</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"HmacSHA256"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> SecretKeySpec</span><span style="color:#9CDCFE;"> secretKeySpec</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> SecretKeySpec</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">key</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getBytes</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">StandardCharsets</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UTF_8</span><span style="color:#D4D4D4;">), </span><span style="color:#CE9178;">"HmacSHA256"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> mac</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">init</span><span style="color:#D4D4D4;">(secretKeySpec);</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> byte</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">hash</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">mac</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">doFinal</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">message</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getBytes</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">StandardCharsets</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UTF_8</span><span style="color:#D4D4D4;">));</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#DCDCAA;"> bytesToHex</span><span style="color:#D4D4D4;">(hash);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;"> /**</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * Get a Bilibili web ticket for the given CSRF token.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@param</span><span style="color:#9CDCFE;"> csrf</span><span style="color:#6A9955;"> The CSRF token to use for the web ticket, can be {@code null} or</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * empty.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@return</span><span style="color:#6A9955;"> The Bilibili web ticket raw response for the given CSRF token.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@throws</span><span style="color:#4EC9B0;"> Exception</span><span style="color:#6A9955;"> If an error occurs during the web ticket generation.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@see</span><span style="color:#6A9955;"> https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/docs/misc/sign/bili_ticket.md</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> String</span><span style="color:#DCDCAA;"> getBiliTicket</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> csrf</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">throws</span><span style="color:#4EC9B0;"> Exception</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> // params</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> long</span><span style="color:#9CDCFE;"> ts</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">System</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">currentTimeMillis</span><span style="color:#D4D4D4;">() / </span><span style="color:#B5CEA8;">1000</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> hexSign</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">hmacSha256</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"XgwSnGZ1p"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"ts"</span><span style="color:#D4D4D4;"> + ts);</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> StringBuilder</span><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> StringBuilder</span><span style="color:#D4D4D4;">(</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "https://api.bilibili.com/bapis/bilibili.api.ticket.v1.Ticket/GenWebTicket"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'?'</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"key_id=ec02"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'&'</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"hexsign="</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(hexSign).</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'&'</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"context[ts]="</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(ts).</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'&'</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"csrf="</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">append</span><span style="color:#D4D4D4;">(csrf == </span><span style="color:#569CD6;">null</span><span style="color:#C586C0;"> ?</span><span style="color:#CE9178;"> ""</span><span style="color:#C586C0;"> :</span><span style="color:#D4D4D4;"> csrf);</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> // request</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> HttpURLConnection</span><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;"> = (HttpURLConnection) </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> URI</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">()).</span><span style="color:#DCDCAA;">toURL</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">openConnection</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">setRequestMethod</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"POST"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">addRequestProperty</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"User-Agent"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> InputStream</span><span style="color:#9CDCFE;"> in</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getInputStream</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> ByteArrayOutputStream</span><span style="color:#9CDCFE;"> out</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> ByteArrayOutputStream</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> b</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> while</span><span style="color:#D4D4D4;"> ((b = </span><span style="color:#9CDCFE;">in</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">read</span><span style="color:#D4D4D4;">()) != -</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">write</span><span style="color:#D4D4D4;">(b);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#C586C0;"> new</span><span style="color:#DCDCAA;"> String</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toByteArray</span><span style="color:#D4D4D4;">(), </span><span style="color:#9CDCFE;">StandardCharsets</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UTF_8</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;"> /**</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * Main method to test the BiliTicketDemo class.</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@param</span><span style="color:#9CDCFE;"> args</span><span style="color:#6A9955;"> The command line arguments (not used).</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> void</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">args</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> try</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">getBiliTicket</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">)); </span><span style="color:#6A9955;">// use empty CSRF here</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">catch</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">Exception</span><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">printStackTrace</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="javascript-node-js" tabindex="-1"><a class="header-anchor" href="#javascript-node-js"><span>JavaScript (Node.js)</span></a></h3><div class="language-javascript line-numbers-mode" data-highlighter="shiki" data-ext="javascript" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-javascript"><span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> crypto</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">require</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'crypto'</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;">/**</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * Generate HMAC-SHA256 signature</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@param</span><span style="color:#4EC9B0;"> {string}</span><span style="color:#9CDCFE;"> key</span><span style="color:#6A9955;"> The key string to use for the HMAC-SHA256 hash</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@param</span><span style="color:#4EC9B0;"> {string}</span><span style="color:#9CDCFE;"> message</span><span style="color:#6A9955;"> The message string to hash</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@returns</span><span style="color:#4EC9B0;"> {string}</span><span style="color:#6A9955;"> The HMAC-SHA256 signature as a hex string</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">function</span><span style="color:#DCDCAA;"> hmacSha256</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">key</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">message</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> hmac</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">crypto</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">createHmac</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'sha256'</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">key</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> hmac</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">update</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">message</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> hmac</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">digest</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'hex'</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;">/**</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * Get Bilibili web ticket</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@param</span><span style="color:#4EC9B0;"> {string}</span><span style="color:#9CDCFE;"> csrf</span><span style="color:#6A9955;"> CSRF token, can be empty or null</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@returns</span><span style="color:#4EC9B0;"> {Promise<any>}</span><span style="color:#6A9955;"> Promise of the ticket response in JSON format</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">async</span><span style="color:#569CD6;"> function</span><span style="color:#DCDCAA;"> getBiliTicket</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">csrf</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> ts</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">Math</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">floor</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Date</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">now</span><span style="color:#D4D4D4;">() / </span><span style="color:#B5CEA8;">1000</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> hexSign</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">hmacSha256</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'XgwSnGZ1p'</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">\`ts</span><span style="color:#569CD6;">\${</span><span style="color:#9CDCFE;">ts</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">\`</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> url</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">'https://api.bilibili.com/bapis/bilibili.api.ticket.v1.Ticket/GenWebTicket'</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> params</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> URLSearchParams</span><span style="color:#D4D4D4;">({</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> key_id:</span><span style="color:#CE9178;"> 'ec02'</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> hexsign:</span><span style="color:#9CDCFE;"> hexSign</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> 'context[ts]'</span><span style="color:#9CDCFE;">:</span><span style="color:#9CDCFE;"> ts</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> csrf:</span><span style="color:#9CDCFE;"> csrf</span><span style="color:#D4D4D4;"> || </span><span style="color:#CE9178;">''</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> });</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> response</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">await</span><span style="color:#DCDCAA;"> fetch</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">\`</span><span style="color:#569CD6;">\${</span><span style="color:#9CDCFE;">url</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">?</span><span style="color:#569CD6;">\${</span><span style="color:#9CDCFE;">params</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">()</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">\`</span><span style="color:#D4D4D4;">, {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> method:</span><span style="color:#CE9178;"> 'POST'</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> headers:</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> 'User-Agent'</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0'</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> });</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (!</span><span style="color:#9CDCFE;">response</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ok</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> throw</span><span style="color:#569CD6;"> new</span><span style="color:#DCDCAA;"> Error</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">\`HTTP error! status: </span><span style="color:#569CD6;">\${</span><span style="color:#9CDCFE;">response</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">status</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">\`</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> response</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">json</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">async</span><span style="color:#D4D4D4;"> () </span><span style="color:#569CD6;">=></span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> try</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> ticketResponse</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">await</span><span style="color:#DCDCAA;"> getBiliTicket</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">''</span><span style="color:#D4D4D4;">); </span><span style="color:#6A9955;">// use empty CSRF here</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">log</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ticketResponse</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">catch</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">error</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'Failed to get BiliTicket:'</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">e</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">})();</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,12))])}const u=t(D,[["render",y]]),v=JSON.parse('{"path":"/docs/misc/sign/bili_ticket.html","title":"BiliTicket","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1738952932000,"contributors":[{"name":"z0z0r4","username":"z0z0r4","email":"z0z0r4@outlook.com","commits":1,"url":"https://github.com/z0z0r4"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":3,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"7282aa2e358977efb84063a3ef67ccb6ed3d705f","time":1738952932000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"fix(bili_ticket.md): referer desc & nodejs code"},{"hash":"60a0c5d1a2f44fe61335da04571305fa7727a968","time":1724238159000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"feat: 各种接口补充与错误修正 (#1066)"},{"hash":"18c1efbc102ae6b44c8f5314c90e5e64f0d926cd","time":1721909032000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"feat: bili_ticket 算法 Java 实现 及 信息补充 及 错误修正 (#1061)"},{"hash":"180b8ce908d1abe02816c0ea89ddd1cfe6b3d7e6","time":1704853641000,"email":"z0z0r4@outlook.com","author":"z0z0r4","message":"feat: bili_ticket (#932)"}]},"filePathRelative":"docs/misc/sign/bili_ticket.md"}');export{u as comp,v as data};
|
||||
@@ -0,0 +1,25 @@
|
||||
import{_ as e,c as a,a as n,o as t}from"./app-Dgsdh8A6.js";const l={};function o(i,s){return t(),a("div",null,s[0]||(s[0]=[n(`<h1 id="获取-buvid3-buvid4-b-nut" tabindex="-1"><a class="header-anchor" href="#获取-buvid3-buvid4-b-nut"><span>获取 buvid3 / buvid4 / b_nut</span></a></h1><h2 id="仅获取-buvid3" tabindex="-1"><a class="header-anchor" href="#仅获取-buvid3"><span>仅获取 buvid3</span></a></h2><blockquote><p>https://api.bilibili.com/x/web-frontend/getbuvid</p></blockquote><p><em>请求方式: GET</em></p><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功</td></tr><tr><td>data</td><td>obj</td><td>数据本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>buvid</td><td>str</td><td>buvid3</td><td>需手动存放至 cookie 中</td></tr></tbody></table><p><strong>示例:</strong></p><p>注: 不要复制</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/web-frontend/getbuvid'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "buvid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"54E5EFC1-3C8F-F690-2261-439E4F6A20A979439infoc"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="接口获取-buvid3-buvid4" tabindex="-1"><a class="header-anchor" href="#接口获取-buvid3-buvid4"><span>接口获取 buvid3 / buvid4</span></a></h2><blockquote><p>https://api.bilibili.com/x/frontend/finger/spi</p></blockquote><p><em>请求方式: GET</em></p><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功</td></tr><tr><td>message</td><td>str</td><td>信息</td><td>ok: 成功</td></tr><tr><td>data</td><td>obj</td><td>数据本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>b_3</td><td>str</td><td>buvid3</td><td>需手动存放至 cookie 中</td></tr><tr><td>b_4</td><td>str</td><td>buvid4</td><td>同上</td></tr></tbody></table><p><strong>示例:</strong></p><p>注: 建议自行生成, 不要复制本处示例的 buvid3 / buvid4.</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/frontend/finger/spi'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "b_3"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"D9656DA8-9BEF-F464-5B72-C4849AFD336379044infoc"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "b_4"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"F6E0FD4B-520C-1902-4F7B-E461D8D1F5AB79044-024072309-666onEZSnlHVPjoRp4kDYg=="</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"ok"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="从响应头获取-buvid3-b-nut" tabindex="-1"><a class="header-anchor" href="#从响应头获取-buvid3-b-nut"><span>从响应头获取 buvid3 / b_nut</span></a></h2><p>使用 <code>GET</code> 或 <code>HEAD</code> 方法请求 <code>https://www.bilibili.com/</code>, 且请求头中 <code>User-Agent</code> 字段不包含 <code>curl</code> <code>python</code> <code>awa</code> 等敏感子字符串, 且相同 <code>User-Agent</code> 字段不得短时多次请求. 在响应头中的 <code>Set-Cookie</code> 字段中, 即可找到 <code>buvid3</code> 和 <code>b_nut</code>.</p><p>若不带任何 Cookie 请求, 则 <code>b_nut</code> 为响应生成时刻的 UNIX 秒级时间戳. 若请求 Cookie 仅带有 <code>buvid3</code>, 则 <code>b_nut</code> 为 <code>100</code>. 若请求 Cookie 仅带有 <code>b_nut</code>, 则与不带任何 Cookie 的响应相同. 若请求 Cookie 仅带有 <code>buvid3</code> 和 <code>b_nut</code>, 则响应无 <code>Set-Cookie</code> 字段. 若请求 Cookie 带有其他字段, 无影响.</p><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -I</span><span style="color:#CE9178;"> "https://www.bilibili.com/"</span><span style="color:#569CD6;"> -A</span><span style="color:#CE9178;"> "awa"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-http line-numbers-mode" data-highlighter="shiki" data-ext="http" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-http"><span class="line"><span style="color:#D4D4D4;">HTTP/2 </span><span style="color:#B5CEA8;">200</span><span style="color:#D4D4D4;"> </span></span>
|
||||
<span class="line"><span style="color:#569CD6;">date:</span><span style="color:#CE9178;"> Fri, 26 Jul 2024 06:38:43 GMT</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">content-type:</span><span style="color:#CE9178;"> text/html; charset=utf-8</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">support:</span><span style="color:#CE9178;"> nantianmen</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">set-cookie:</span><span style="color:#CE9178;"> buvid3=805E4894-96A2-0684-6F00-C6EA1FFB911023315infoc; path=/; expires=Sat, 26 Jul 2025 06:38:43 GMT; domain=.bilibili.com</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">set-cookie:</span><span style="color:#CE9178;"> b_nut=1721975923; path=/; expires=Sat, 26 Jul 2025 06:38:43 GMT; domain=.bilibili.com</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">vary:</span><span style="color:#CE9178;"> Origin,Accept-Encoding</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">idc:</span><span style="color:#CE9178;"> shjd</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">expires:</span><span style="color:#CE9178;"> Fri, 26 Jul 2024 06:38:42 GMT</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">cache-control:</span><span style="color:#CE9178;"> no-cache</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">x-cache-webcdn:</span><span style="color:#CE9178;"> MISS from blzone01</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">x-cache-time:</span><span style="color:#CE9178;"> 0</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">x-save-date:</span><span style="color:#CE9178;"> Fri, 26 Jul 2024 06:38:43 GMT</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,31)]))}const c=e(l,[["render",o]]),r=JSON.parse('{"path":"/docs/misc/buvid3_4.html","title":"获取 buvid3 / buvid4 / b_nut","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1726759053000,"contributors":[{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":4,"url":"https://github.com/SessionHu"},{"name":"SocialSisterYi","username":"SocialSisterYi","email":"45892418+SocialSisterYi@users.noreply.github.com","commits":1,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"1e24c6b1889160c4c35c01416aa4239501accf5f","time":1726759053000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"调整部分接口描述与错误修复 (#1088)","coAuthors":[{"name":"社会易姐QwQ","email":"45892418+SocialSisterYi@users.noreply.github.com"}]},{"hash":"60a0c5d1a2f44fe61335da04571305fa7727a968","time":1724238159000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"feat: 各种接口补充与错误修正 (#1066)"},{"hash":"2465990ccc5aea35ad6d0b17dc7c2f36bc5e45c0","time":1722059352000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"feat: 更新web端视频操作播放合集相关接口 (#1064)"},{"hash":"18c1efbc102ae6b44c8f5314c90e5e64f0d926cd","time":1721909032000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"feat: bili_ticket 算法 Java 实现 及 信息补充 及 错误修正 (#1061)"}]},"filePathRelative":"docs/misc/buvid3_4.md"}');export{c as comp,r as data};
|
||||
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
@@ -0,0 +1 @@
|
||||
import{_ as d,c as r,a,o as e}from"./app-Dgsdh8A6.js";const h={};function n(i,t){return e(),r("div",null,t[0]||(t[0]=[a('<h1 id="专栏分类" tabindex="-1"><a class="header-anchor" href="#专栏分类"><span>专栏分类</span></a></h1><h2 id="游戏" tabindex="-1"><a class="header-anchor" href="#游戏"><span>游戏</span></a></h2><table><thead><tr><th>id</th><th>parent_id</th><th>name</th></tr></thead><tbody><tr><td>1</td><td>0</td><td>游戏</td></tr><tr><td>6</td><td>1</td><td>单机游戏</td></tr><tr><td>7</td><td>1</td><td>电子竞技</td></tr><tr><td>8</td><td>1</td><td>手机游戏</td></tr><tr><td>9</td><td>1</td><td>网络游戏</td></tr><tr><td>10</td><td>1</td><td>桌游棋牌</td></tr></tbody></table><h2 id="动画" tabindex="-1"><a class="header-anchor" href="#动画"><span>动画</span></a></h2><table><thead><tr><th>id</th><th>parent_id</th><th>name</th></tr></thead><tbody><tr><td>2</td><td>0</td><td>动画</td></tr><tr><td>4</td><td>2</td><td>动漫杂谈</td></tr><tr><td>5</td><td>2</td><td>动漫资讯</td></tr><tr><td>31</td><td>2</td><td>动画技术</td></tr></tbody></table><h2 id="生活" tabindex="-1"><a class="header-anchor" href="#生活"><span>生活</span></a></h2><table><thead><tr><th>id</th><th>parent_id</th><th>name</th></tr></thead><tbody><tr><td>3</td><td>0</td><td>生活</td></tr><tr><td>13</td><td>3</td><td>美食</td></tr><tr><td>14</td><td>3</td><td>时尚</td></tr><tr><td>15</td><td>3</td><td>日常</td></tr><tr><td>21</td><td>3</td><td>萌宠</td></tr><tr><td>22</td><td>3</td><td>运动</td></tr></tbody></table><h2 id="轻小说" tabindex="-1"><a class="header-anchor" href="#轻小说"><span>轻小说</span></a></h2><table><thead><tr><th>id</th><th>parent_id</th><th>name</th></tr></thead><tbody><tr><td>16</td><td>0</td><td>轻小说</td></tr><tr><td>18</td><td>16</td><td>原创连载</td></tr><tr><td>19</td><td>16</td><td>同人连载</td></tr><tr><td>20</td><td>16</td><td>小说杂谈</td></tr><tr><td>32</td><td>16</td><td>短篇小说</td></tr></tbody></table><h2 id="科技" tabindex="-1"><a class="header-anchor" href="#科技"><span>科技</span></a></h2><table><thead><tr><th>id</th><th>parent_id</th><th>name</th></tr></thead><tbody><tr><td>17</td><td>0</td><td>科技</td></tr><tr><td>25</td><td>17</td><td>人文历史</td></tr><tr><td>26</td><td>17</td><td>数码</td></tr><tr><td>27</td><td>17</td><td>汽车</td></tr><tr><td>33</td><td>17</td><td>自然</td></tr><tr><td>34</td><td>17</td><td>学习</td></tr></tbody></table><h2 id="影视" tabindex="-1"><a class="header-anchor" href="#影视"><span>影视</span></a></h2><table><thead><tr><th>id</th><th>parent_id</th><th>name</th></tr></thead><tbody><tr><td>28</td><td>0</td><td>影视</td></tr><tr><td>12</td><td>28</td><td>电影</td></tr><tr><td>35</td><td>28</td><td>电视剧</td></tr><tr><td>36</td><td>28</td><td>纪录片</td></tr><tr><td>37</td><td>28</td><td>综艺</td></tr></tbody></table><h2 id="兴趣" tabindex="-1"><a class="header-anchor" href="#兴趣"><span>兴趣</span></a></h2><table><thead><tr><th>id</th><th>parent_id</th><th>name</th></tr></thead><tbody><tr><td>29</td><td>0</td><td>兴趣</td></tr><tr><td>11</td><td>29</td><td>模型手办</td></tr><tr><td>23</td><td>29</td><td>绘画</td></tr><tr><td>24</td><td>29</td><td>手工</td></tr><tr><td>38</td><td>29</td><td>摄影</td></tr><tr><td>39</td><td>29</td><td>音乐舞蹈</td></tr></tbody></table><h2 id="笔记" tabindex="-1"><a class="header-anchor" href="#笔记"><span>笔记</span></a></h2><table><thead><tr><th>id</th><th>parent_id</th><th>name</th></tr></thead><tbody><tr><td>41</td><td>0</td><td>笔记</td></tr><tr><td>42</td><td>41</td><td>全部笔记</td></tr></tbody></table>',17)]))}const o=d(h,[["render",n]]),c=JSON.parse('{"path":"/docs/article/category.html","title":"专栏分类","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1676998806000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":1,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/article/category.md"}');export{o as comp,c as data};
|
||||
@@ -0,0 +1,73 @@
|
||||
import{_ as t,c as a,a as n,o as l}from"./app-Dgsdh8A6.js";const e={};function d(o,s){return l(),a("div",null,s[0]||(s[0]=[n(`<h1 id="充电留言" tabindex="-1"><a class="header-anchor" href="#充电留言"><span>充电留言</span></a></h1><h2 id="发送充电留言" tabindex="-1"><a class="header-anchor" href="#发送充电留言"><span>发送充电留言</span></a></h2><blockquote><p>https://api.bilibili.com/x/ugcpay/trade/elec/message</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数(application/x-www-form-urlencoded):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>order_id</td><td>str</td><td>留言token</td><td>必要</td><td></td></tr><tr><td>message</td><td>str</td><td>留言内容</td><td>必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功 <br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>88203:不能重复留言</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>为留言token为<code>BPRG5CEC3VUPOOANA540</code>的充电操作,添加了内容为<code>支持一下大佬</code>的留言</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/ugcpay/trade/elec/message'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'order_id=BPRG5CEC3VUPOOANA540'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'message=支持一下大佬'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="查询我收到的充电留言" tabindex="-1"><a class="header-anchor" href="#查询我收到的充电留言"><span>查询我收到的充电留言</span></a></h2><blockquote><p>https://member.bilibili.com/x/web/elec/remark/list</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>begin</td><td>str</td><td>起始日期</td><td>非必要</td><td>默认2016-01-01</td></tr><tr><td>end</td><td>str</td><td>结束日期</td><td>非必要</td><td>默认2050-01-01</td></tr><tr><td>pn</td><td>str</td><td>页数</td><td>非必要</td><td></td></tr><tr><td>ps</td><td>str</td><td>分页大小</td><td>非必要</td><td>取值范围[1,12]</td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录</td></tr><tr><td>msg</td><td>str</td><td>错误信息</td><td>成功时为<code>0</code></td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>list</td><td>array</td><td>信息本体</td><td></td></tr><tr><td>pager</td><td>obj</td><td>分页信息</td><td></td></tr></tbody></table><p><code>list</code>数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>aid</td><td>num</td><td></td><td></td></tr><tr><td>bvid</td><td>str</td><td></td><td></td></tr><tr><td>id</td><td>num</td><td>留言记录id</td><td></td></tr><tr><td>mid</td><td>num</td><td>0</td><td></td></tr><tr><td>reply_mid</td><td>num</td><td>0</td><td></td></tr><tr><td>elec_num</td><td>num</td><td>0</td><td></td></tr><tr><td>state</td><td>num</td><td>UP是否已经回复这条留言</td><td>0:未回复<br>1:已回复</td></tr><tr><td>msg</td><td>str</td><td>留言信息</td><td></td></tr><tr><td>aname</td><td>str</td><td>空</td><td></td></tr><tr><td>uname</td><td>str</td><td>空</td><td></td></tr><tr><td>avator</td><td>str</td><td>空</td><td></td></tr><tr><td>reply_name</td><td>str</td><td>空</td><td></td></tr><tr><td>reply_avator</td><td>str</td><td>空</td><td></td></tr><tr><td>reply_msg</td><td>str</td><td>空</td><td></td></tr><tr><td>ctime</td><td>num</td><td>留言时间</td><td>毫秒级时间戳</td></tr><tr><td>reply_time</td><td>num</td><td>0</td><td></td></tr></tbody></table><p><code>pager</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>current</td><td>num</td><td>当前页数</td><td></td></tr><tr><td>size</td><td>num</td><td>当前分页大小</td><td></td></tr><tr><td>total</td><td>num</td><td>记录总数</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://member.bilibili.com/x/web/elec/remark/list?begin=2016-01-01&end=2050-01-01&pn=1&ps=10'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "list"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "aid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "bvid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">6715018</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "reply_mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "elec_num"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "state"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"加油"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "aname"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "uname"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "avator"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "reply_name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "reply_avator"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "reply_msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ctime"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1650665119000</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "reply_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "pager"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "current"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "size"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "total"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">448</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="查询充电留言详情" tabindex="-1"><a class="header-anchor" href="#查询充电留言详情"><span>查询充电留言详情</span></a></h2><blockquote><p>https://member.bilibili.com/x/web/elec/remark/detail</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>id</td><td>num</td><td>留言id</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-400:请求错误</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>成功时为 <code>0</code></td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>aid</td><td>num</td><td></td><td></td></tr><tr><td>bvid</td><td>str</td><td></td><td></td></tr><tr><td>id</td><td>num</td><td>留言id</td><td></td></tr><tr><td>mid</td><td>num</td><td>留言者mid(充电用户)</td><td></td></tr><tr><td>reply_mid</td><td>num</td><td>UP主mid</td><td></td></tr><tr><td>elec_num</td><td>num</td><td>0</td><td></td></tr><tr><td>state</td><td>num</td><td>UP是否已经回复这条留言</td><td>0:未回复<br>1:已回复</td></tr><tr><td>msg</td><td>str</td><td>留言内容</td><td></td></tr><tr><td>aname</td><td>str</td><td>空</td><td></td></tr><tr><td>uname</td><td>str</td><td>留言者用户名</td><td></td></tr><tr><td>avator</td><td>str</td><td>留言者头像</td><td></td></tr><tr><td>reply_name</td><td>str</td><td>UP主用户名</td><td></td></tr><tr><td>reply_avator</td><td>str</td><td>UP主头像</td><td></td></tr><tr><td>reply_msg</td><td>str</td><td>回复内容</td><td></td></tr><tr><td>ctime</td><td>num</td><td>留言时间</td><td>毫秒级时间戳</td></tr><tr><td>reply_time</td><td>num</td><td>回复时间</td><td>毫秒级时间戳</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://member.bilibili.com/x/web/elec/remark/detail?id=6507563'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "aid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "bvid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">6507563</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">19978396</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "reply_mid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2062760</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "elec_num"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "state"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"感谢搬运"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "aname"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "uname"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"HANSOOOOOL"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "avator"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i1.hdslb.com/bfs/face/5c22af0261b8b3f9a54b6e0038e35430e9ed9cfd.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "reply_name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"一把近战都不给六花"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "reply_avator"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"http://i2.hdslb.com/bfs/face/1804b716084908d4992bdd35827d0c2d7222fe97.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "reply_msg"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"( ̄3 ̄)"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ctime"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1646726966000</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "reply_time"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1646811946000</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="回复充电留言" tabindex="-1"><a class="header-anchor" href="#回复充电留言"><span>回复充电留言</span></a></h2><blockquote><p>https://member.bilibili.com/x/web/elec/remark/reply</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数(application/x-www-form-urlencoded):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>csrf</td><td>str</td><td>csrf</td><td>必要</td><td></td></tr><tr><td>id</td><td>num</td><td>留言id</td><td>必要</td><td></td></tr><tr><td>msg</td><td>str</td><td>回复信息</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf 校验失败<br>-400:请求错误<br>20004:充电服务异常</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td></td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>num</td><td>数据本体</td><td>1:成功<br>2:失败</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://member.bilibili.com/x/web/elec/remark/reply'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'id=6258929'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'msg=( ̄3 ̄)'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,58)]))}const r=t(e,[["render",d]]),c=JSON.parse('{"path":"/docs/electric/charge_msg.html","title":"充电留言","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1740498696000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"},{"name":"wuziqian211","username":"wuziqian211","email":"65224318+wuziqian211@users.noreply.github.com","commits":3,"url":"https://github.com/wuziqian211"}],"changelog":[{"hash":"6c1f03e75334aaba6f3b6f3bf346b0326073b779","time":1740498696000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"晨叶梦春","message":"update"},{"hash":"490d4c5e1f4559e9fae0feb46e18364317a6112e","time":1677480998000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"wuziqian211","message":"新增包月充电功能相关API (#626)"},{"hash":"f599147a0ce8d39d655760f2ade23797af2381cd","time":1677408879000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"wuziqian211","message":"Update charge_msg.md"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/electric/charge_msg.md"}');export{r as comp,c as data};
|
||||
@@ -0,0 +1,23 @@
|
||||
import{_ as e,c as a,a as n,o as l}from"./app-Dgsdh8A6.js";const t={};function o(i,s){return l(),a("div",null,s[0]||(s[0]=[n(`<h1 id="检查昵称是否可注册" tabindex="-1"><a class="header-anchor" href="#检查昵称是否可注册"><span>检查昵称是否可注册</span></a></h1><h2 id="检查昵称-已失效" tabindex="-1"><a class="header-anchor" href="#检查昵称-已失效"><span><s>检查昵称(已失效)</s></span></a></h2><details><summary>查看折叠内容</summary><blockquote><p>https://passport.bilibili.com/web/generic/check/nickname</p></blockquote><p><em>请求方式:GET</em></p><p>也可用于判断指定昵称的用户是否存在</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>nickName</td><td>str</td><td>目标昵称</td><td>必要</td><td>最长为16字符</td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>状态码</td><td>-400:请求错误<br>-500:服务器端异常<br><strong>详细说明见下一表格</strong></td></tr><tr><td>message</td><td>str</td><td>错误详情</td><td>若昵称可用,则不返回message</td></tr></tbody></table><p><code>code</code>状态码:</p><table><thead><tr><th>值</th><th>含义</th></tr></thead><tbody><tr><td>0</td><td>昵称未被注册</td></tr><tr><td>2001</td><td>该昵称已被他人使用</td></tr><tr><td>40002</td><td>昵称包含敏感信息</td></tr><tr><td>40004</td><td>昵称不可包含除-和_以外的特殊字符</td></tr><tr><td>40005</td><td>昵称过长(超过16字符)</td></tr><tr><td>40006</td><td>昵称过短(少于2字符)</td></tr><tr><td>40014</td><td>昵称已存在</td></tr></tbody></table><p><strong>示例:</strong></p><p>查询昵称 <code>xijinping</code> 是否被使用:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://passport.bilibili.com/web/generic/check/nickname'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'nickName=xijinping'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">40002</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"昵称包含敏感信息"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p>查询昵称 <code>//</code> 是否被使用:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://passport.bilibili.com/web/generic/check/nickname'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'nickName=//'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">40004</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"昵称不可包含除-和_以外的特殊字符"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p>查询昵称 <code>test0000000000000 </code> 是否被使用:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://passport.bilibili.com/web/generic/check/nickname'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'nickName=test0000000000000 '</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">40005</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"昵称过长"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p>查询昵称 <code>0</code> 是否被使用:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://passport.bilibili.com/web/generic/check/nickname'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'nickName=0'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">40006</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"昵称过短"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><p>查询昵称 <code>test</code> 是否被使用:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://passport.bilibili.com/web/generic/check/nickname'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'nickName=test'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">40014</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"昵称已存在"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details></details><p>目前该接口无论参数,稳定返回:</p><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,5)]))}const r=e(t,[["render",o]]),d=JSON.parse('{"path":"/docs/user/check_nickname.html","title":"检查昵称是否可注册","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1737288326000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"},{"name":"emptyBud","username":"emptyBud","email":"74719559+emptyBud@users.noreply.github.com","commits":1,"url":"https://github.com/emptyBud"}],"changelog":[{"hash":"5e16f1c41d8c6a6487d9e690f0b33a6d5f072c12","time":1737288326000,"email":"74719559+emptyBud@users.noreply.github.com","author":"空芽","message":"Update check_nickname.md"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/user/check_nickname.md"}');export{r as comp,d as data};
|
||||
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
@@ -0,0 +1,8 @@
|
||||
import{_ as e,c as a,a as t,o as l}from"./app-Dgsdh8A6.js";const n={};function o(i,s){return l(),a("div",null,s[0]||(s[0]=[t(`<h1 id="大会员签到" tabindex="-1"><a class="header-anchor" href="#大会员签到"><span>大会员签到</span></a></h1><h2 id="大积分签到" tabindex="-1"><a class="header-anchor" href="#大积分签到"><span>大积分签到</span></a></h2><blockquote><p>https://api.bilibili.com/pgc/activity/score/task/sign</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie (SESSDATA) / access_key</p><p>Cookie 鉴权方式下需要满足以下条件:</p><ul><li><code>Referer</code>在<code>*.bilibili.com</code>域名下</li><li><code>SESSDATA</code> 需要进行 url 编码,即 <code>,</code> 替换为 <code>%2C</code></li></ul><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP登录Token</td><td>APP方式必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token (位于cookie)</td><td>非必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段名</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>响应码</td><td>0:成功<br>-101:账号未登录<br>-401:非法访问<br>-403:访问权限不足</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>web 方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/pgc/activity/score/task/sign'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --referer</span><span style="color:#CE9178;"> 'https://www.bilibili.com'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>APP 方式:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/pgc/activity/score/task/sign'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'access_key=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"success"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,18)]))}const r=e(n,[["render",o]]),d=JSON.parse('{"path":"/docs/vip/clockin.html","title":"大会员签到","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/vip/clockin.md"}');export{r as comp,d as data};
|
||||
@@ -0,0 +1,8 @@
|
||||
import{_ as d,c as s,a as e,o as a}from"./app-Dgsdh8A6.js";const r={};function l(o,t){return a(),s("div",null,t[0]||(t[0]=[e(`<h1 id="弹幕个人配置修改" tabindex="-1"><a class="header-anchor" href="#弹幕个人配置修改"><span>弹幕个人配置修改</span></a></h1><h2 id="修改弹幕个人配置-web端" tabindex="-1"><a class="header-anchor" href="#修改弹幕个人配置-web端"><span>修改弹幕个人配置(web端)</span></a></h2><blockquote><p>https://api.bilibili.com/x/v2/dm/web/config</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie(SESSDATA)或APP</p><p><strong>正文参数( application/x-www-form-urlencoded ):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>access_key</td><td>str</td><td>APP登录Token</td><td>APP方式必要</td><td></td></tr><tr><td>dm_switch</td><td>bool</td><td>弹幕开关</td><td>非必要</td><td>true:开启<br>false:关闭</td></tr><tr><td>blockscroll</td><td>bool</td><td>屏蔽类型-滚动</td><td>非必要</td><td>true:不屏蔽<br>false:屏蔽</td></tr><tr><td>blocktop</td><td>bool</td><td>屏蔽类型-顶部</td><td>非必要</td><td>同上</td></tr><tr><td>blockbottom</td><td>bool</td><td>屏蔽类型-底部</td><td>非必要</td><td>同上</td></tr><tr><td>blockcolor</td><td>bool</td><td>屏蔽类型-彩色</td><td>非必要</td><td>同上</td></tr><tr><td>blockspecial</td><td>bool</td><td>屏蔽类型-特殊</td><td>非必要</td><td>同上</td></tr><tr><td>ai_switch</td><td>bool</td><td>是否打开智能云屏蔽</td><td>非必要</td><td>true:开启<br>false:关闭</td></tr><tr><td>ai_level</td><td>num</td><td>智能云屏蔽等级</td><td>非必要</td><td>区间:[0-10]<br>0为默认等级(3级)</td></tr><tr><td>preventshade</td><td>bool</td><td>防挡弹幕(底部15%)</td><td>非必要</td><td>true:开启<br>false:关闭</td></tr><tr><td>dmask</td><td>bool</td><td>智能防挡弹幕(人像蒙版)</td><td>非必要</td><td>同上</td></tr><tr><td>opacity</td><td>num</td><td>弹幕不透明度</td><td>非必要</td><td>区间:[0-1]</td></tr><tr><td>dmarea</td><td>num</td><td>弹幕显示区域</td><td>非必要</td><td>100:不重叠<br>75:3/4屏<br>50:半瓶<br>25:1/4屏<br>0:不限</td></tr><tr><td>speedplus</td><td>num</td><td>弹幕速度</td><td>非必要</td><td>区间:[0.4-1.6]</td></tr><tr><td>fontsize</td><td>num</td><td>字体大小</td><td>非必要</td><td>区间:[0.4-1.6]</td></tr><tr><td>screensync</td><td>bool</td><td>跟随屏幕缩放比例</td><td>非必要</td><td>true:开启<br>false:关闭</td></tr><tr><td>speedsync</td><td>bool</td><td>根据播放倍速调整速度</td><td>非必要</td><td>同上</td></tr><tr><td>fontfamily</td><td>str</td><td>字体类型</td><td>非必要</td><td>未启用</td></tr><tr><td>bold</td><td>bool</td><td>粗体</td><td>非必要</td><td>未启用</td></tr><tr><td>fontborder</td><td>num</td><td>描边类型</td><td>非必要</td><td>0:重墨<br>1:描边<br>2:45°投影</td></tr><tr><td>drawType</td><td>string</td><td>渲染类型</td><td>非必要</td><td>未启用</td></tr><tr><td>ts</td><td>num</td><td>当前时间戳</td><td>非必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token(位于cookie)</td><td>Cookie方式必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf校验失败<br>-400:请求错误<br>23004:数据没有修改</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>关闭弹幕</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v2/dm/web/config'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'dm_switch=false'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,14)]))}const c=d(r,[["render",l]]),i=JSON.parse('{"path":"/docs/danmaku/config.html","title":"弹幕个人配置修改","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/danmaku/config.md"}');export{c as comp,i as data};
|
||||
@@ -0,0 +1,26 @@
|
||||
import{_ as s,c as a,a as n,o as e}from"./app-Dgsdh8A6.js";const d={};function l(o,t){return e(),a("div",null,t[0]||(t[0]=[n(`<h1 id="加入老粉计划" tabindex="-1"><a class="header-anchor" href="#加入老粉计划"><span>加入老粉计划</span></a></h1><blockquote><p>https://api.bilibili.com/x/v1/contract/add_contract</p></blockquote><p><em>请求方式:POST</em></p><p>是否需要登录:<code>是</code></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>正文参数 (application/x-www-form-urlencoded):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>aid</td><td>str</td><td><code>空串</code></td><td></td><td></td></tr><tr><td>up_mid</td><td>str</td><td>UP主UID</td><td>必要</td><td></td></tr><tr><td>source</td><td>str</td><td><code>4</code></td><td></td><td></td></tr><tr><td>scene</td><td>str</td><td><code>105</code></td><td></td><td></td></tr><tr><td>platform</td><td>str</td><td><code>web</code></td><td></td><td></td></tr><tr><td>mobi_app</td><td>str</td><td><code>pc</code></td><td></td><td></td></tr><tr><td>csrf</td><td>str</td><td>用户csrf</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段名</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>响应码</td><td>0:成功<br>158001:<code>不满足条件</code></td></tr><tr><td>message</td><td>str</td><td>0</td><td></td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象</p><table><thead><tr><th>字段名</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>allow_message</td><td>bool</td><td><code>true</code></td><td></td></tr><tr><td>input_text</td><td>str</td><td><code>UP主加油!看好你噢~</code></td><td></td></tr><tr><td>input_title</td><td>str</td><td><code>感谢你对UP主的特别支持,“老粉”可期!私信留言鼓励下TA吧~ </code></td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> --location</span><span style="color:#569CD6;"> --request</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v1/contract/add_contract'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--header </span><span style="color:#CE9178;">'Cookie: SESSDATA=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--header </span><span style="color:#CE9178;">'Content-Type: application/x-www-form-urlencoded'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'up_mid=2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>点击查看</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "allow_message"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "input_text"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"UP主加油!看好你噢~"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "input_title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"感谢你对UP主的特别支持,“老粉”可期!私信留言鼓励下TA吧~"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h1 id="老粉计划发送留言" tabindex="-1"><a class="header-anchor" href="#老粉计划发送留言"><span>老粉计划发送留言</span></a></h1><blockquote><p>https://api.bilibili.com/x/v1/contract/add_message</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie (SESSDATA)</p><p><strong>正文参数 (application/x-www-form-urlencoded):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>aid</td><td>str</td><td><code>空串</code></td><td></td><td></td></tr><tr><td>up_mid</td><td>str</td><td>UP主UID</td><td>必要</td><td></td></tr><tr><td>source</td><td>str</td><td><code>4</code></td><td></td><td></td></tr><tr><td>scene</td><td>str</td><td><code>105</code></td><td></td><td></td></tr><tr><td>content</td><td>str</td><td>留言内容</td><td>必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>用户csrf</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段名</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>响应码</td><td>0:成功<br>158005:您跟up主还不是契约关系</td></tr><tr><td>message</td><td>str</td><td>0</td><td></td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象</p><table><thead><tr><th>字段名</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>success_toast</td><td>str</td><td><code>提交成功,UP主已收到留言~</code></td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> --location</span><span style="color:#569CD6;"> --request</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/v1/contract/add_message'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--header </span><span style="color:#CE9178;">'Cookie: SESSDATA=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--header </span><span style="color:#CE9178;">'Content-Type: application/x-www-form-urlencoded'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'up_mid=2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'content=..'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>点击查看</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "success_toast"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"提交成功,UP主已收到留言~"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,29)]))}const c=s(d,[["render",l]]),p=JSON.parse('{"path":"/docs/user/contract.html","title":"加入老粉计划","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1749972386000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":1,"url":"https://github.com/SocialSisterYi"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":1,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"ffba41758237c897b75e0c650c208b54469e6560","time":1749972386000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"fix(user/contract.md): missing <code>~</code>"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/user/contract.md"}');export{c as comp,p as data};
|
||||
@@ -0,0 +1,275 @@
|
||||
import{_ as n,c as a,a as l,o as e}from"./app-Dgsdh8A6.js";const o={};function p(t,s){return e(),a("div",null,s[0]||(s[0]=[l(`<h1 id="web端cookie刷新" tabindex="-1"><a class="header-anchor" href="#web端cookie刷新"><span>Web端Cookie刷新</span></a></h1><p>自从 2023 以来,社区反馈似乎 Web 端的 Cookie 会随着一些敏感接口的访问逐渐失效,而在 Web 页面上会判断 Cookie 是否需要刷新,如需刷新则会以动态加载 iframe 方式实现,同时登录(二维码 / 密码 / 短信验证码等)接口也会返回<code>refresh_token</code>字段,需要持久化保存,是一种官方的风控机制实现</p><p>感谢 <a href="https://github.com/SocialSisterYi/bilibili-API-collect/issues/524" target="_blank" rel="noopener noreferrer">#524</a> 提供相关研究报告以及逆向工程结果</p><blockquote><p>cookie 不会主动刷新的,只要他没有调用下面的刷新接口就不会刷新。也就是说,你只要不再打开浏览器,或者直接把 localStorage 的 ac_time_value 字段删除了。那么 cookie 在真的失效前(登录过期、账号风控等强制下线)都是不变化的。</p></blockquote><h2 id="刷新步骤-伪代码" tabindex="-1"><a class="header-anchor" href="#刷新步骤-伪代码"><span>刷新步骤(伪代码)</span></a></h2><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-python"><span class="line"><span style="color:#D4D4D4;">cookie, refresh_token = 进行登录操作() </span><span style="color:#6A9955;"># can be 二维码 / 密码 / 短信验证码</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#C586C0;">while</span><span style="color:#569CD6;"> True</span><span style="color:#D4D4D4;">:</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> 每日第一次访问接口:</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> 检查是否需要刷新(cookie):</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> CorrespondPath = 生成CorrespondPath(当前毫秒时间戳)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> refresh_csrf = 获取refresh_csrf(CorrespondPath, cookie)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> refresh_token_old = refresh_token </span><span style="color:#6A9955;"># 这一步必须保存旧的 refresh_token 备用</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> cookie, refresh_token = 刷新Cookie(refresh_token, refresh_csrf, cookie)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> 确认更新(refresh_token_old, cookie) </span><span style="color:#6A9955;"># 这一步需要新的 Cookie 以及旧的 refresh_token</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> SSO站点跨域登录(cookie)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> do_somethings(cookie) </span><span style="color:#6A9955;"># 其他业务逻辑处理</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="检查是否需要刷新" tabindex="-1"><a class="header-anchor" href="#检查是否需要刷新"><span>检查是否需要刷新</span></a></h2><blockquote><p>https://passport.bilibili.com/x/passport-login/web/cookie/info</p></blockquote><p><em>请求方式:GET</em></p><p>鉴权方式:Cookie</p><p><strong>url 参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>csrf</td><td>str</td><td>CSRF Token(位于 Cookie)</td><td>非必要</td><td>位于 Cookie 中的bili_jct字段</td></tr></tbody></table><p><strong>json 回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>refresh</td><td>bool</td><td>是否应该刷新 Cookie</td><td><code>true</code>:需要刷新 Cookie<br><code>false</code>:无需刷新 Cookie</td></tr><tr><td>timestamp</td><td>num</td><td>当前毫秒时间戳</td><td>用于获取 refresh_csrf</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-bash"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://passport.bilibili.com/x/passport-login/web/cookie/info'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "refresh"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "timestamp"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1684466082562</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="生成correspondpath算法" tabindex="-1"><a class="header-anchor" href="#生成correspondpath算法"><span>生成CorrespondPath算法</span></a></h2><p>该算法逆向于以下 wasm 以及 JavaScript bind 接口,抓取于官方 Web 首页中,感谢 <a href="https://github.com/SocialSisterYi/bilibili-API-collect/issues/524" target="_blank" rel="noopener noreferrer">#524</a> 提供</p><p>https://s1.hdslb.com/bfs/static/jinkela/long/wasm/wasm_rsa_encrypt_bg.wasm</p><p>https://s1.hdslb.com/bfs/static/jinkela/long/wasm/wasm_ras_umd.js</p><h3 id="算法细节" tabindex="-1"><a class="header-anchor" href="#算法细节"><span>算法细节</span></a></h3><p>将<code>refresh_\${timestamp}</code>作为消息体(参数<code>timestamp</code>为当前毫秒时间戳),用下方 PubKey 进行 <a href="https://datatracker.ietf.org/doc/html/rfc3447#section-7.1" target="_blank" rel="noopener noreferrer">RSA-OAEP</a> 算法加密,之后密文通过小写 Base16 编码为字符串</p><p>JWK 格式:</p><blockquote><p>{ "kty": "RSA", "n": "y4HdjgJHBlbaBN04VERG4qNBIFHP6a3GozCl75AihQloSWCXC5HDNgyinEnhaQ_4-gaMud_GF50elYXLlCToR9se9Z8z433U3KjM-3Yx7ptKkmQNAMggQwAVKgq3zYAoidNEWuxpkY_mAitTSRLnsJW-NCTa0bqBFF6Wm1MxgfE", "e": "AQAB" }</p></blockquote><p>PEM 格式:</p><blockquote><p>-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLgd2OAkcGVtoE3ThUREbio0Eg Uc/prcajMKXvkCKFCWhJYJcLkcM2DKKcSeFpD/j6Boy538YXnR6VhcuUJOhH2x71 nzPjfdTcqMz7djHum0qSZA0AyCBDABUqCrfNgCiJ00Ra7GmRj+YCK1NJEuewlb40 JNrRuoEUXpabUzGB8QIDAQAB -----END PUBLIC KEY-----</p></blockquote><h3 id="相关demo" tabindex="-1"><a class="header-anchor" href="#相关demo"><span>相关Demo</span></a></h3><p>该 Demo 提供 <a href="#javascript">JavaScript</a> <a href="#python">Python</a> <a href="#kotlin">Kotlin</a> <a href="#java">Java</a> <a href="#go">Go</a> 以及 <a href="#vercel%E4%BA%91%E5%87%BD%E6%95%B0">Vercel 云函数</a>,感谢 <a href="https://github.com/SocialSisterYi/bilibili-API-collect/issues/524" target="_blank" rel="noopener noreferrer">#524</a> 提供</p><h4 id="javascript" tabindex="-1"><a class="header-anchor" href="#javascript"><span>JavaScript</span></a></h4><div class="language-javascript line-numbers-mode" data-highlighter="shiki" data-ext="javascript" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-javascript"><span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> publicKey</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">await</span><span style="color:#9CDCFE;"> crypto</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">subtle</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">importKey</span><span style="color:#D4D4D4;">(</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "jwk"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> kty:</span><span style="color:#CE9178;"> "RSA"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> n:</span><span style="color:#CE9178;"> "y4HdjgJHBlbaBN04VERG4qNBIFHP6a3GozCl75AihQloSWCXC5HDNgyinEnhaQ_4-gaMud_GF50elYXLlCToR9se9Z8z433U3KjM-3Yx7ptKkmQNAMggQwAVKgq3zYAoidNEWuxpkY_mAitTSRLnsJW-NCTa0bqBFF6Wm1MxgfE"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> e:</span><span style="color:#CE9178;"> "AQAB"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> { </span><span style="color:#9CDCFE;">name:</span><span style="color:#CE9178;"> "RSA-OAEP"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">hash:</span><span style="color:#CE9178;"> "SHA-256"</span><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> [</span><span style="color:#CE9178;">"encrypt"</span><span style="color:#D4D4D4;">],</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">async</span><span style="color:#569CD6;"> function</span><span style="color:#DCDCAA;"> getCorrespondPath</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">timestamp</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> data</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> TextEncoder</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">encode</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">\`refresh_</span><span style="color:#569CD6;">\${</span><span style="color:#9CDCFE;">timestamp</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">\`</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> encrypted</span><span style="color:#D4D4D4;"> = </span><span style="color:#569CD6;">new</span><span style="color:#DCDCAA;"> Uint8Array</span><span style="color:#D4D4D4;">(</span><span style="color:#C586C0;">await</span><span style="color:#9CDCFE;"> crypto</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">subtle</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">encrypt</span><span style="color:#D4D4D4;">({ </span><span style="color:#9CDCFE;">name:</span><span style="color:#CE9178;"> "RSA-OAEP"</span><span style="color:#D4D4D4;"> }, </span><span style="color:#9CDCFE;">publicKey</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">data</span><span style="color:#D4D4D4;">))</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> encrypted</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">reduce</span><span style="color:#D4D4D4;">((</span><span style="color:#9CDCFE;">str</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">=></span><span style="color:#9CDCFE;"> str</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">c</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">16</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">padStart</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">), </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">const</span><span style="color:#4FC1FF;"> ts</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">Date</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">now</span><span style="color:#D4D4D4;">()</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;">console</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">log</span><span style="color:#D4D4D4;">(</span><span style="color:#C586C0;">await</span><span style="color:#DCDCAA;"> getCorrespondPath</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ts</span><span style="color:#D4D4D4;">))</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="shiki" data-ext="text" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-text"><span class="line"><span>b77f21ab5b7ce7879c410b2311dd6e7ea1a2cd1cd941073db067f4c3279fdabca3a06dfa744168ee14ad050b9f4889bd4edb8e76eb597fdd18c16804d82566b55c6dba8e225d838aa93d8e5b31cf7c56720db8244d92373f4944e0561f6ca5bf721a36ac079786060fc853605ccd1ddcb33f54617de6aedd44e3b9850d13b45f</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="python" tabindex="-1"><a class="header-anchor" href="#python"><span>Python</span></a></h4><p>需要<code>pycryptodome</code>依赖</p><div class="language-python line-numbers-mode" data-highlighter="shiki" data-ext="python" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-python"><span class="line"><span style="color:#C586C0;">from</span><span style="color:#D4D4D4;"> Crypto.Cipher </span><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> PKCS1_OAEP</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">from</span><span style="color:#D4D4D4;"> Crypto.PublicKey </span><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> RSA</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">from</span><span style="color:#D4D4D4;"> Crypto.Hash </span><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> SHA256</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> binascii</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> time</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">key = RSA.importKey(</span><span style="color:#CE9178;">'''</span><span style="color:#569CD6;">\\</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">-----BEGIN PUBLIC KEY-----</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLgd2OAkcGVtoE3ThUREbio0Eg</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">Uc/prcajMKXvkCKFCWhJYJcLkcM2DKKcSeFpD/j6Boy538YXnR6VhcuUJOhH2x71</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">nzPjfdTcqMz7djHum0qSZA0AyCBDABUqCrfNgCiJ00Ra7GmRj+YCK1NJEuewlb40</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">JNrRuoEUXpabUzGB8QIDAQAB</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">-----END PUBLIC KEY-----'''</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">def</span><span style="color:#DCDCAA;"> getCorrespondPath</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ts</span><span style="color:#D4D4D4;">):</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> cipher = PKCS1_OAEP.new(key, SHA256)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> encrypted = cipher.encrypt(</span><span style="color:#569CD6;">f</span><span style="color:#CE9178;">'refresh_</span><span style="color:#569CD6;">{</span><span style="color:#D4D4D4;">ts</span><span style="color:#569CD6;">}</span><span style="color:#CE9178;">'</span><span style="color:#D4D4D4;">.encode())</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> binascii.b2a_hex(encrypted).decode()</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">ts = </span><span style="color:#DCDCAA;">round</span><span style="color:#D4D4D4;">(time.time() * </span><span style="color:#B5CEA8;">1000</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;">print</span><span style="color:#D4D4D4;">(getCorrespondPath(ts))</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="shiki" data-ext="text" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-text"><span class="line"><span>47bbd615f333d6a2c597bbb46ad47a6e59752a305a2f545d3ba5d49ca055309347796f80d257613696d36170c57443a0e9dea2b47f83b0b4224d431e46124fadd9a24c8fa468147e8bf2d2501eaacae43310e19bf58fc4a728d80c90b9401afcfc1536ba9a2f6438ea53c0b2652f8b8d01c87355dd5a5da51de998b1a35d519a</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="kotlin" tabindex="-1"><a class="header-anchor" href="#kotlin"><span>Kotlin</span></a></h3><div class="language-kotlin line-numbers-mode" data-highlighter="shiki" data-ext="kotlin" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-kotlin"><span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.security.KeyFactory</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.security.spec.MGF1ParameterSpec</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.security.spec.X509EncodedKeySpec</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.util.</span><span style="color:#569CD6;">*</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> javax.crypto.Cipher</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> javax.crypto.spec.OAEPParameterSpec</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> javax.crypto.spec.PSource</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">fun</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">() {</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;"> println</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">getCorrespondPath</span><span style="color:#D4D4D4;">(System.</span><span style="color:#DCDCAA;">currentTimeMillis</span><span style="color:#D4D4D4;">()))</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">fun</span><span style="color:#DCDCAA;"> getCorrespondPath</span><span style="color:#D4D4D4;">(timestamp: </span><span style="color:#4EC9B0;">Long</span><span style="color:#D4D4D4;">): </span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> val</span><span style="color:#D4D4D4;"> publicKeyPEM = </span><span style="color:#CE9178;">"""</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> -----BEGIN PUBLIC KEY-----</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLgd2OAkcGVtoE3ThUREbio0Eg</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> Uc/prcajMKXvkCKFCWhJYJcLkcM2DKKcSeFpD/j6Boy538YXnR6VhcuUJOhH2x71</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> nzPjfdTcqMz7djHum0qSZA0AyCBDABUqCrfNgCiJ00Ra7GmRj+YCK1NJEuewlb40</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> JNrRuoEUXpabUzGB8QIDAQAB</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> -----END PUBLIC KEY-----</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> """</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">trimIndent</span><span style="color:#D4D4D4;">()</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;"> val</span><span style="color:#D4D4D4;"> publicKey = KeyFactory.</span><span style="color:#DCDCAA;">getInstance</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"RSA"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">generatePublic</span><span style="color:#D4D4D4;">(</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;"> X509EncodedKeySpec</span><span style="color:#D4D4D4;">(Base64.</span><span style="color:#DCDCAA;">getDecoder</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">decode</span><span style="color:#D4D4D4;">(publicKeyPEM</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">replace</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"-----BEGIN PUBLIC KEY-----"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">replace</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"-----END PUBLIC KEY-----"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">replace</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">trim</span><span style="color:#D4D4D4;">()))</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> )</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;"> val</span><span style="color:#D4D4D4;"> cipher = Cipher.</span><span style="color:#DCDCAA;">getInstance</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"RSA/ECB/OAEPPadding"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">apply</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> init</span><span style="color:#D4D4D4;">(Cipher.ENCRYPT_MODE,</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> publicKey,</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;"> OAEPParameterSpec</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"SHA-256"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"MGF1"</span><span style="color:#D4D4D4;">, MGF1ParameterSpec.SHA256, PSource.PSpecified.DEFAULT)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> )</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> cipher.</span><span style="color:#DCDCAA;">doFinal</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"refresh_</span><span style="color:#9CDCFE;">$timestamp</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toByteArray</span><span style="color:#D4D4D4;">()).</span><span style="color:#DCDCAA;">joinToString</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">) { </span><span style="color:#CE9178;">"%02x"</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">format</span><span style="color:#D4D4D4;">(it) }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="shiki" data-ext="text" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-text"><span class="line"><span>1428cbd14605ae42a0b42e22662cfe51d8e5034eeaffb36a46db46bd2f93216cbfd4d150cca2de44395add7c664b40acf44424ee8d634fc821b909423665a34d18bd7f4e77ea5388a2b612daf875e2fe8df62990e14b64a465898b0707bc1288586b68f9f4f2f20bea5cb1cada296beb8009e91bc8fb57a4b81b8923299b6eb7</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="go" tabindex="-1"><a class="header-anchor" href="#go"><span>Go</span></a></h3><div class="language-go line-numbers-mode" data-highlighter="shiki" data-ext="go" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-go"><span class="line"><span style="color:#569CD6;">package</span><span style="color:#4EC9B0;"> main</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#C586C0;">import</span><span style="color:#D4D4D4;"> (</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "crypto/rand"</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "crypto/rsa"</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "crypto/sha256"</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "crypto/x509"</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "encoding/hex"</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "encoding/pem"</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "fmt"</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "time"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">() {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> result</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">err</span><span style="color:#D4D4D4;"> := </span><span style="color:#DCDCAA;">getCorrespondPath</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">time</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Now</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">UnixMilli</span><span style="color:#D4D4D4;">())</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#9CDCFE;"> err</span><span style="color:#D4D4D4;"> != </span><span style="color:#569CD6;">nil</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#DCDCAA;"> panic</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">err</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> fmt</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Println</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">result</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">func</span><span style="color:#DCDCAA;"> getCorrespondPath</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">ts</span><span style="color:#4EC9B0;"> int64</span><span style="color:#D4D4D4;">) (</span><span style="color:#4EC9B0;">string</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">error</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> const</span><span style="color:#4FC1FF;"> publicKeyPEM</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">\`</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">-----BEGIN PUBLIC KEY-----</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLgd2OAkcGVtoE3ThUREbio0Eg</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">Uc/prcajMKXvkCKFCWhJYJcLkcM2DKKcSeFpD/j6Boy538YXnR6VhcuUJOhH2x71</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">nzPjfdTcqMz7djHum0qSZA0AyCBDABUqCrfNgCiJ00Ra7GmRj+YCK1NJEuewlb40</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">JNrRuoEUXpabUzGB8QIDAQAB</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">-----END PUBLIC KEY-----</span></span>
|
||||
<span class="line"><span style="color:#CE9178;">\`</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> pubKeyBlock</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">_</span><span style="color:#D4D4D4;"> := </span><span style="color:#9CDCFE;">pem</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Decode</span><span style="color:#D4D4D4;">([]</span><span style="color:#4EC9B0;">byte</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">publicKeyPEM</span><span style="color:#D4D4D4;">))</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> hash</span><span style="color:#D4D4D4;"> := </span><span style="color:#9CDCFE;">sha256</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">New</span><span style="color:#D4D4D4;">()</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> random</span><span style="color:#D4D4D4;"> := </span><span style="color:#9CDCFE;">rand</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Reader</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> msg</span><span style="color:#D4D4D4;"> := []</span><span style="color:#4EC9B0;">byte</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">fmt</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">Sprintf</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"refresh_</span><span style="color:#9CDCFE;">%d</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">ts</span><span style="color:#D4D4D4;">))</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> var</span><span style="color:#9CDCFE;"> pub</span><span style="color:#D4D4D4;"> *</span><span style="color:#4EC9B0;">rsa</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">PublicKey</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> pubInterface</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">parseErr</span><span style="color:#D4D4D4;"> := </span><span style="color:#9CDCFE;">x509</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">ParsePKIXPublicKey</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">pubKeyBlock</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">Bytes</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#9CDCFE;"> parseErr</span><span style="color:#D4D4D4;"> != </span><span style="color:#569CD6;">nil</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#CE9178;"> ""</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">parseErr</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> pub</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">pubInterface</span><span style="color:#D4D4D4;">.(*</span><span style="color:#4EC9B0;">rsa</span><span style="color:#D4D4D4;">.</span><span style="color:#4EC9B0;">PublicKey</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> encryptedData</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">encryptErr</span><span style="color:#D4D4D4;"> := </span><span style="color:#9CDCFE;">rsa</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">EncryptOAEP</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">hash</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">random</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">pub</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">msg</span><span style="color:#D4D4D4;">, </span><span style="color:#569CD6;">nil</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#9CDCFE;"> encryptErr</span><span style="color:#D4D4D4;"> != </span><span style="color:#569CD6;">nil</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#CE9178;"> ""</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">encryptErr</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> hex</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">EncodeToString</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">encryptedData</span><span style="color:#D4D4D4;">), </span><span style="color:#569CD6;">nil</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="shiki" data-ext="text" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-text"><span class="line"><span>97759947aa357ed5d88cf9bf1172737570b7bba2d6788d39006f082b2b25ddf53b581f1f0c61ed8573317485ef525d2789faa25a277b4602a4b9cbf837681093a03e96cb9773a11df4bb1e20f1587180b3e958194de922d7dd94d0a2f0b9b0ef74e426e8041f99b99e7c02407ef4ab38040e61be81e4fdfbdb73461e3a2ad810</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h3 id="java" tabindex="-1"><a class="header-anchor" href="#java"><span>Java</span></a></h3><div class="language-java line-numbers-mode" data-highlighter="shiki" data-ext="java" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-java"><span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> javax.crypto.Cipher;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> javax.crypto.spec.OAEPParameterSpec;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> javax.crypto.spec.PSource;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.math.BigInteger;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.security.KeyFactory;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.security.PublicKey;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.security.spec.MGF1ParameterSpec;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.security.spec.X509EncodedKeySpec;</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.util.Base64;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> CookieRefresh</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> PUBLIC_KEY</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"-----BEGIN PUBLIC KEY-----</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;"> +</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDLgd2OAkcGVtoE3ThUREbio0Eg</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;"> +</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "Uc/prcajMKXvkCKFCWhJYJcLkcM2DKKcSeFpD/j6Boy538YXnR6VhcuUJOhH2x71</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;"> +</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "nzPjfdTcqMz7djHum0qSZA0AyCBDABUqCrfNgCiJ00Ra7GmRj+YCK1NJEuewlb40</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;"> +</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "JNrRuoEUXpabUzGB8QIDAQAB</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;"> +</span></span>
|
||||
<span class="line"><span style="color:#CE9178;"> "-----END PUBLIC KEY-----"</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> void</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">args</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> try</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> correspondPath</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">getCorrespondPath</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">format</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"refresh_%d"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">System</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">currentTimeMillis</span><span style="color:#D4D4D4;">()), PUBLIC_KEY);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(correspondPath);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">catch</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">Exception</span><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">) {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">printStackTrace</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> String</span><span style="color:#DCDCAA;"> getCorrespondPath</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> plaintext</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> publicKeyStr</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">throws</span><span style="color:#4EC9B0;"> Exception</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> KeyFactory</span><span style="color:#9CDCFE;"> keyFactory</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">KeyFactory</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getInstance</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"RSA"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> publicKeyStr = publicKeyStr</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">replace</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"-----BEGIN PUBLIC KEY-----"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">replace</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"-----END PUBLIC KEY-----"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">replace</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"</span><span style="color:#D7BA7D;">\\n</span><span style="color:#CE9178;">"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">trim</span><span style="color:#D4D4D4;">();</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> byte</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">publicBytes</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">Base64</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getDecoder</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">decode</span><span style="color:#D4D4D4;">(publicKeyStr);</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> X509EncodedKeySpec</span><span style="color:#9CDCFE;"> x509EncodedKeySpec</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> X509EncodedKeySpec</span><span style="color:#D4D4D4;">(publicBytes);</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> PublicKey</span><span style="color:#9CDCFE;"> publicKey</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">keyFactory</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">generatePublic</span><span style="color:#D4D4D4;">(x509EncodedKeySpec);</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> algorithm</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"RSA/ECB/OAEPPadding"</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> Cipher</span><span style="color:#9CDCFE;"> cipher</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">Cipher</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getInstance</span><span style="color:#D4D4D4;">(algorithm);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> cipher</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">init</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Cipher</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ENCRYPT_MODE</span><span style="color:#D4D4D4;">, publicKey);</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;"> // Encode the plaintext to bytes</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> byte</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">plaintextBytes</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">plaintext</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getBytes</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"UTF-8"</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#6A9955;"> // Add OAEP padding to the plaintext bytes</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> OAEPParameterSpec</span><span style="color:#9CDCFE;"> oaepParams</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> OAEPParameterSpec</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"SHA-256"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"MGF1"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">MGF1ParameterSpec</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">SHA256</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">PSource</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">PSpecified</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">DEFAULT</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> cipher</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">init</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">Cipher</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">ENCRYPT_MODE</span><span style="color:#D4D4D4;">, publicKey, oaepParams);</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> // Encrypt the padded plaintext bytes</span></span>
|
||||
<span class="line"><span style="color:#4EC9B0;"> byte</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">encryptedBytes</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">cipher</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">doFinal</span><span style="color:#D4D4D4;">(plaintextBytes);</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> // Convert the encrypted bytes to a Base64-encoded string</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#C586C0;"> new</span><span style="color:#DCDCAA;"> BigInteger</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">, encryptedBytes).</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">16</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-text line-numbers-mode" data-highlighter="shiki" data-ext="text" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-text"><span class="line"><span>f87666152da692735123f4e49053e5a98c16854673b2e632f31a3ff0c029640772873661a9a8412db6be447a0bfa03a295d15548cbfd2bb35634e98ba5f25b1205519d6e6119b483f4c516c1e106d45b04ff98c73560949d379d3edaf3c0ecd10a1d46134fb9ca443122ab33c16d1dd48280496f949ed960a2fbcd65f10935e</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><h4 id="vercel云函数" tabindex="-1"><a class="header-anchor" href="#vercel云函数"><span>vercel云函数</span></a></h4><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-bash"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://wasm-rsa.vercel.app/api/rsa'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> "t=$((\`</span><span style="color:#DCDCAA;">date</span><span style="color:#CE9178;"> '+%s'\`</span><span style="color:#D4D4D4;">*</span><span style="color:#CE9178;">1000+\`</span><span style="color:#DCDCAA;">date</span><span style="color:#CE9178;"> '+%N'\`</span><span style="color:#DCDCAA;">/1000000</span><span style="color:#CE9178;">))"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "timestamp"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"1684468084078"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "hash"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"a768efe5114ef8610f9ed9ebc28c00827375f4a3448ec4ab17958cacc4fde9898e5b7aa27f649426bba1acae4aa222aafaff7d528669b15249de0b2b60d86618557d8dc90684db4ec68e8d98e41d94f1c97d1d431c288e595ceb522d033822442a9e1ee150b32771a83fbf65c13329e9fda080fbe3bc85c49c1de7ab148d228f"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="获取refresh-csrf" tabindex="-1"><a class="header-anchor" href="#获取refresh-csrf"><span>获取refresh_csrf</span></a></h2><blockquote><p>https://www.bilibili.com/correspond/1/{correspondPath}</p></blockquote><p><em>请求方式:GET</em></p><p>鉴权方式:Cookie</p><p><strong>path 参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>correspondPath</td><td>str</td><td>使用当前毫秒时间戳生成的签名</td><td>必要</td><td>由 <a href="#%E7%94%9F%E6%88%90CorrespondPath%E7%AE%97%E6%B3%95">生成CorrespondPath算法</a> 加密获得</td></tr></tbody></table><p>将参数<code>correspondPath</code>拼接在 https://www.bilibili.com/correspond/1/ 后进行请求,例如</p><blockquote><p>https://www.bilibili.com/correspond/1/0248397e5139a8b878894cae46f8d6742ef7c728e46403706452b5dda90fe248e58e73bd6c2da0dba515c53af107dc1ecda757ce843579bcf197fcd7800586126e9b896b646cc94c23183a5a067642e96f7b6e803880e1d3cceabc9f1dc52a121b5e3ba5619e008f6b6dcb65a09d7864084ac114f4ec9ccf6218776fe4f2fa95</p></blockquote><p>请求该 url 会返回一个 html 页面,通常由 iframe 方式加载,它通过 SSR 方式返回一个实时刷新口令<code>refresh_csrf</code>存放于 html 标签中,并在 Client 端通过 js 请求 RestAPI 完成一些列的提交刷新、确认、SSO 站点登录等操作</p><p>若参数<code>correspondPath</code>错误或过期,则返回一个 404 Page</p><p>以下为返回的参数:</p><table><thead><tr><th>标签 id</th><th>内容</th><th>xpath</th><th>备注</th></tr></thead><tbody><tr><td>1-name</td><td>refresh_csrf</td><td>//div[id='1-name']/text()</td><td>实时刷新口令<br>用于更新 Cookie</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-bash"><span class="line"><span style="color:#9CDCFE;">correspondPath</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">'0248397e5139a8b878894cae46f8d6742ef7c728e46403706452b5dda90fe248e58e73bd6c2da0dba515c53af107dc1ecda757ce843579bcf197fcd7800586126e9b896b646cc94c23183a5a067642e96f7b6e803880e1d3cceabc9f1dc52a121b5e3ba5619e008f6b6dcb65a09d7864084ac114f4ec9ccf6218776fe4f2fa95'</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> "https://www.bilibili.com/correspond/1/</span><span style="color:#9CDCFE;">$correspondPath</span><span style="color:#CE9178;">"</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-html line-numbers-mode" data-highlighter="shiki" data-ext="html" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-html"><span class="line"><span style="color:#808080;"><!</span><span style="color:#569CD6;">DOCTYPE</span><span style="color:#9CDCFE;"> html</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">html</span><span style="color:#9CDCFE;"> lang</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"zh-Hans"</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">head</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">meta</span><span style="color:#9CDCFE;"> name</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"spm_prefix"</span><span style="color:#9CDCFE;"> content</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"333.1193"</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">link</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> href</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"//s1.hdslb.com/bfs/static/jinkela/token-iframe/css/token-iframe.1.a035e81c3bee5fa1a05633ad534ad1f44b05e54d.css"</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> rel</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"stylesheet"</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">head</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">title</span><span style="color:#808080;">></span><span style="color:#D4D4D4;">Correspond</span><span style="color:#808080;"></</span><span style="color:#569CD6;">title</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> type</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"text/javascript"</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> src</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"//www.bilibili.com/gentleman/polyfill.js?features=Promise%2CObject.assign%2CString.prototype.includes%2CNumber.isNaN2%CglobalThis"</span><span style="color:#808080;">></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">body</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">div</span><span style="color:#9CDCFE;"> id</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"1-name"</span><span style="color:#808080;">></span><span style="color:#D4D4D4;">b0cc8411ded2f9db2cff2edb3123acac</span><span style="color:#808080;"></</span><span style="color:#569CD6;">div</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">div</span><span style="color:#9CDCFE;"> id</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"token-iframe-app"</span><span style="color:#808080;">></</span><span style="color:#569CD6;">div</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> type</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"text/javascript"</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> src</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"//s1.hdslb.com/bfs/static/jinkela/token-iframe/2.token-iframe.a035e81c3bee5fa1a05633ad534ad1f44b05e54d.js"</span><span style="color:#808080;">></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"> <</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> type</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"text/javascript"</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> src</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"//s1.hdslb.com/bfs/static/jinkela/token-iframe/token-iframe.a035e81c3bee5fa1a05633ad534ad1f44b05e54d.js"</span><span style="color:#808080;">></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">body</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"><span style="color:#808080;"><</span><span style="color:#569CD6;">script</span><span style="color:#9CDCFE;"> type</span><span style="color:#D4D4D4;">=</span><span style="color:#CE9178;">"text/javascript"</span><span style="color:#808080;">></span><span style="color:#9CDCFE;">window</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">reportMsgObj</span><span style="color:#D4D4D4;"> = {};</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> window</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">reportConfig</span><span style="color:#D4D4D4;"> = {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> sample:</span><span style="color:#B5CEA8;"> 1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> scrollTracker:</span><span style="color:#569CD6;"> true</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> msgObjects:</span><span style="color:#CE9178;"> 'reportMsgObj'</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> };</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#569CD6;"> let</span><span style="color:#9CDCFE;"> reportScript</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">document</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">createElement</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'script'</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> reportScript</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">src</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">'//s1.hdslb.com/bfs/seed/log/report/log-reporter.js'</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> document</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getElementsByTagName</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">'body'</span><span style="color:#D4D4D4;">)[</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">].</span><span style="color:#DCDCAA;">appendChild</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">reportScript</span><span style="color:#D4D4D4;">);</span><span style="color:#808080;"></</span><span style="color:#569CD6;">script</span><span style="color:#808080;">></span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#808080;"></</span><span style="color:#569CD6;">html</span><span style="color:#808080;">></span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>所以当前账号的实时刷新口令<code>refresh_csrf</code>为<code>b0cc8411ded2f9db2cff2edb3123acac</code></p><h2 id="刷新cookie" tabindex="-1"><a class="header-anchor" href="#刷新cookie"><span>刷新Cookie</span></a></h2><blockquote><p>https://passport.bilibili.com/x/passport-login/web/cookie/refresh</p></blockquote><p><em>请求方式:POST</em></p><p>鉴权方式:Cookie</p><p>刷新成功后会设置以下 Cookie 项:</p><p><code>sid</code>、<code>DedeUserID</code>、<code>DedeUserID__ckMd5</code>、<code>SESSDATA</code>、<code>bili_jct</code></p><p><strong>正文参数 (application/x-www-form-urlencoded)或 url 参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>csrf</td><td>str</td><td>CSRF Token</td><td>必要</td><td>位于 Cookie 中的<code>bili_jct</code>字段</td></tr><tr><td>refresh_csrf</td><td>str</td><td>实时刷新口令</td><td>必要</td><td>通过 <a href="#%E8%8E%B7%E5%8F%96refresh_csrf">获取refresh_csrf</a> 获得</td></tr><tr><td>source</td><td>str</td><td>访问来源?</td><td>必要</td><td>一般为<code>main_web</code></td></tr><tr><td>refresh_token</td><td>str</td><td>持久化刷新口令</td><td>必要</td><td>localStorage 中的<code>ac_time_value</code>字段,在登录成功后返回并保存</td></tr></tbody></table><p><strong>json 回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf 校验失败<br>86095:refresh_csrf 错误或 refresh_token 与 cookie 不匹配</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>status</td><td>num</td><td>0</td><td></td></tr><tr><td>message</td><td>str</td><td>空</td><td></td></tr><tr><td>refresh_token</td><td>str</td><td>新的持久化刷新口令</td><td>将存储于 localStorage 中的<code>ac_time_value</code>字段,以便下次使用</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-bash"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -i</span><span style="color:#CE9178;"> 'https://passport.bilibili.com/x/passport-login/web/cookie/refresh'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf=f610640a37f51f6266f6b83cfc5eedbb'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'refresh_csrf=b0cc8411ded2f9db2cff2edb3123acac'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'source=main_web'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'refresh_token=45240a041836905fe953e3b98b83d751'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><p>http 响应(关键信息已做脱敏处理):</p><div class="language-http line-numbers-mode" data-highlighter="shiki" data-ext="http" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-http"><span class="line"><span style="color:#D4D4D4;">HTTP/2 </span><span style="color:#B5CEA8;">200</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">date:</span><span style="color:#CE9178;"> Fri, 19 May 2023 07:34:11 GMT</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">content-type:</span><span style="color:#CE9178;"> application/json; charset=utf-8</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">content-length:</span><span style="color:#CE9178;"> 116</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">bili-status-code:</span><span style="color:#CE9178;"> 0</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">bili-trace-id:</span><span style="color:#CE9178;"> 17f4251365646726</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">set-cookie:</span><span style="color:#CE9178;"> SESSDATA=***; Path=/; Domain=bilibili.com; Expires=Wed, 15 Nov 2023 07:34:10 GMT; HttpOnly; Secure</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">set-cookie:</span><span style="color:#CE9178;"> bili_jct=***; Path=/; Domain=bilibili.com; Expires=Wed, 15 Nov 2023 07:34:10 GMT</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">set-cookie:</span><span style="color:#CE9178;"> DedeUserID=***; Path=/; Domain=bilibili.com; Expires=Wed, 15 Nov 2023 07:34:10 GMT</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">set-cookie:</span><span style="color:#CE9178;"> DedeUserID__ckMd5=***; Path=/; Domain=bilibili.com; Expires=Wed, 15 Nov 2023 07:34:10 GMT</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">set-cookie:</span><span style="color:#CE9178;"> sid=***; Path=/; Domain=bilibili.com; Expires=Wed, 15 Nov 2023 07:34:10 GMT</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">x-bili-trace-id:</span><span style="color:#CE9178;"> 3f6f6174aaa087b517f4251365646726</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">expires:</span><span style="color:#CE9178;"> Fri, 19 May 2023 07:34:10 GMT</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">cache-control:</span><span style="color:#CE9178;"> no-cache</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">x-cache-webcdn:</span><span style="color:#CE9178;"> BYPASS from blzone03</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">{</span><span style="color:#9CDCFE;">"code"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span><span style="color:#9CDCFE;">"message"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span><span style="color:#9CDCFE;">"ttl"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span><span style="color:#9CDCFE;">"data"</span><span style="color:#D4D4D4;">:{</span><span style="color:#9CDCFE;">"status"</span><span style="color:#D4D4D4;">:</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span><span style="color:#9CDCFE;">"message"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span><span style="color:#9CDCFE;">"refresh_token"</span><span style="color:#D4D4D4;">:</span><span style="color:#CE9178;">"ae1bd1149b56af9743ffe7bbbeff3e51"</span><span style="color:#D4D4D4;">}}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>JSON Payload:</p><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "refresh_token"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"ae1bd1149b56af9743ffe7bbbeff3e51"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="确认更新" tabindex="-1"><a class="header-anchor" href="#确认更新"><span>确认更新</span></a></h2><blockquote><p>https://passport.bilibili.com/x/passport-login/web/confirm/refresh</p></blockquote><p><em>请求方式:POST</em></p><p>鉴权方式:Cookie</p><p>该步操作将让旧的<code>refresh_token</code>对应的 Cookie 失效</p><p><strong>正文参数 (application/x-www-form-urlencoded)或 url 参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>csrf</td><td>str</td><td>CSRF Token(位于 cookie)</td><td>必要</td><td>从新的 cookie 中获取,位于 Cookie 中的<code>bili_jct</code>字段</td></tr><tr><td>refresh_token</td><td>str</td><td>旧的持久化刷新口令</td><td>必要</td><td>在刷新前 localStorage 中的<code>ac_time_value</code>获取,<strong>并非刷新后返回的值</strong></td></tr></tbody></table><p><strong>json 回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>-111:csrf 校验失败<br>-400:请求错误</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-bash line-numbers-mode" data-highlighter="shiki" data-ext="bash" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-bash"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#CE9178;"> 'https://passport.bilibili.com/x/passport-login/web/confirm/refresh'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'csrf=1e9658858e6da76be64bd92cdc0fa324'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> --data-urlencode</span><span style="color:#CE9178;"> 'refresh_token=45240a041836905fe953e3b98b83d751'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#569CD6;"> -b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,96)]))}const r=n(o,[["render",p]]),i=JSON.parse('{"path":"/docs/login/cookie_refresh.html","title":"Web端Cookie刷新","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1726759053000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":3,"url":"https://github.com/SocialSisterYi"},{"name":"whiter","username":"whiter","email":"whiterasbk@qq.com","commits":1,"url":"https://github.com/whiter"},{"name":"cqrect","username":"cqrect","email":"136703144+cqrect@users.noreply.github.com","commits":1,"url":"https://github.com/cqrect"},{"name":"lb-chc","username":"lb-chc","email":"69136546+lb-chc@users.noreply.github.com","commits":2,"url":"https://github.com/lb-chc"},{"name":"DannyDu26","username":"DannyDu26","email":"50359598+DannyDu26@users.noreply.github.com","commits":1,"url":"https://github.com/DannyDu26"},{"name":"Duyulin","username":"Duyulin","email":"duyulin@kingsoft.com","commits":1,"url":"https://github.com/Duyulin"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":1,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"1e24c6b1889160c4c35c01416aa4239501accf5f","time":1726759053000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"调整部分接口描述与错误修复 (#1088)","coAuthors":[{"name":"社会易姐QwQ","email":"45892418+SocialSisterYi@users.noreply.github.com"}]},{"hash":"e6dc29ec338003ce0e9d8fb2ef1c6b205ebc0556","time":1716012631000,"email":"50359598+DannyDu26@users.noreply.github.com","author":"Danny Du","message":"feat: cookie刷新生成CorrespondPath算法添加java代码实现 (#1017)","coAuthors":[{"name":"Duyulin","email":"duyulin@kingsoft.com"}]},{"hash":"e6f1e7829d3eebb5011f4d6a1e798e9db7e135ef","time":1705727483000,"email":"69136546+lb-chc@users.noreply.github.com","author":"lb-chc","message":"csrf token 就是 bili_jct (#939)"},{"hash":"ad246446b099aec92db86c2b0a3ea06df329d439","time":1704754997000,"email":"69136546+lb-chc@users.noreply.github.com","author":"lb-chc","message":"使说明更易懂 (#930)"},{"hash":"2dad8999a1c33e374d36133ed2fbb02515bc018e","time":1700194660000,"email":"136703144+cqrect@users.noreply.github.com","author":"cqrect","message":"添加了生成CorrespondPath算法的Go实现 (#860)"},{"hash":"09fe412ec7ce547fbcc5c70833b36170904ad535","time":1692145066000,"email":"whiterasbk@qq.com","author":"whiter","message":"添加了生成CorrespondPath算法的kotlin实现 (#786)"},{"hash":"cefb7e7c403b2a2ee24ac55d628e3dc67c97a2a6","time":1684511359000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"fix typo"},{"hash":"a46f140fde73530868ce9db5f613deed8d5c645e","time":1684483688000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"add【web端Cookie刷新】APIDoc"}]},"filePathRelative":"docs/login/cookie_refresh.md"}');export{r as comp,i as data};
|
||||
@@ -0,0 +1,21 @@
|
||||
import{_ as l,c as o,b as e,a as t,d as a,e as p,w as c,r,o as d}from"./app-Dgsdh8A6.js";const i={};function D(y,s){const n=r("RouteLink");return d(),o("div",null,[s[3]||(s[3]=e("h1",{id:"设备各类标识算法-app-端",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#设备各类标识算法-app-端"},[e("span",null,"设备各类标识算法(APP 端)")])],-1)),s[4]||(s[4]=e("h2",{id:"设备唯一标识-buvid",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#设备唯一标识-buvid"},[e("span",null,"设备唯一标识 BUVID")])],-1)),e("p",null,[s[1]||(s[1]=a("注意区分于 Web 端的 ")),p(n,{to:"/docs/misc/buvid3_4.html"},{default:c(()=>s[0]||(s[0]=[a("buvid3, buvid4")])),_:1,__:[0]}),s[2]||(s[2]=a("."))]),s[5]||(s[5]=t(`<p>BUVID 在 APP 首次安装于某设备, 且首次启动时生成.</p><p>APP 首次(即每次安装后)启动, 会向云端发送本机各类设备特征, 含 <code>AndroidId</code>, <code>DrmId</code> 等, 请求是否有匹配的 BUVID, 有就使用云端的, 否则使用本地生成的.</p><p>APP 请求是否有匹配的 BUVID 发送的本机各类设备特征包括(但不限于):</p><ul><li><code>AndroidID</code></li><li><code>DrmId</code></li><li><code>IMEI</code></li><li><code>OAID</code></li><li>手机网卡 <code>MAC</code></li><li>设备品牌</li><li>设备 Model</li><li>本地生成的 BUVID</li></ul><h3 id="生成方法" tabindex="-1"><a class="header-anchor" href="#生成方法"><span>生成方法</span></a></h3><ol><li><p>选定设备特征码, 可以是 <code>AndroidID</code>, <code>DrmId</code>, 手机网卡 <code>MAC</code> 等. 记为 <code>ID</code>. 特别地, <code>MAC</code> 应当去掉 <code>:</code>, <code>GUID</code>(即 UUID) 应当去掉 <code>-</code>.</p></li><li><p>计算 <code>ID</code> 的 MD5. 记为 <code>ID_MD5</code>.</p></li><li><p>从 <code>ID_MD5</code> 抽取第 3, 13, 23 位, 失败就默认为 000, 记为 <code>ID_E</code>.</p></li><li><p>根据选定的设备特征码类型确定 BUVID Prefix, 见附录. 记为 <code>BUVID_Prefix</code>.</p></li><li><p>按 <code>{BUVID_Prefix}{ID_E}{ID_MD5}</code> 的顺序连接起来, 共37位(2+3+32). 结果应当为大写.</p></li></ol><h3 id="demo" tabindex="-1"><a class="header-anchor" href="#demo"><span>Demo</span></a></h3><h4 id="rust" tabindex="-1"><a class="header-anchor" href="#rust"><span>Rust</span></a></h4><p>代码及测试样例见 <a href="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=40b5906cf3838a60efa83fa368b15147" target="_blank" rel="noopener noreferrer">Rust Playground</a>.</p><h2 id="设备指纹-fp-fp-local-fp-remote" tabindex="-1"><a class="header-anchor" href="#设备指纹-fp-fp-local-fp-remote"><span>设备指纹 fp (fp_local, fp_remote)</span></a></h2><p>用于请求账户相关 REST API, 及 gRPC Metadata 生成.</p><p>在请求头中, <code>fp_local</code> 和 <code>fp_remote</code> 设置为同一值即可, 暂不清楚区别.</p><h3 id="生成方法-1" tabindex="-1"><a class="header-anchor" href="#生成方法-1"><span>生成方法</span></a></h3><ol><li><p>获取 BUVID. 此处一般使用 XU Prefix 的 BUVID.</p></li><li><p>获取设备 Model(<code>Build.MODEL</code>), 如 <code>NOH-AN01</code>.</p></li><li><p>获取手机无线电固件版本号(<code>Build.getRadioVersion()</code>), 失败则留空. 如 <code>21C20B686S000C000,21C20B686S000C000</code>.</p></li><li><p>按前述顺序拼接字符串, 计算得 MD5.</p></li><li><p>获取年月日, 格式 <code>yyyyMMddhhmmss</code>, 拼接到 4 得到的字符串后.</p></li><li><p>生成 16 位随机字符串, CharSet 为 <code>0123456789abcdef</code>, 拼接到 5 得到的字符串后, 记为 <code>fp_raw</code>.</p></li><li><p>计算得到一个特殊字符串, 拼接到 <code>fp_raw</code> 后, 即得到最终的 <code>fp</code>, 特殊字符串算法见下:</p></li></ol><div class="language-rust line-numbers-mode" data-highlighter="shiki" data-ext="rust" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-rust"><span class="line"><span style="color:#569CD6;">let</span><span style="color:#569CD6;"> mut</span><span style="color:#9CDCFE;"> veri_code</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">;</span></span>
|
||||
<span class="line"><span style="color:#6A9955;">// 有点像 HEX 的操作</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">let</span><span style="color:#9CDCFE;"> fp_raw_sub_str</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">fp_raw</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">as_bytes</span><span style="color:#D4D4D4;">() </span><span style="color:#6A9955;">// 将字符串 fp_raw 转换为字节数组</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">chunks</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">) </span><span style="color:#6A9955;">// 按每两个字节一组进行切分</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">map</span><span style="color:#D4D4D4;">(|</span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;">| </span><span style="color:#569CD6;">unsafe</span><span style="color:#D4D4D4;"> { ::</span><span style="color:#4EC9B0;">std</span><span style="color:#D4D4D4;">::</span><span style="color:#4EC9B0;">str</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">from_utf8_unchecked</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">s</span><span style="color:#D4D4D4;">) }) </span><span style="color:#6A9955;">// 对每一组解析作为 UTF-8 字符串</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> .</span><span style="color:#DCDCAA;">collect</span><span style="color:#D4D4D4;">::<</span><span style="color:#4EC9B0;">Vec</span><span style="color:#D4D4D4;"><</span><span style="color:#9CDCFE;">_</span><span style="color:#D4D4D4;">>>(); </span><span style="color:#6A9955;">// 将结果收集到 Vec 中</span></span>
|
||||
<span class="line"><span style="color:#6A9955;">// 如果 fp_raw 的长度小于 62, 则向下取偶数减半作为循环终止条件, 否则终止条件为31</span></span>
|
||||
<span class="line"><span style="color:#C586C0;">for</span><span style="color:#9CDCFE;"> i</span><span style="color:#569CD6;"> in</span><span style="color:#B5CEA8;"> 0</span><span style="color:#D4D4D4;">..({</span></span>
|
||||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#9CDCFE;"> fp_raw</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">() < </span><span style="color:#B5CEA8;">62</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> fp_raw</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">() - </span><span style="color:#9CDCFE;">fp_raw</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">len</span><span style="color:#D4D4D4;">() % </span><span style="color:#B5CEA8;">2</span><span style="color:#6A9955;"> // 取偶数</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">else</span><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#B5CEA8;"> 62</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">} / </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">)</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#6A9955;"> // 将每组字符串转换为对应的 16 进制整数, 将转换得到的整数加到 veri_code 上. </span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> veri_code</span><span style="color:#D4D4D4;"> += </span><span style="color:#4EC9B0;">i32</span><span style="color:#D4D4D4;">::</span><span style="color:#DCDCAA;">from_str_radix</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">fp_raw_sub_str</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">i</span><span style="color:#D4D4D4;">], </span><span style="color:#B5CEA8;">16</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">unwrap_or</span><span style="color:#D4D4D4;">(</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">);</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span>
|
||||
<span class="line"><span style="color:#6A9955;">// 最后将 veri_code 对 256 取余, 格式化为两位的 16 进制字符串</span></span>
|
||||
<span class="line"><span style="color:#569CD6;">let</span><span style="color:#9CDCFE;"> veri_code</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">format!</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"{:0>2x}"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">veri_code</span><span style="color:#D4D4D4;"> % </span><span style="color:#B5CEA8;">256</span><span style="color:#D4D4D4;">);</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="demo-1" tabindex="-1"><a class="header-anchor" href="#demo-1"><span>Demo</span></a></h3><h4 id="rust-1" tabindex="-1"><a class="header-anchor" href="#rust-1"><span>Rust</span></a></h4><p>代码及测试样例见 <a href="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=40b5906cf3838a60efa83fa368b15147" target="_blank" rel="noopener noreferrer">Rust Playground</a>.</p><h2 id="附录" tabindex="-1"><a class="header-anchor" href="#附录"><span>附录</span></a></h2><h3 id="buvid-prefix" tabindex="-1"><a class="header-anchor" href="#buvid-prefix"><span>BUVID Prefix</span></a></h3><table><thead><tr><th style="text-align:center;">设备特征码</th><th style="text-align:center;">BUVID Prefix</th><th style="text-align:center;">备注</th></tr></thead><tbody><tr><td style="text-align:center;"><code>AndroidID</code></td><td style="text-align:center;"><code>XX</code></td><td style="text-align:center;"></td></tr><tr><td style="text-align:center;"><code>DrmId</code></td><td style="text-align:center;"><code>XU</code></td><td style="text-align:center;"></td></tr><tr><td style="text-align:center;"><code>IMEI</code></td><td style="text-align:center;"><code>XZ</code></td><td style="text-align:center;">已弃用</td></tr><tr><td style="text-align:center;"><code>GUID</code></td><td style="text-align:center;"><code>XW</code></td><td style="text-align:center;">已弃用</td></tr><tr><td style="text-align:center;"><code>MAC</code></td><td style="text-align:center;"><code>XY</code></td><td style="text-align:center;"></td></tr><tr><td style="text-align:center;"><code>GoogleId</code></td><td style="text-align:center;"><code>XG</code></td><td style="text-align:center;">东南亚版本</td></tr><tr><td style="text-align:center;"><code>FacebookId</code></td><td style="text-align:center;"><code>XF</code></td><td style="text-align:center;">东南亚版本</td></tr></tbody></table>`,21))])}const m=l(i,[["render",D]]),C=JSON.parse('{"path":"/docs/misc/device_identity.html","title":"设备各类标识算法(APP 端)","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1721909032000,"contributors":[{"name":"cxw620","username":"cxw620","email":"70561268+cxw620@users.noreply.github.com","commits":1,"url":"https://github.com/cxw620"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":1,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"18c1efbc102ae6b44c8f5314c90e5e64f0d926cd","time":1721909032000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"feat: bili_ticket 算法 Java 实现 及 信息补充 及 错误修正 (#1061)"},{"hash":"f5263d04570c9dcd1d1554a0c67651c532fe1b6a","time":1689310001000,"email":"70561268+cxw620@users.noreply.github.com","author":"陈寒彤","message":"add grpc docs (#741)"}]},"filePathRelative":"docs/misc/device_identity.md"}');export{m as comp,C as data};
|
||||
@@ -0,0 +1 @@
|
||||
const c="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201024%201024'%3e%3cpath%20fill='%231497C7'%20d='M512,0C366.7,3.3,245.8,53.2,149.5,149.5S3.3,366.7,0,512c3.3,145.3,53.2,266.2,149.5,362.5%20S366.7,1020.7,512,1024c145.3-3.3,266.2-53.2,362.5-149.5S1020.7,657.3,1024,512c-3.3-145.3-53.2-266.2-149.5-362.5S657.3,3.3,512,0%20z%20M326,463c4-4,8.7-6,14-6h81V311c0-10.7,7.3-18,18-18h146c10.7,0,18,7.3,18,18v146h81c17.3,1.3,23.7,20,13,32L524,647%20c-6.7,6.7-17.3,6.7-24,0L327,489C320.3,482.3,319.3,471,326,463z%20M713,731c0,10.7-8.7,19-18,19H329c-9.3,0-18-8.3-18-19v-36%20c0-10.7,7.3-18,18-18h366c10.7,0,18,7.3,18,18V731z'/%3e%3c/svg%3e";export{c as _};
|
||||
@@ -0,0 +1 @@
|
||||
import{_ as d,c as r,a as e,o as a}from"./app-Dgsdh8A6.js";const i={};function c(s,t){return a(),r("div",null,t[0]||(t[0]=[e('<h1 id="公共错误码" tabindex="-1"><a class="header-anchor" href="#公共错误码"><span>公共错误码</span></a></h1><p>下表为大部分接口返回值中<code>code</code>字段值中公共的错误代码</p><h2 id="权限类" tabindex="-1"><a class="header-anchor" href="#权限类"><span>权限类</span></a></h2><table><thead><tr><th>代码</th><th>含义</th></tr></thead><tbody><tr><td>-1</td><td>应用程序不存在或已被封禁</td></tr><tr><td>-2</td><td>Access Key 错误</td></tr><tr><td>-3</td><td>API 校验密匙错误</td></tr><tr><td>-4</td><td>调用方对该 Method 没有权限</td></tr><tr><td>-101</td><td>账号未登录</td></tr><tr><td>-102</td><td>账号被封停</td></tr><tr><td>-103</td><td>积分不足</td></tr><tr><td>-104</td><td>硬币不足</td></tr><tr><td>-105</td><td>验证码错误</td></tr><tr><td>-106</td><td>账号非正式会员或在适应期</td></tr><tr><td>-107</td><td>应用不存在或者被封禁</td></tr><tr><td>-108</td><td>未绑定手机</td></tr><tr><td>-110</td><td>未绑定手机</td></tr><tr><td>-111</td><td>csrf 校验失败</td></tr><tr><td>-112</td><td>系统升级中</td></tr><tr><td>-113</td><td>账号尚未实名认证</td></tr><tr><td>-114</td><td>请先绑定手机</td></tr><tr><td>-115</td><td>请先完成实名认证</td></tr></tbody></table><h2 id="请求类" tabindex="-1"><a class="header-anchor" href="#请求类"><span>请求类</span></a></h2><table><thead><tr><th>代码</th><th>含义</th></tr></thead><tbody><tr><td>-304</td><td>木有改动</td></tr><tr><td>-307</td><td>撞车跳转</td></tr><tr><td>-352</td><td>风控校验失败 (UA 或 wbi 参数不合法)</td></tr><tr><td>-400</td><td>请求错误</td></tr><tr><td>-401</td><td>未认证 (或非法请求)</td></tr><tr><td>-403</td><td>访问权限不足</td></tr><tr><td>-404</td><td>啥都木有</td></tr><tr><td>-405</td><td>不支持该方法</td></tr><tr><td>-409</td><td>冲突</td></tr><tr><td>-412</td><td>请求被拦截 (客户端 ip 被服务端风控)</td></tr><tr><td>-500</td><td>服务器错误</td></tr><tr><td>-503</td><td>过载保护,服务暂不可用</td></tr><tr><td>-504</td><td>服务调用超时</td></tr><tr><td>-509</td><td>超出限制</td></tr><tr><td>-616</td><td>上传文件不存在</td></tr><tr><td>-617</td><td>上传文件太大</td></tr><tr><td>-625</td><td>登录失败次数太多</td></tr><tr><td>-626</td><td>用户不存在</td></tr><tr><td>-628</td><td>密码太弱</td></tr><tr><td>-629</td><td>用户名或密码错误</td></tr><tr><td>-632</td><td>操作对象数量限制</td></tr><tr><td>-643</td><td>被锁定</td></tr><tr><td>-650</td><td>用户等级太低</td></tr><tr><td>-652</td><td>重复的用户</td></tr><tr><td>-658</td><td>Token 过期</td></tr><tr><td>-662</td><td>密码时间戳过期</td></tr><tr><td>-688</td><td>地理区域限制</td></tr><tr><td>-689</td><td>版权限制</td></tr><tr><td>-701</td><td>扣节操失败</td></tr><tr><td>-799</td><td>请求过于频繁,请稍后再试</td></tr><tr><td>-8888</td><td>对不起,服务器开小差了~ (ಥ﹏ಥ)</td></tr></tbody></table>',6)]))}const h=d(i,[["render",c]]),m=JSON.parse('{"path":"/docs/misc/errcode.html","title":"公共错误码","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1712675777000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":4,"url":"https://github.com/SocialSisterYi"},{"name":"wuziqian211","username":"wuziqian211","email":"65224318+wuziqian211@users.noreply.github.com","commits":1,"url":"https://github.com/wuziqian211"}],"changelog":[{"hash":"860fb3dc2aab83f56e4c702bbea9bad80346fb8c","time":1712675777000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"wuziqian211","message":"Fix #994 (#997)"},{"hash":"252178292b943640e4943df4c12e6a0999216c02","time":1685074429000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"update【用户信息】【用户投稿视频】APIDoc"},{"hash":"05ac3d5e2a9e28be3bf129ae8c78ffdbebaa161c","time":1684805901000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"添加文档【Wbi 接口签名】,修改目录结构"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/misc/errcode.md"}');export{h as comp,m as data};
|
||||
@@ -0,0 +1,11 @@
|
||||
import{_ as s,c as e,a,o}from"./app-Dgsdh8A6.js";const l={};function n(d,t){return o(),e("div",null,t[0]||(t[0]=[a(`<h1 id="退出账号登录" tabindex="-1"><a class="header-anchor" href="#退出账号登录"><span>退出账号登录</span></a></h1><h2 id="退出登录-web端" tabindex="-1"><a class="header-anchor" href="#退出登录-web端"><span>退出登录(web端)</span></a></h2><blockquote><p>https://passport.bilibili.com/login/exit/v2</p></blockquote><p><em>请求方式:POST</em></p><p>认证方式:Cookie</p><p>验证登录成功后会使用<code>set-cookie</code>字段清空以下 cookie 项:</p><p><code>DedeUserID</code> <code>DedeUserID__ckMd5</code> <code>SESSDATA</code> <code>bili_jct</code></p><p>并在服务器注销该登录 Token (SESSDATA),该 Token 即失效</p><p>请求必须包含以下cookie项:<code>DedeUserID</code> <code>bili_jct</code> <code>SESSDATA</code></p><p><strong>正文参数 (application/x-www-form-urlencoded):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>biliCSRF</td><td>str</td><td>CSRF Token (位于 cookie 中的 <code>bili_jct</code>)</td><td>必要</td><td></td></tr><tr><td>gourl</td><td>str</td><td>成功后跳转到的页面</td><td>非必要</td><td>默认为<code>javascript:history.go(-1)</code></td></tr></tbody></table><p><strong>json 回复:</strong></p><p>如果 cookie 已经失效则输出登录页 html</p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功 <br>2202:csrf 请求非法</td></tr><tr><td>status</td><td>bool</td><td>返回值</td><td><code>true</code>:成功</td></tr><tr><td>ts</td><td>num</td><td>时间戳</td><td></td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>成功时不存在</td></tr><tr><td>data</td><td>有效时:obj</td><td>信息本体</td><td>失败时不存在</td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>redirectUrl</td><td>str</td><td>重定向 url</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -L</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> 'https://passport.bilibili.com/login/exit/v2'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Cookie: DedeUserID=xxx; bili_jct=xxx; SESSDATA=xxx'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">'Content-Type: application/x-www-form-urlencoded'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'biliCSRF=xxxxxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ts"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1663034005</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "redirectUrl"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://passport.biligame.com/crossDomain?DedeUserID=&DedeUserID__ckMd5=&SESSDATA=&bili_jct=&gourl=javascript%3Ahistory.go%28-1%29"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,20)]))}const c=s(l,[["render",n]]),i=JSON.parse('{"path":"/docs/login/exit.html","title":"退出账号登录","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/login/exit.md"}');export{c as comp,i as data};
|
||||
@@ -0,0 +1 @@
|
||||
const c="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201024%201024'%3e%3cpath%20d='M250,767.13v-551h4l154-189c33.33-33.33,86-36.67,122-6c18.67,18.67,30.67,43,28,71l-6,124h235%20c29.33,0,56.33,13,75,37c16,22.67,19.67,52.67,13,78l-100,328c-17.33,62.67-68.33,104-135,108H250z%20M193,767.13h-80%20c-61.82,4.12-110.87-48.32-113-108v-331c0-41.33,21-77.33,57-96c18.67-9.33,37.33-13.33,56-16h80V767.13z'%20fill='%23FB7299'/%3e%3c/svg%3e",s="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201024%201024'%3e%3cpath%20d='M472,244h119c47.06,0,47.06-65,0-65H281c-45.49,0-45.49,65,0,65h125v60c-112,8-192,93-196,205v44%20c3.12,40.52,62.97,42.37,66,0v-44c1.33-74.67,55.33-133.33,130-140v305c2.98,41.69,63.02,41.69,66,0V369%20c74.67,6.67,128.67,65.33,130,140v44c0,41.73,65,41.73,65,0v-44c-2.67-112-82.67-197-196-205v-60H472z%20M439,878%20c-124-3.33-227.33-46.33-310-129S3.33,563,0,439c3.33-124,46.33-227.33,129-310S315,3.33,439,0c124,3.33,227.33,46.33,310,129%20s125.67,186,129,310c-3.33,124-46.33,227.33-129,310S563,874.67,439,878z'%20fill='%23FB7299'/%3e%3c/svg%3e",l="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201024%201024'%3e%3cpath%20d='M661.53,260c-42.67-6.67-77.67-33.33-95-72l-72-151c-25.33-49.33-86.67-49.33-116,0l-68,151%20c-20,38.67-53.67,65.33-95,72l-162,25c-52,10.67-71,65.67-35,107l122,126c29.33,28,40.33,68.67,35,110l-28,175%20c-6.67,56,43.33,90,94,66l137-75c38.67-22.67,84.33-22.67,123,0l138,75c49.33,24,96.67-10,94-66l-32-175c-5.33-41.33,5.67-82,35-110%20l122-126c36-41.33,17-96.33-35-107L661.53,260z'%20fill='%23FB7299'/%3e%3c/svg%3e";export{c as _,s as a,l as b};
|
||||
@@ -0,0 +1,109 @@
|
||||
import{_ as t,c as e,a as l,b as s,d as a,e as p,w as r,r as c,o as i}from"./app-Dgsdh8A6.js";const d={};function D(u,n){const o=c("RouteLink");return i(),e("div",null,[n[17]||(n[17]=l('<h1 id="拉取题目" tabindex="-1"><a class="header-anchor" href="#拉取题目"><span>拉取题目</span></a></h1><h2 id="拉取基础题" tabindex="-1"><a class="header-anchor" href="#拉取基础题"><span>拉取基础题</span></a></h2><blockquote><p>https://api.bilibili.com/x/answer/v4/base</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:Cookie或APP</p><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>41014:答题过快或错误太多<br>41020:用户基础题已通过<br>41023:用户答题记录不存在</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>question</td><td>obj</td><td>题目内容</td><td></td></tr></tbody></table><p><code>data</code>中的<code>question</code>对象:</p>',11)),s("table",null,[n[16]||(n[16]=s("thead",null,[s("tr",null,[s("th",null,"字段"),s("th",null,"类型"),s("th",null,"内容"),s("th",null,"备注")])],-1)),s("tbody",null,[n[7]||(n[7]=s("tr",null,[s("td",null,"id"),s("td",null,"num"),s("td",null,"问题id"),s("td",null,[s("strong",null,"问题id不代表题图,因为选项是打乱的")])],-1)),n[8]||(n[8]=s("tr",null,[s("td",null,"number"),s("td",null,"num"),s("td",null,"当前题号"),s("td")],-1)),n[9]||(n[9]=s("tr",null,[s("td",null,"q_height"),s("td",null,"num"),s("td",null,"问题部分总高度"),s("td")],-1)),n[10]||(n[10]=s("tr",null,[s("td",null,"q_coord_y"),s("td",null,"num"),s("td",null,"问题部分Y裁剪起始"),s("td",null,"当然是0")],-1)),n[11]||(n[11]=s("tr",null,[s("td",null,"image"),s("td",null,"str"),s("td",null,"题图url"),s("td",null,"题目文字+所有的选项文字排版成一张图,存储在bfs中")],-1)),n[12]||(n[12]=s("tr",null,[s("td",null,"from"),s("td",null,"str"),s("td",null,"问题来源页面url"),s("td",null,"如:“xx弹幕是否违规”所在的视频页")],-1)),n[13]||(n[13]=s("tr",null,[s("td",null,"options"),s("td",null,"array"),s("td",null,"选项列表"),s("td")],-1)),s("tr",null,[n[4]||(n[4]=s("td",null,"type_id",-1)),n[5]||(n[5]=s("td",null,"num",-1)),n[6]||(n[6]=s("td",null,"题目父类型id",-1)),s("td",null,[n[1]||(n[1]=a("见")),p(o,{to:"/docs/newbie_exam/info.html#%E6%9F%A5%E8%AF%A2%E8%87%AA%E9%80%89%E9%A2%98%E5%88%86%E7%B1%BB"},{default:r(()=>n[0]||(n[0]=[a("查询自选题分类")])),_:1,__:[0]}),n[2]||(n[2]=s("br",null,null,-1)),n[3]||(n[3]=s("strong",null,"注:36为基础题",-1))])]),n[14]||(n[14]=s("tr",null,[s("td",null,"type_name"),s("td",null,"str"),s("td",null,"分院小电视提示文案"),s("td",null,"如:xx小电视")],-1)),n[15]||(n[15]=s("tr",null,[s("td",null,"type_image"),s("td",null,"str"),s("td",null,"分院小电视图标url"),s("td")],-1))])]),n[18]||(n[18]=l(`<p><code>question</code>中的<code>options</code>数组:</p><table><thead><tr><th>项</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>0</td><td>obj</td><td>选项A</td><td></td></tr><tr><td>1</td><td>obj</td><td>选项B</td><td>选项至少2个</td></tr><tr><td>2</td><td>obj</td><td>选项C</td><td>数组长度取决于选项个数</td></tr><tr><td>3</td><td>obj</td><td>选项D</td><td></td></tr></tbody></table><p><code>question</code>中的<code>options</code>数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>number</td><td>num</td><td>选项序号</td><td>如:1为A 2为B</td></tr><tr><td>high</td><td>num</td><td>选项部分总高度</td><td></td></tr><tr><td>coord_y</td><td>num</td><td>选项部分Y裁剪起始</td><td></td></tr><tr><td>hash</td><td>str</td><td>选项hash</td><td>作为提交对应选项时应传参</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/answer/v4/base'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "question"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">6511</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "q_height"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">38.4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "q_coord_y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/member/9d7f1f1f0b7478a621d1b998a5a98982.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "from"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "options"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "high"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">42</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "coord_y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">38.4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "hash"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"f7619d6c2040d44f39dc87a7aa34fb9e"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "high"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">42</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "coord_y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">80.4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "hash"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"dce5140040f40ca4030783585684369d"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">36</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type_name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"小电视校长"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type_image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/face/7b67c0c0da64a6ab059ff49bb0d4b92988b91806.png"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="拉取附加题" tabindex="-1"><a class="header-anchor" href="#拉取附加题"><span>拉取附加题</span></a></h2><blockquote><p>https://api.bilibili.com/x/answer/v4/extra</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:Cookie或APP</p><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>41014:答题过快或错误太多<br>41021:用户基础题未通过<br>41023:用户答题记录不存在<br>41054:用户附加题已通过</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><p>同<a href="#%E6%8B%89%E5%8F%96%E5%9F%BA%E7%A1%80%E9%A2%98">拉取基础题</a>的<code>data</code>对象</p><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/answer/v4/extra'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "question"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">11492</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">44</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "q_height"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">76.8</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "q_coord_y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/member/b6c846613bd0b44cd7c8af1d83e3f0c2.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "from"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://www.bilibili.com/video/av14659093"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "options"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "high"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">42</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "coord_y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">76.8</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "hash"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"ca15e6009047cf82358c50ab90fd8d9e"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "high"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">42</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "coord_y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">118.8</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "hash"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"60e86a1c736c68da3462f66377e4e8ca"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">36</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type_name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"小电视校长"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type_image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/face/7b67c0c0da64a6ab059ff49bb0d4b92988b91806.png"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="拉取自选题" tabindex="-1"><a class="header-anchor" href="#拉取自选题"><span>拉取自选题</span></a></h2><blockquote><p>https://api.bilibili.com/x/answer/v4/pro</p></blockquote><p><em>请求方式:GET</em></p><p>认证方式:Cookie或APP</p><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-101:账号未登录<br>41014:答题过快或错误太多<br>41021:用户基础题未通过<br>41023:用户答题记录不存在<br>41051:用户答题验证码未通过<br>41055:基础附加题未通过</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code>对象:</p><p>同<a href="#%E6%8B%89%E5%8F%96%E5%9F%BA%E7%A1%80%E9%A2%98">拉取基础题</a>的<code>data</code>对象</p><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/x/answer/v4/pro'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "question"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">824</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">54</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "q_height"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">38.4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "q_coord_y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/member/417e02be5652f79d0312fa2fcee28869.png"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "from"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "options"</span><span style="color:#D4D4D4;">: [</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "high"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">42</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "coord_y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">38.4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "hash"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"c4574c23cf728c19abeab3e7525258d4"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "high"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">42</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "coord_y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">80.4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "hash"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"ffd48760758fbb8a2c183d1d04f692f8"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "high"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">42</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "coord_y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">122.4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "hash"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"898d414dff49fe20c4a1da1e148fadb2"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "number"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "high"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">42</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "coord_y"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">164.4</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "hash"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"09018443f09d8ef4f6fec5e96e082270"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type_name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"游戏小电视"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "type_image"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://i0.hdslb.com/bfs/face/6590bee26086fed66ee7cc5bac26a32d2f733037.png"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,31))])}const b=t(d,[["render",D]]),v=JSON.parse('{"path":"/docs/newbie_exam/fetch.html","title":"拉取题目","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/newbie_exam/fetch.md"}');export{b as comp,v as data};
|
||||
@@ -0,0 +1,23 @@
|
||||
import{_ as t,c as a,a as l,o as n}from"./app-Dgsdh8A6.js";const e={};function o(d,s){return n(),a("div",null,s[0]||(s[0]=[l(`<h1 id="追番相关" tabindex="-1"><a class="header-anchor" href="#追番相关"><span>追番相关</span></a></h1><h2 id="追番" tabindex="-1"><a class="header-anchor" href="#追番"><span>追番</span></a></h2><blockquote><p>https://api.bilibili.com/pgc/web/follow/add</p></blockquote><p><em>请求方式:POST</em></p><p>鉴权方式:Cookie(SESSDATA)</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>season_id</td><td>str</td><td>剧集ssid</td><td>必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>csrf token(位于cookies中的bili_jct)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-111:csrf校验失败</td></tr><tr><td>message</td><td>str</td><td>信息</td><td>成功时:success</td></tr><tr><td>result</td><td>obj</td><td>见下表</td><td></td></tr></tbody></table><p>根对象中的<code>result</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>fmid</td><td>num</td><td>0</td><td></td></tr><tr><td>relation</td><td>bool</td><td>false</td><td></td></tr><tr><td>status</td><td>num</td><td>2</td><td></td></tr><tr><td>toast</td><td>str</td><td>自己追的番就要好好看完哟^o^</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>追番<code>ssid=41410</code>的番剧</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/pgc/web/follow/add'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'season_id=41410'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"success"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "result"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "fmid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "relation"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "toast"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"自己追的番就要好好看完哟^o^"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="取消追番" tabindex="-1"><a class="header-anchor" href="#取消追番"><span>取消追番</span></a></h2><blockquote><p>https://api.bilibili.com/pgc/web/follow/del</p></blockquote><p><em>请求方式:POST</em></p><p>鉴权方式:Cookie(SESSDATA)</p><p><strong>url参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>season_id</td><td>str</td><td>剧集ssid</td><td>必要</td><td></td></tr><tr><td>csrf</td><td>str</td><td>csrf token(位于cookies中的bili_jct)</td><td>必要</td><td></td></tr></tbody></table><p><strong>json回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0:成功<br>-111:csrf校验失败</td></tr><tr><td>message</td><td>str</td><td>信息</td><td>成功时:success</td></tr><tr><td>result</td><td>obj</td><td>见下表</td><td></td></tr></tbody></table><p>根对象中的<code>result</code>对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>fmid</td><td>num</td><td>0</td><td></td></tr><tr><td>relation</td><td>bool</td><td>true</td><td></td></tr><tr><td>status</td><td>num</td><td>0</td><td></td></tr><tr><td>toast</td><td>str</td><td>已取消追番</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>取消<code>ssid=41410</code>的追番</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://api.bilibili.com/pgc/web/follow/del'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'season_id=41410'</span><span style="color:#D7BA7D;"> \\</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'csrf=xxx'</span><span style="color:#D7BA7D;"> \\</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"success"</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "result"</span><span style="color:#D4D4D4;">: {</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "fmid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "relation"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "status"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||||
<span class="line"><span style="color:#9CDCFE;"> "toast"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"已取消追番"</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details>`,31)]))}const p=t(e,[["render",o]]),c=JSON.parse('{"path":"/docs/bangumi/follow.html","title":"追番相关","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1677124138000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":2,"url":"https://github.com/SocialSisterYi"}],"changelog":[{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"7d89ece2ac46425810647c4ac92acf5f3721cb68","time":1676998806000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🚀调整项目结构"}]},"filePathRelative":"docs/bangumi/follow.md"}');export{p as comp,c as data};
|
||||