给 AI

问答

b23.tv 短链是什么,怎么从里面拿到 B 站视频 ID?

简短回答

b23.tv 是 B 站的短链域名:访问短链会收到一个 HTTP 跳转,指向完整的 bilibili.com 页面,视频的 BV 号就在跳转后的地址里。可以自己读跳转地址,不花钱;也可以把短链作为 url 传给 okdata 的 B站视频详情接口,它会帮你解析,并连同视频数据一起返回 BV 号,每次 $0.002。

在 B 站 App 里点分享,复制出来的文字末尾是一个 b23.tv 链接,比如 【开箱】这台键盘有点东西 https://b23.tv/k9Xq2Rm。b23.tv 是 B 站自己的短链域名。短链本身不带任何数据,访问它会得到一个 HTTP 302 跳转,指向完整的 bilibili.com 地址;如果分享的是视频,这个地址里就有 BV 号。

常见的几种短链

短链 跳转到 不解析能看出 ID 吗
https://b23.tv/BV1... https://www.bilibili.com/video/BV1... 能,路径就是 BV 号
https://b23.tv/av170001 https://www.bilibili.com/video/av170001 能看到 aid,再转成 BV 号
https://b23.tv/ 加分享按钮生成的短码 完整页面,? 后面常带分享追踪参数 不能,要跟一次跳转

前两种我们在 2026 年 11 月 12 日用 curl -I 实测过:都返回 302,目标是 www.bilibili.com/video/ 开头的地址。短码也不只给视频用,App 里带分享按钮的东西,比如直播间、专栏文章,基本都会生成短码。先看清跳转目标,再认定它是 BV 号。

两种拿法

**自己解析。**发一个不跟随跳转的请求,读响应头里的 Location,用 BV[0-9A-Za-z]{10} 匹配出来。不花钱,适合少量链接。请求放在不会被 B 站拦的服务器上跑,频率别太高。

交给接口解析。B站视频详情可以直接把短链作为 url 传进去,接口会跟随跳转并返回视频:id 就是 BV 号,加上 view=full 还会带 ext.aid、ext.cid,以及播放、点赞、投币和弹幕数。反正也要拿数据,或者不想自己写跳转逻辑时,用这个省事。

要做的事 调用次数 费用
一条分享链接转 BV 号并拿数据 1 $0.002
一次投放收集的 500 条链接 500 $1.00
只要 BV 号,自己解析 0 免费

示例

import os, re, requests

API = "https://api.okdata.online/v1/bilibili/videos/get"
H = {"Authorization": f"Bearer {os.environ['OKDATA_API_KEY']}"}
BV = re.compile(r"BV[0-9A-Za-z]{10}")

def link_from_share_text(text: str) -> str:
    m = re.search(r"https?://b23\.tv/[0-9A-Za-z]+", text)
    if not m:
        raise ValueError("分享文字里没有 b23.tv 链接")
    return m.group(0)

def bvid_free(short: str) -> str | None:
    r = requests.head(short, allow_redirects=False, timeout=15)
    m = BV.search(r.headers.get("Location", ""))
    return m.group(0) if m else None

def video_via_api(short: str) -> dict:
    body = requests.get(API, headers=H, timeout=60, params={
        "url": short, "view": "full",
        "fields": "id,title,metrics.views,ext.aid"}).json()
    if body["code"] != "ok":
        raise RuntimeError(f'{body["code"]}: {body["message"]}')
    return body["data"]["item"]

link = link_from_share_text("【开箱】这台键盘有点东西 https://b23.tv/k9Xq2Rm")
print(bvid_free(link) or video_via_api(link)["id"])

限制

  • 传链接,不要把整段分享文字传进去:url 只能是一个 http(s) 地址。
  • 短链指向直播间、个人空间或专栏时,视频详情读不了,这次调用会失败,不扣费。
  • 视频已删除或设为私密时返回 not_found,不扣费。
  • 短链可能带着和分享人有关的追踪参数。存库或公开之前,把 ? 后面的部分去掉。

抖音、小红书的分享短链也是同样的套路,只是域名不同,见怎么把抖音分享链接转成视频 ID。

资料来源

  1. yt-dlp 的 B 站提取器:短链解析后落到的 bilibili.com/video/ 地址格式github.com · 读取于

这个问题出现过的地方(读取于 2026-11-12)

更新于

接上一次,以后直接问 AI。

新 key 自带 $0.10 试用额度。贴一句话,就能接进你的智能体。

免费开始
一句话接进你的 AI

把这句话发给你的智能体

读一下 https://okdata.online/zh/agents.md,帮我把 okdata 配好;我的 key 在环境变量 OKDATA_API_KEY 里。

Claude Code、Cursor、Codex 等能打开网址的智能体,读完会自己配好。

MCP 地址https://api.okdata.online/mcp