使用Python的pytube库下载YouTube视频时遭遇HTTP Error 410: Gone错误
解决pytube下载YouTube视频时的HTTP Error 410: Gone问题
HTTP 410错误本质是YouTube的资源获取接口发生了变更,旧版本的pytube库无法适配新规则,导致请求被服务器直接拒绝。下面是具体的修复方案:
1. 更新pytube到最新版本
pytube团队会持续跟进YouTube的接口变化,更新到最新版是最直接的解决办法:
pip install --upgrade pytube
如果官方稳定版仍有问题,可尝试安装GitHub上的开发分支(修复更及时):
pip install git+https://github.com/pytube/pytube.git
2. 调整代码,指定明确的下载流
原代码直接调用streams.download()可能会选中无法正常获取的流,改成指定具体流类型更稳妥:
from pytube import YouTube url = input("Enter the url : ") yt = YouTube(url) # 选择最高分辨率的音视频合并流 stream = yt.streams.get_highest_resolution() # 也可指定格式,比如仅下载MP4格式的合并流 # stream = yt.streams.filter(progressive=True, file_extension='mp4').get_highest_resolution() stream.download() print("下载完成")
3. 处理受限视频(区域/年龄限制)
如果视频存在区域锁、年龄限制,pytube无法直接获取资源也会触发类似错误,此时可添加浏览器的Cookie模拟登录状态:
from pytube import YouTube url = input("Enter the url : ") # 从浏览器开发者工具中复制你的YouTube Cookie字段(如YSC、LOGIN_INFO) yt = YouTube(url, cookies={"YSC": "你的YSC值", "LOGIN_INFO": "你的LOGIN_INFO值"}) stream = yt.streams.get_highest_resolution() stream.download()
额外提示
- 若需代理访问YouTube,需给pytube配置代理:
from pytube import YouTube yt = YouTube(url, proxies={"http": "http://你的代理地址:端口", "https": "http://你的代理地址:端口"})
- 部分视频因版权限制无法下载,此类情况即使修复410错误也无法获取资源。
内容的提问来源于stack exchange,提问作者Desire Techno
相关产品推荐
相关产品推荐

