From d5cfe489b903dd9cdbb5390750d88f8a9c89436b Mon Sep 17 00:00:00 2001 From: SessionHu <102411014+SessionHu@users.noreply.github.com> Date: Thu, 24 Apr 2025 00:39:30 +0800 Subject: [PATCH 01/90] fixlogin/login_action/SMS.md): broken links --- docs/login/login_action/SMS.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/login/login_action/SMS.md b/docs/login/login_action/SMS.md index 21a8d53..bd8abe5 100644 --- a/docs/login/login_action/SMS.md +++ b/docs/login/login_action/SMS.md @@ -106,7 +106,7 @@ curl 'https://passport.bilibili.com/web/generic/country/list' | 参数名 | 类型 | 内容 | 必要性 | 备注 | | --- | --- | --- | --- | --- | -| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码(web端))获取 | +| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码-web端)获取 | | tel | num | 手机号码 | 必要 | | | login_session_id | str | 登录标识 | 必要 | uuid去掉'-'后得到 | recaptcha_token | str | 登录 API token | 必要 | 在[申请 captcha 验证码](readme.md#申请captcha验证码)接口处获取 | @@ -199,7 +199,7 @@ static buvid() : string { | 参数名 | 类型 | 内容 | 必要性 | 备注 | | --- | --- | --- | --- | --- | -| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码(web端))获取 | +| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码-web端)获取 | | tel | num | 手机号码 | 必要 | | | source | str | 登录来源 | 必要 | `main_web`:独立登录页
`main_mini`:小窗登录 | | token | str | 登录 API token | 必要 | 在[申请 captcha 验证码](readme.md#申请captcha验证码)接口处获取 | @@ -267,11 +267,11 @@ curl 'https://passport.bilibili.com/x/passport-login/web/sms/send' \ | 参数名 | 类型 | 内容 | 必要性 | 备注 | | --- | --- | --- | --- | --- | -| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码(web端))获取 | +| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码-web端)获取 | | tel | num | 手机号码 | 必要 | | | login_session_id | str | 登录标识 | 必要 | 必须与上述login_session_id保持一致 | code | num | 短信验证码 | 必要 | timeout 为 5min | -| captcha_key | str | 短信登录 token | 必要 | 从[上述API](#发送短信验证码(web端))请求成功后返回 | +| captcha_key | str | 短信登录 token | 必要 | 从[上述API](#发送短信验证码-web端)请求成功后返回 | **json回复:** @@ -372,11 +372,11 @@ X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01 | 参数名 | 类型 | 内容 | 必要性 | 备注 | | --- | --- | --- | --- | --- | -| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码(web端))获取 | +| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码-web端)获取 | | tel | num | 手机号码 | 必要 | | | code | num | 短信验证码 | 必要 | timeout 为 5min | | source | str | 登录来源 | 必要 | `main_web`:独立登录页
`main_mini`:小窗登录 | -| captcha_key | str | 短信登录 token | 必要 | 从[上述API](#发送短信验证码(web端))请求成功后返回 | +| captcha_key | str | 短信登录 token | 必要 | 从[上述API](#发送短信验证码-web端)请求成功后返回 | | go_url | str | 跳转url | 非必要 | 默认为 https://www.bilibili.com | | keep | bool | 是否记住登录 | 非必要 | `true`:记住登录
`false`:不记住登录 | From 6ae71c41990c395c6b4cea0b84b9154acf8f7b55 Mon Sep 17 00:00:00 2001 From: SessionHu <102411014+SessionHu@users.noreply.github.com> Date: Thu, 24 Apr 2025 00:39:58 +0800 Subject: [PATCH 02/90] feat(article/view.md): view from cv1 --- README.md | 1 + docs/article/view.md | 306 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 307 insertions(+) create mode 100644 docs/article/view.md diff --git a/README.md b/README.md index ae4f7ea..77effe3 100644 --- a/README.md +++ b/README.md @@ -154,6 +154,7 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接 - [x] [笔记详细信息](docs/note/info.md) - [x] [笔记操作](docs/note/action.md) - [ ] [专栏](docs/article) + - [ ] [专栏内容](docs/article/view.md) - [ ] [专栏分类](docs/article/category.md) - [X] [基本信息](docs/article/info.md) - [X] [点赞 & 投币 & 收藏 & 分享](docs/article/action.md) diff --git a/docs/article/view.md b/docs/article/view.md new file mode 100644 index 0000000..2d2e235 --- /dev/null +++ b/docs/article/view.md @@ -0,0 +1,306 @@ +# 专栏内容 + +## 获取专栏正文内容 + +> https://api.bilibili.com/x/article/view + +*请求方法: GET* + +**URL 参数:** + +| 参数 | 类型 | 内容 | 必要性 | 备注 | +| ----- | ------ | ----------- | ------ | ---- | +| id | number | 专栏文章 ID | 必要 | | +| gaia_source | string | `main_web` | 不必要 | | +| w_rid | string | WBI 签名 | 不必要 | 参见 [WBI 签名](../misc/sign/wbi.md) | +| wts | number | UNIX 秒级时间戳 | 不必要 | 参见 [WBI 签名](../misc/sign/wbi.md) | + +**JSON 回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| code | number | 返回值 | 0: 成功
-352: 请求被风控
-400: 请求错误
-404: 啥都木有 | +| data | object | 数据本体 | 见下 | +| message | string | 错误信息 | 成功时为 `0` | +| ttl | number | `1` | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| act_id | number | 操作 ID? | | +| apply_time | string | 应用时间? | | +| attributes | number | 属性位? | | +| authenMark | null | 授权码? | | +| author | object | 作者信息 | 参考 [用户基本信息](../user/info.md) | +| banner_url | string | 文章头图 URL | | +| categories | object[] | 专栏分类信息 | 首项为主分区, 第二项为子分区 | +| category | object | 专栏分类信息 | 子分区 | +| check_state | number | 检查状态? | | +| check_time | string | 检查时间? | | +| content | string | 文章内容 | 可能为 JSON , 也可能为 HTML | +| content_pic_list | unknown | 内容图片列表? | | +| cover_avid | number | 封面视频 AV 号 | `0` 为无视频 | +| ctime | number | 创建时间 | UNIX 秒级时间戳 | +| dispute | unknown | 争议信息? | | +| dyn_id_str | string | 动态 upos id | | +| dynamic | string | 动态信息? | 可能不存在 | +| id | number | 专栏文章 ID | | +| image_urls | string[] | 图片 URL | | +| is_like | boolean | 是否喜欢? | | +| keywords | string | 关键词 | 以 `,` 分隔 | +| list | object | 文集信息 | 见下 | +| media | object | 媒体信息? | | +| mtime | number | 修改时间 | UNIX 秒级时间戳 | +| origin_image_urls | string[] | 原始图片 URL | | +| origin_template_id | number | 原始模板 ID? | | +| original | number | 是否原创 | 0: 非原创
1: 原创 | +| private_pub | number | 仅自己可见 | | +| publish_time | number | 发布时间 | UNIX 秒级时间戳 | +| reprint | number | 是否允许转载 | 0: 不允许
1: 允许规范转载 | +| state | number | 专栏状态 | | +| stats | object | 统计数据 | | +| summary | string | 专栏开头部分内容 | | +| tags | object[] | 专栏标签 | | +| template_id | number | 模板 ID? | | +| title | string | 专栏标题 | | +| top_video_info | unknown | 封面食品信息? | | +| total_art_num | number | 作者总文章数 | | +| type | number | 类型? | | +| upos | object | upos 信息 | 部分无该字段 | +| version_id | number | 版本 ID? | | +| words | number | 文章总词数 | | + +`data.categories[]` 对象: + +另见 [专栏分类](category.md) + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| id | number | 分类 ID | | +| name | string | 分类名称 | | +| parent_id | number | 父分类 ID | | + +`data.category` 对象: + +同 `data.categories[]` 中的对象 + +`data.list` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| apply_time | string | 空 | | +| articles_count | number | 0 | | +| check_time | string | 空 | | +| ctime | number | 创建时间 | UNIX 秒级时间戳 | +| id | number | 文集 ID | | +| image_url | string | 文集封面 URL | | +| mid | number | 作者 mid | | +| name | string | 文集名称 | | +| publish_time | number | 最新发布时间 | UNIX 秒级时间戳 | +| read | number | 0 | | +| reason | string | 审核不通过理由? | | +| state | number | 文集状态 | | +| summary | string | 文集描述 | | +| update_time | number | 文集更新时间 | UNIX 秒级时间戳 | +| words | number | 文集总词数 | | + +`data.media` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| area | string | | | +| cover | string | | | +| media_id | number | | | +| score | number | | | +| season_id | number | | | +| spoiler | number | | | +| title | string | | | +| type_id | number | | | +| type_name | string | | | + +`data.stats` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| coin | number | 硬币数 | | +| dislike | number | 点踩数 | 0 | +| dynamic | number | 动态数? | | +| favorite | number | 收藏数 | | +| like | number | 点赞数 | | +| reply | number | 回复数 | | +| share | number | 分享数 | | +| view | number | 查看数 | | + +`data.tags[]` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| name | string | 标签名 | | +| tid | number | 标签 ID | | + +**示例:** + +`cv1` 未知的光 + +```shell +curl -G 'https://api.bilibili.com/x/article/view' \ +--url-query 'id=1' \ +-A 'Mozilla/5.0' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "act_id": 0, + "apply_time": "", + "attributes": 24, + "authenMark": null, + "author": { + "face": "https://i1.hdslb.com/bfs/face/89fe260a17891fdadc3365a9698fee52796c7765.jpg", + "fans": 3051, + "level": 6, + "mid": 91221505, + "name": "健行见远渐忘", + "nameplate": { + "condition": "2018.6.26-7.8某一天是年度大会员", + "image": "https://i0.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "https://i0.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "name": "大会员2018年度勋章", + "nid": 74 + }, + "official_verify": { + "desc": "", + "type": -1 + }, + "pendant": { + "expire": 0, + "image": "https://i1.hdslb.com/bfs/face/7ae15f06f8c912435206a2578509d6bc77c12353.png", + "name": "作文鬼才", + "pid": 255 + }, + "vip": { + "avatar_subscript": 1, + "due_date": 0, + "label": { + "label_theme": "annual_vip", + "path": "http://i0.hdslb.com/bfs/vip/label_annual.png", + "text": "年度大会员" + }, + "nickname_color": "#FB7299", + "status": 1, + "theme_type": 0, + "type": 2, + "vip_pay_type": 0 + } + }, + "banner_url": "https://i0.hdslb.com/bfs/article/b1e1029c08d8ad1bb06460d736839a7741dd7925.jpg", + "categories": [ + { + "id": 3, + "name": "生活", + "parent_id": 0 + }, + { + "id": 15, + "name": "日常", + "parent_id": 3 + } + ], + "category": { + "id": 15, + "name": "日常", + "parent_id": 3 + }, + "check_state": 0, + "check_time": "", + "content": "

天空像是倾倒出的墨水,黑得静谧而深邃。黎明还远,光亮全无。

夜不能寐。披衣,起床。茶香的弥漫,一盏灯的相伴。夜,你是我久别重逢的朋友,那一刹那的相见,带给了我久违的安思。如果不是梦魇的皮闹,我本不该投入你的怀抱,此时此刻,万念侵扰,思绪咆哮。

台灯在角落里静静注视着我,不稳定的电流偶尔会吱吱作响。一切都像打在海绵上的水,渐渐消失,慢慢隐身于黑夜,独独留下我自己。一盏灯就可以把夜撕出个伤口,我似乎听到夜逃离光亮的脚步声,窸窸窣窣。它在蔓延,吞噬的野心已越过了窗沿。

我捧着茶杯,仿佛是在捧着一整个空间,凝重而诡异。茶香绕过茶杯脱落的瓷层向四周扩散,空气闻到了茶香,于是身边的气息似乎活跃了起来。转念一想,人生如茶。器皿的束缚不是茶香的归宿,所以人生的低谷也不是生命的全部。黑暗是光明的束缚,但光明却是黑暗的归宿。

灯光下,书架上一本金色题字的书的书名熠熠发光,我起身取下书,发现是海伦写的《假如给我三天光明》,我内心一热,忽然间有些感动。一个身体残疾的孩子,孱弱的身躯却支撑起了刚劲的灵魂。她的眼前一片漆黑,但内心世界却是光彩艳丽的。她的心中永远都有一抹无形的光,指引着她踏遍人生的路途。

时钟告诉我现在是凌晨四点。我舒展下筋骨,刚要起身,一只飞虫不偏不斜恰好闯入我的视线。灯光是它唯一的追寻。我不敢有任何的动作,只好也只能静静看着这只可爱的生灵。它好像不知道我是它的伙伴,也许它真的以为光亮是它唯一的追寻。但是我却欣慰于这突如其来的伙伴。光明可以带来很多东西,有时候也包括一份黑暗中的灵魂的一份安慰。我不忍打扰它与光明的约会,于是悄悄起身慢慢摸索着到了阳台。

阳台和我沉入了外面黑暗的梦乡。隐约可以听到一些不知名的昆虫在开着它们的舞会,我猜它们都端着无形的酒杯。它们在黑暗中买醉,因为明天的天明将是它们的散会。我有些感怀,也有些悲哀。

夜风股股咆哮着,我昂首顶住风头,仰望着漆黑的四周。很远很远处,灯塔若隐若现。它向来就是一头巨大的野兽,而此时它却空荡的像杯将尽的酒。它散发出柔弱的灯光在风中摇曳,忽明忽暗,像是一场与黑暗的决斗,随时都可能葬身在这黎明的前奏。

不忍心这惨烈的一幕,我踱步来到窗前。窗子很旧了,旧到已经无法再承受住时间的践踏了。可无论它多么陈旧,此时的它是神奇的——窗外黑暗窗内光。人心不也是一扇窗户吗?一半明媚一半伤。窗户把光亮的一面给了光明,人心是不是也应该把明媚的一半朝向世界呢?

屋内的灯倏忽闪了闪,我晃过神来,发现天边已经有抹淡红色了。黎明的脚步已经迈出了一半。那只与台灯约会的虫子似乎很满意,兴高采烈的向着呼之欲出的朝阳的方向窜去了。我望着它的背影,轻轻挥了挥手,心中暗念:“亲爱的朋友,恭喜你找到了属于自己的方向和追求,希望你能在光和热中接受生命的升华。”

天空见亮了,有点空灵,光晕中泛着感动。第一缕曙光穿透了云层,是的,我看到了,那一抹光,越来越近,越来越亮……

", + "content_pic_list": null, + "cover_avid": 0, + "ctime": 1497973729, + "dispute": null, + "dyn_id_str": "38554821905721204", + "dynamic": "It's now or never !", + "id": 1, + "image_urls": [ + "https://i0.hdslb.com/bfs/article/d2eedf1fd338bceca10099e2f7b33fa9017c859b.jpg" + ], + "is_like": false, + "keywords": "天空像是倾倒出的墨水,黑得静谧而深邃。黎明还远,光亮全无。夜不能寐。披衣,起床。茶香的弥漫,一盏灯的相伴。夜,你是我久别重逢的朋友,那一刹那的相见,带给了我久违的安思。如果不是梦魇的皮闹,我本不该投入", + "list": { + "apply_time": "", + "articles_count": 0, + "check_time": "", + "ctime": 1588601669, + "id": 253534, + "image_url": "", + "mid": 91221505, + "name": "静夜思", + "publish_time": 1625900652, + "read": 0, + "reason": "", + "state": 1, + "summary": "", + "update_time": 1625900518, + "words": 3059 + }, + "media": { + "area": "", + "cover": "", + "media_id": 0, + "score": 0, + "season_id": 0, + "spoiler": 0, + "title": "", + "type_id": 0, + "type_name": "" + }, + "mtime": 1589209079, + "origin_image_urls": [ + "https://i0.hdslb.com/bfs/article/b1e1029c08d8ad1bb06460d736839a7741dd7925.jpg" + ], + "origin_template_id": 4, + "original": 0, + "private_pub": 0, + "publish_time": 1519913233, + "reprint": 0, + "state": 0, + "stats": { + "coin": 2543, + "dislike": 1, + "dynamic": 0, + "favorite": 17520, + "like": 32484, + "reply": 14399, + "share": 616, + "view": 1631212 + }, + "summary": "天空像是倾倒出的墨水,黑得静谧而深邃。黎明还远,光亮全无。夜不能寐。披衣,起床。茶香的弥漫,一盏灯的相伴。夜,你是我久别重逢的朋友,那一刹那的相见,带给了我久违的安思。如果不是梦魇的皮闹,我本不该投入", + "tags": [ + { + "name": "静夜思", + "tid": 239416 + } + ], + "template_id": 4, + "title": "未知的光", + "top_video_info": null, + "total_art_num": 5, + "type": 0, + "version_id": 0, + "words": 1190 + }, + "message": "0", + "ttl": 1 +} +``` +
+ + From 9b62c71522a55c5fd19e3daa1b9c3a96be297c8c Mon Sep 17 00:00:00 2001 From: SessionHu <102411014+SessionHu@users.noreply.github.com> Date: Thu, 24 Apr 2025 23:36:45 +0800 Subject: [PATCH 03/90] feat(article/view.ms): compare with cv39322129 & cv41358718 --- docs/article/view.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/article/view.md b/docs/article/view.md index 2d2e235..7dd61a3 100644 --- a/docs/article/view.md +++ b/docs/article/view.md @@ -32,20 +32,20 @@ | ---- | ---- | ---- | ---- | | act_id | number | 操作 ID? | | | apply_time | string | 应用时间? | | -| attributes | number | 属性位? | | +| attributes | number | 属性位? | 可能不存在 | | authenMark | null | 授权码? | | | author | object | 作者信息 | 参考 [用户基本信息](../user/info.md) | -| banner_url | string | 文章头图 URL | | +| banner_url | string | 文章头图 URL | 空则为无 | | categories | object[] | 专栏分类信息 | 首项为主分区, 第二项为子分区 | | category | object | 专栏分类信息 | 子分区 | | check_state | number | 检查状态? | | | check_time | string | 检查时间? | | -| content | string | 文章内容 | 可能为 JSON , 也可能为 HTML | +| content | string | 文章内容 | `type` 字段为 `0` 为 HTML, `3` 为 JSON | | content_pic_list | unknown | 内容图片列表? | | | cover_avid | number | 封面视频 AV 号 | `0` 为无视频 | | ctime | number | 创建时间 | UNIX 秒级时间戳 | | dispute | unknown | 争议信息? | | -| dyn_id_str | string | 动态 upos id | | +| dyn_id_str | string | 动态 opus id | | | dynamic | string | 动态信息? | 可能不存在 | | id | number | 专栏文章 ID | | | image_urls | string[] | 图片 URL | | @@ -54,6 +54,7 @@ | list | object | 文集信息 | 见下 | | media | object | 媒体信息? | | | mtime | number | 修改时间 | UNIX 秒级时间戳 | +| opus | object | opus 信息 | 当 `type` 字段为 `3` 时存在 | | origin_image_urls | string[] | 原始图片 URL | | | origin_template_id | number | 原始模板 ID? | | | original | number | 是否原创 | 0: 非原创
1: 原创 | @@ -62,14 +63,13 @@ | reprint | number | 是否允许转载 | 0: 不允许
1: 允许规范转载 | | state | number | 专栏状态 | | | stats | object | 统计数据 | | -| summary | string | 专栏开头部分内容 | | +| summary | string | 专栏开头部分内容 | 纯文本 | | tags | object[] | 专栏标签 | | | template_id | number | 模板 ID? | | | title | string | 专栏标题 | | | top_video_info | unknown | 封面食品信息? | | | total_art_num | number | 作者总文章数 | | | type | number | 类型? | | -| upos | object | upos 信息 | 部分无该字段 | | version_id | number | 版本 ID? | | | words | number | 文章总词数 | | From 678277679406e2074a3152eb2995063802b48362 Mon Sep 17 00:00:00 2001 From: SessionHu <102411014+SessionHu@users.noreply.github.com> Date: Fri, 25 Apr 2025 00:58:52 +0800 Subject: [PATCH 04/90] feat(article/view.md): view data.content from cv37056989 --- docs/article/view.md | 970 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 969 insertions(+), 1 deletion(-) diff --git a/docs/article/view.md b/docs/article/view.md index 7dd61a3..a107908 100644 --- a/docs/article/view.md +++ b/docs/article/view.md @@ -87,6 +87,53 @@ 同 `data.categories[]` 中的对象 +`data.content` 为字符串形式的 JSON 时代表的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | -------- | ---- | ---- | +| ops | object[] | 以 JSON 呈现的文本内容 | 套了个娃 | + +`data.content` 为字符串形式的 JSON 时代表的对象中的 `ops` 数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | -------- | ---- | ---- | +| attribute | object? | 属性 | 见下 | +| insert | string \| object | 插入内容 | | + + +`data.content` 为字符串形式的 JSON 时代表的对象中的 `ops` 数组中的对象中的 `attribute` 对象: + +注: 此处属性备注为页面实际渲染的情况 + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | -------- | ---- | ---- | +| blockquote | boolean? | 块级引用 | 参见 [\:块级引用元素](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/blockquote) | +| bold | boolean? | 加粗 | 参见 [\](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/strong) | +| class | string? | 类名 | 参见 [class](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Global_attributes/class) | +| color | string? | 颜色 | 参见 [color](https://developer.mozilla.org/zh-CN/docs/Web/CSS/color) | +| header | number? | 标题级别 | 参见 [\–\:HTML 区域标题元素](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/Heading_Elements) | +| strike | boolean? | 删除线 | 参见 [\](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/s) | +| italic | boolean? | 斜体 | 参见 [\:强调元素](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/em) | list | string? | 列表 | `bullet`: 无序列表, 参见 [\:无序列表元素](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/ul)
`ordered`: 有序列表, 参见 [\](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/ol) | + +`data.content` 为字符串形式的 JSON 时代表的对象中的 `ops` 数组中的对象中的 `insert` 为对象时的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| native-image | object? | 原生图片 | 见下, 另见 [\:图像嵌入元素](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Reference/Elements/img) | + +`data.content` 为字符串形式的 JSON 时代表的对象中的 `ops` 数组中的对象中的 `insert` 为对象时的对象中的 `native-image` 对象: + +注: 此处属性备注为页面实际渲染的情况 + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| alt | string | 图像的备用文本描述 | 即 `` 的 `alt` 属性 | +| url | string | 图像的 URL | 即 `` 的 `src` 属性 | +| width | number | 图像的宽度 | 即 `` 的 `data-w` 属性 | +| height | number | 图像的高度 | 即 `` 的 `data-h` 属性 | +| size | number | 图像的文件大小 | 即 `` 的 `data-size` 属性 | +| status | number | `"loaded"` | 即 `` 的 `data-status` 属性 | + `data.list` 对象: | 字段 | 类型 | 内容 | 备注 | @@ -143,7 +190,7 @@ **示例:** -`cv1` 未知的光 +`type=0`: `cv1` 未知的光 ```shell curl -G 'https://api.bilibili.com/x/article/view' \ @@ -304,3 +351,924 @@ curl -G 'https://api.bilibili.com/x/article/view' \ + +`type=3`: `cv41358718` 通过 DevTools 绕过 SSR 抓包某站专栏正文接口 + +```shell +curl 'https://api.bilibili.com/x/article/view?id=41358718' \ +-A 'Mozilla/10.0' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "id": 41358718, + "category": { + "id": 26, + "parent_id": 17, + "name": "数码" + }, + "categories": [ + { + "id": 17, + "parent_id": 0, + "name": "科技" + }, + { + "id": 26, + "parent_id": 17, + "name": "数码" + } + ], + "title": "通过 DevTools 绕过 SSR 抓包某站专栏正文接口", + "summary": "背景\n最近没什么事做, 又回 BAC 看看有什么接口可以抓, 于是看到了陈年的专栏正文内容的 Issue #859\n由于泽生自己是写前端的, 对于浏览器 DevTools 的各项调试工具还算是比较了解, 打算想办法把专栏正文的接口抓下来 :)\n思路\n由于专栏正文完整的内容在页面加载的时候就已经通过 SSR (Server-Side Rendering, 服务端渲染) 的方式通过