You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:YouTube Transcript API仅非生产可用,生产环境报错

问题排查与解决方案

可能原因分析

  1. 生产环境IP被YouTube反爬机制拦截
    youtube-transcript-api并非YouTube官方API,它通过爬取网页获取字幕。生产服务器的固定IP如果频繁发起请求,容易被YouTube标记为爬虫,返回虚假的「TranscriptsDisabled」错误(即使目标视频字幕实际可用)。

  2. 请求User-Agent配置缺失/不合法
    非生产环境通常使用本地浏览器的User-Agent,符合正常访问特征;而生产环境中库默认的UA可能过于简单,被YouTube的反爬系统识别为非人类请求,进而拦截。

  3. 生产与非生产环境的库版本不一致
    如果两边的youtube-transcript-api版本不同,新版本可能存在兼容性问题,或者旧版本的漏洞在生产环境触发了错误。

  4. 地区访问限制(低概率)
    生产服务器所在地区可能被YouTube限制了字幕访问权限,但此情况通常不会针对所有视频生效,优先级较低。

对应解决方案

1. 配置代理或使用旋转IP

针对IP被拦截的情况,可在生产环境配置代理IP池,或者使用云服务商的动态IP服务,避免单一IP频繁请求被标记。修改代码中API调用部分,添加代理参数:

# 示例:添加代理配置
transcript_list = YouTubeTranscriptApi.list_transcripts(
    video_id,
    proxies={"http": "http://your-proxy:port", "https": "http://your-proxy:port"}
)

2. 自定义合法的User-Agent

在初始化请求时,设置符合真实浏览器特征的User-Agent,模拟正常用户访问:

from youtube_transcript_api._api import YouTubeTranscriptApi
import requests

# 自定义session,设置User-Agent
session = requests.Session()
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36"
})

# 使用自定义session调用API
transcript_list = YouTubeTranscriptApi.list_transcripts(video_id, requests_session=session)

3. 对齐生产与非生产环境的库版本

检查两边的youtube-transcript-api版本,确保一致:

# 查看当前版本
pip show youtube-transcript-api
# 安装指定版本
pip install youtube-transcript-api==<非生产环境的版本号>

4. 验证地区访问权限(可选)

可临时在生产服务器上手动访问目标视频的字幕页面,确认是否能正常加载,排除地区限制因素。

额外调试建议

  • 在生产环境中添加更详细的请求日志,记录请求的Headers、响应状态码和完整响应内容,进一步定位拦截原因。
  • 尝试使用YouTube官方的YouTube Data API v3替代第三方库,官方API更稳定,不会触发反爬限制(需要申请API密钥)。

内容的提问来源于stack exchange,提问作者JimmyProton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:50:54