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

如何使用Python的Pytube库下载年龄限制的视频/音频

解决年龄限制YouTube视频的下载问题

要下载年龄限制的YouTube视频,核心是让pytube模拟已登录状态——这类视频要求账号验证才能访问,所以需要传入你的YouTube账号Cookie来绕过限制。

步骤1:获取YouTube账号的Cookie

  • 用浏览器登录你的YouTube账号(确保账号已完成年龄验证)。
  • 按F12打开开发者工具,切换到「网络」标签页。
  • 在搜索框输入youtube.com,点击任意一个请求,找到「请求头」里的Cookie字段,复制完整的Cookie字符串。

步骤2:修改你的代码

把复制到的Cookie字符串填入代码,在初始化YouTube对象时传入cookie参数。以下是修改后的完整代码:

from pytube import YouTube, Playlist
from moviepy.editor import VideoFileClip
import os

# 替换成你自己的YouTube Cookie字符串
YOUTUBE_COOKIE = "这里粘贴你复制的Cookie内容"

choice = input('你想下载播放列表还是单个视频?(P,V) ')

if choice == 'V':
    link = input("输入要下载的YouTube视频链接:  ")
    # 初始化YouTube对象时传入cookie参数
    yt = YouTube(link, cookie=YOUTUBE_COOKIE)

    # 显示视频详情
    print("标题: ", yt.title)
    print("播放量: ", yt.views)
    print("视频时长: ", yt.length)
    print("作者: ", yt.author)
    print("评分: ", yt.rating)

    try:
        # 获取最高分辨率流
        youtube_stream = yt.streams.get_highest_resolution()
        print("正在下载...")
        youtube_stream.download()
        print("下载完成!!")

        # 转换为MP3并释放资源
        video = VideoFileClip(f"{yt.title}.mp4")
        video.audio.write_audiofile(f"{yt.title}.mp3")
        video.close()
    except Exception as e:
        print(f"下载失败: {str(e)}")

elif choice == 'P':
    restricted_videos = []
    restricted_videos_links = []

    playlist_link = input('输入播放列表链接: ')
    playlist = Playlist(playlist_link)

    print('注意:若视频仍无法下载,可能是Cookie失效或权限不足\n')

    for video in playlist.videos:
        try:
            # 给每个视频对象传入cookie
            yt_video = YouTube(video.watch_url, cookie=YOUTUBE_COOKIE)
            print(f'正在下载 {yt_video.title}...')
            video_stream = yt_video.streams.get_highest_resolution()
            video_stream.download()
            print('下载完成.')

            # 转换为MP3并释放资源
            new_video = VideoFileClip(f"{yt_video.title}.mp4")
            new_video.audio.write_audiofile(f"{yt_video.title}.mp3")
            new_video.close()
        except Exception as e:
            print(f'视频 {video.title} 无法下载: {str(e)}')
            restricted_videos.append(video.title)
            restricted_videos_links.append(video.watch_url)
            continue

    if restricted_videos:
        restricted_videos_names = '\n'.join(restricted_videos)
        print(f'未成功下载的视频标题:\n{restricted_videos_names}')
    else:
        print('所有视频均已下载完成!')

注意事项

  • Cookie会定期失效,若出现下载失败,重新获取一次Cookie即可。
  • 确保你的YouTube账号已通过年龄验证,否则即使传入Cookie也无法访问限制内容。
  • 不要将你的Cookie分享给他人,这会泄露你的账号隐私。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 14:25:24