如何通过youtubei API获取YouTube视频可用字幕语言列表及字幕内容?
通过YouTube内部youtubei API获取字幕及可用语言列表
可行性说明
可以通过youtubei API实现你的需求。youtubei是YouTube网页端和移动端原生应用使用的内部API,虽然官方未公开正式文档,但开发者社区已总结出稳定的调用方式,适合非商业化的个人或小型应用场景(注意:需遵守YouTube的服务条款,避免用于大规模商用或违规爬取)。
步骤1:获取视频可用字幕语言列表
请求构造
- URL:
https://www.youtube.com/youtubei/v1/get_transcript - 请求方法:POST
- 请求头:
- 必须包含
Content-Type: application/json - 添加模拟移动端的
User-Agent,例如:Mozilla/5.0 (Linux; Android 10; SM-G973F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.105 Mobile Safari/537.36
- 必须包含
- 请求体(JSON):
替换{ "context": { "client": { "clientName": "ANDROID", "clientVersion": "17.33.42", "hl": "en", "gl": "US" } }, "videoId": "YOUR_VIDEO_ID" }YOUR_VIDEO_ID为目标视频的ID。
响应解析
响应中actions[0].updateEngagementPanelAction.content.transcriptRenderer.body.transcriptHeader.captionTracks节点下的数组,就是该视频的所有可用字幕语言条目。每个条目包含以下关键字段:
languageCode:语言代码(如zh-CN、en-US)name.simpleText:语言名称(如“中文(简体)”、“English”)baseUrl:该语言字幕的直接获取链接
提取这些信息后,即可得到完整的可用字幕语言列表。
步骤2:检查目标语言是否存在
将用户指定的语言代码(如zh-CN)与步骤1中提取的languageCode字段进行匹配,判断是否存在对应字幕。
步骤3:获取指定语言的字幕内容
当确认目标语言存在后,直接发送GET请求到该语言条目对应的baseUrl,即可获取到字幕内容(通常为WebVTT格式)。你可以根据需求将其解析为纯文本或其他格式。
youtubei API使用注意事项
- Client参数适配:
clientName和clientVersion需要匹配当前YouTube移动端应用的版本,过时的版本可能导致请求失败,建议定期更新为最新的Android客户端版本号。 - 限流与封禁:避免高频次批量请求,否则可能触发YouTube的反爬机制,导致IP被临时封禁。
- 响应结构变化:由于是内部API,YouTube可能随时调整响应结构,需要定期验证调用逻辑。
内容的提问来源于stack exchange,提问作者Nam Vu
相关产品推荐
相关产品推荐

