使用Pytube 15.0.0下载YouTube音频时遭遇403 Forbidden错误求助
解决方案与替代工具
修复Pytube 15.0.0的403 Forbidden错误
针对YouTube最新反爬调整,以下是可行修复方案:
- 自定义请求头初始化:跳过修改源码,直接在创建
YouTube实例时传入符合现代浏览器的User-Agent,避免被识别为非官方客户端:from pytube import YouTube headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36" } yt = YouTube("你的视频URL", headers=headers) audio_stream = yt.streams.filter(only_audio=True).first() audio_stream.download() - 启用OAuth认证:模拟真实用户登录状态,绕过反爬限制,首次运行会触发浏览器授权,后续自动缓存凭证:
yt = YouTube("你的视频URL", use_oauth=True, allow_oauth_cache=True) - 切换至维护活跃的分支版本:官方pytube更新滞后,可改用
pytubefix分支,完全兼容原有代码:
代码仅需替换导入:pip uninstall pytube -y pip install pytubefixfrom pytubefix import YouTube
可下载YouTube视频片段的替代Python模块
- yt-dlp:功能最全面的工具,原生支持分段下载、格式转换,反爬适配及时,示例下载指定时间段音频片段:
import yt_dlp ydl_opts = { "format": "bestaudio/best", "outtmpl": "%(title)s_clip.mp3", "postprocessors": [{"key": "FFmpegExtractAudio", "preferredcodec": "mp3"}], # 指定片段时间:从10秒到45秒 "download_ranges": lambda info, ydl: [{"start_time": 10, "end_time": 45}] } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(["你的视频URL"]) - pytubefix:作为pytube的修复分支,支持结合FFmpeg自行裁剪片段(需提前安装FFmpeg):
from pytubefix import YouTube import ffmpeg yt = YouTube("你的视频URL") audio_stream = yt.streams.filter(only_audio=True).first() temp_file = audio_stream.download(output_path="temp") # 裁剪10-45秒的片段 ffmpeg.input(temp_file, ss=10, to=45).output("clip.mp3").run() - youtube-dl:yt-dlp的前身,虽已停止维护,但部分场景仍可使用,分段下载逻辑与yt-dlp类似,但优先推荐yt-dlp。
内容的提问来源于stack exchange,提问作者Chaos Klaus
相关产品推荐
相关产品推荐

