https://api.bilibili.com/x/article/view
请求方法: GET
鉴权方式: 请求头 User-Agent
URL 参数:
| 参数 | 类型 | 内容 | 必要性 | 备注 |
|---|---|---|---|---|
| id | number | 专栏文章 ID | 必要 | |
| gaia_source | string | main_web |
不必要 | |
| w_rid | string | WBI 签名 | 不必要 | 参见 WBI 签名 |
| wts | number | UNIX 秒级时间戳 | 不必要 | 参见 WBI 签名 |
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 | 作者信息 | 参考 用户基本信息 |
| banner_url | string | 文章头图 URL | 空则为无 |
| categories | object[] | 专栏分类信息 | 首项为主分区, 第二项为子分区 |
| category | object | 专栏分类信息 | 子分区 |
| check_state | number | 检查状态? | |
| check_time | string | 检查时间? | |
| 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 | 动态 opus id | |
| dynamic | string | 动态信息? | 可能不存在 |
| id | number | 专栏文章 ID | |
| image_urls | string[] | 图片 URL | |
| is_like | boolean | 是否喜欢? | |
| keywords | string | 关键词 | 以 , 分隔 |
| 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: 原创 |
| 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 | 类型? | |
| version_id | number | 版本 ID? | |
| words | number | 文章总词数 |
data.categories[] 对象:
另见 专栏分类
| 字段 | 类型 | 内容 | 备注 |
|---|---|---|---|
| id | number | 分类 ID | |
| name | string | 分类名称 | |
| parent_id | number | 父分类 ID |
data.category 对象:
同 data.categories[] 中的对象
data.content 为字符串形式的 JSON 时代表的对象:
| 字段 | 类型 | 内容 | 备注 |
|---|---|---|---|
| ops | object[] | 以 JSON 呈现的文本内容 | 套了个娃 |
data.content 代表的对象中的 ops 数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
|---|---|---|---|
| attribute | object? | 属性 | 见下 |
| insert | string | object | 插入内容 |
data.content 代表的对象中的 ops[].attribute 对象:
注: 此处属性备注为页面实际渲染的情况
| 字段 | 类型 | 内容 | 备注 | ||||
|---|---|---|---|---|---|---|---|
| align | string? | 文字对齐 | 参见 text-align | ||||
| blockquote | boolean? | 块级引用 | 参见 <blockquote>:块级引用元素 | ||||
| bold | boolean? | 加粗 | 参见 <strong> | ||||
| class | string? | 类名 | 参见 class | ||||
| color | string? | 颜色 | 十六进制颜色值, 参见 color | ||||
| header | number? | 标题级别 | 参见 <h1>–<h6>:HTML 区域标题元素 | ||||
| strike | boolean? | 删除线 | 参见 <s> | ||||
| link | string? | 站内链接 | 参见 <a>:锚元素 | ||||
| italic | boolean? | 斜体 | 参见 <em>:强调元素 | list | string? | 列表 | bullet: 无序列表, 参见 <ul>:无序列表元素ordered: 有序列表, 参见 <ol> |
data.content 代表的对象中的 ops[].insert 为对象时的对象:
| 字段 | 类型 | 内容 | 备注 |
|---|---|---|---|
| native-image | object? | 原生图片 | 见下, 另见 <img>:图像嵌入元素 |
| cut-off | object? | 分割线 | 见下 |
| video-card | object? | 视频卡片 | 见下 |
| article-card | object? | 专栏卡片 | 见下 |
| vote-card | object? | 投票卡片 | 见下 |
| live-card | object? | 投票卡片 | 见下 |
data.content 代表的对象中的 ops[].insert.native-image 对象:
注: 此处属性备注为页面实际渲染的情况
| 字段 | 类型 | 内容 | 备注 |
|---|---|---|---|
| alt | string | 图像的备用文本描述 | 即 <img> 的 alt 属性 |
| url | string | 图像的 URL | 即 <img> 的 src 属性 |
| width | number | 图像的宽度 | 即 <img> 的 data-w 属性 |
| height | number | 图像的高度 | 即 <img> 的 data-h 属性 |
| size | number | 图像的文件大小 | 即 <img> 的 data-size 属性 |
| status | number | "loaded" |
即 <img> 的 data-status 属性 |
data.content 代表的对象中的 ops[].insert.cut-off 对象:
| 字段 | 类型 | 内容 | 备注 |
|---|---|---|---|
| type | string | 类型 | 没错, 就是字符串 |
| url | string | 分割线图片 URL |
data.content 代表的对象中的 ops[].insert.video-card 对象:
| 字段 | 类型 | 内容 | 备注 |
|---|---|---|---|
| alt | string | ||
| height | number | 卡片高度 | 似乎恒定为 352 |
| id | string | 视频 id | 如 av99999999 |
| size | null | ||
| status | string | loaded |
|
| tid | number | 1.1 |
|
| url | string | 卡片图片 URL | |
| width | number | 卡片宽度 | 似乎恒定为 2632 |
data.content 代表的对象中的 ops[].insert.article-card 对象:
| 字段 | 类型 | 内容 | 备注 |
|---|---|---|---|
| alt | string | ||
| height | number | 卡片高度 | 似乎恒定为 320 |
| id | string | 文章 id | 如 cv1 |
| size | null | ||
| status | string | loaded |
|
| tid | number | 2 |
|
| url | string | 卡片图片 URL | |
| width | number | 卡片宽度 | 似乎恒定为 2632 |
data.content 代表的对象中的 ops[].insert.vote-card 对象:
| 字段 | 类型 | 内容 | 备注 |
|---|---|---|---|
| alt | string | ||
| height | number | 卡片高度 | 似乎恒定为 320 |
| id | string | 投票 id | 确实是字符串, 如 15111509 |
| size | null | ||
| status | string | loaded |
|
| tid | number | 7 |
|
| url | string | 卡片图片 URL | |
| width | number | 卡片宽度 | 似乎恒定为 2632 |
data.content 代表的对象中的 ops[].insert.live-card 对象:
| 字段 | 类型 | 内容 | 备注 |
|---|---|---|---|
| alt | string | ||
| height | number | 卡片高度 | 似乎恒定为 352 |
| id | string | 直播间 id | 可能为长也可能为短, 如 lv1 lv5440 |
| size | null | ||
| status | string | loaded |
|
| tid | number | 8 |
|
| url | string | 卡片图片 URL | |
| width | number | 卡片宽度 | 似乎恒定为 2632 |
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 |
示例:
type=0: cv1 未知的光
curl -G 'https://api.bilibili.com/x/article/view' \
--url-query 'id=1' \
-A 'Mozilla/5.0'
天空像是倾倒出的墨水,黑得静谧而深邃。黎明还远,光亮全无。
夜不能寐。披衣,起床。茶香的弥漫,一盏灯的相伴。夜,你是我久别重逢的朋友,那一刹那的相见,带给了我久违的安思。如果不是梦魇的皮闹,我本不该投入你的怀抱,此时此刻,万念侵扰,思绪咆哮。
台灯在角落里静静注视着我,不稳定的电流偶尔会吱吱作响。一切都像打在海绵上的水,渐渐消失,慢慢隐身于黑夜,独独留下我自己。一盏灯就可以把夜撕出个伤口,我似乎听到夜逃离光亮的脚步声,窸窸窣窣。它在蔓延,吞噬的野心已越过了窗沿。
我捧着茶杯,仿佛是在捧着一整个空间,凝重而诡异。茶香绕过茶杯脱落的瓷层向四周扩散,空气闻到了茶香,于是身边的气息似乎活跃了起来。转念一想,人生如茶。器皿的束缚不是茶香的归宿,所以人生的低谷也不是生命的全部。黑暗是光明的束缚,但光明却是黑暗的归宿。
灯光下,书架上一本金色题字的书的书名熠熠发光,我起身取下书,发现是海伦写的《假如给我三天光明》,我内心一热,忽然间有些感动。一个身体残疾的孩子,孱弱的身躯却支撑起了刚劲的灵魂。她的眼前一片漆黑,但内心世界却是光彩艳丽的。她的心中永远都有一抹无形的光,指引着她踏遍人生的路途。
时钟告诉我现在是凌晨四点。我舒展下筋骨,刚要起身,一只飞虫不偏不斜恰好闯入我的视线。灯光是它唯一的追寻。我不敢有任何的动作,只好也只能静静看着这只可爱的生灵。它好像不知道我是它的伙伴,也许它真的以为光亮是它唯一的追寻。但是我却欣慰于这突如其来的伙伴。光明可以带来很多东西,有时候也包括一份黑暗中的灵魂的一份安慰。我不忍打扰它与光明的约会,于是悄悄起身慢慢摸索着到了阳台。
阳台和我沉入了外面黑暗的梦乡。隐约可以听到一些不知名的昆虫在开着它们的舞会,我猜它们都端着无形的酒杯。它们在黑暗中买醉,因为明天的天明将是它们的散会。我有些感怀,也有些悲哀。
夜风股股咆哮着,我昂首顶住风头,仰望着漆黑的四周。很远很远处,灯塔若隐若现。它向来就是一头巨大的野兽,而此时它却空荡的像杯将尽的酒。它散发出柔弱的灯光在风中摇曳,忽明忽暗,像是一场与黑暗的决斗,随时都可能葬身在这黎明的前奏。
不忍心这惨烈的一幕,我踱步来到窗前。窗子很旧了,旧到已经无法再承受住时间的践踏了。可无论它多么陈旧,此时的它是神奇的——窗外黑暗窗内光。人心不也是一扇窗户吗?一半明媚一半伤。窗户把光亮的一面给了光明,人心是不是也应该把明媚的一半朝向世界呢?
屋内的灯倏忽闪了闪,我晃过神来,发现天边已经有抹淡红色了。黎明的脚步已经迈出了一半。那只与台灯约会的虫子似乎很满意,兴高采烈的向着呼之欲出的朝阳的方向窜去了。我望着它的背影,轻轻挥了挥手,心中暗念:“亲爱的朋友,恭喜你找到了属于自己的方向和追求,希望你能在光和热中接受生命的升华。”
天空见亮了,有点空灵,光晕中泛着感动。第一缕曙光穿透了云层,是的,我看到了,那一抹光,越来越近,越来越亮……
", "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 } ```type=3: cv41358718 通过 DevTools 绕过 SSR 抓包某站专栏正文接口
curl 'https://api.bilibili.com/x/article/view?id=41358718' \
-A 'Mozilla/10.0'