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

运行pytube代码报HTTP Error 404: Not Found错误如何解决?

问题根因分析
  1. 代码存在拼写错误:下载方法download被误写为downlaod,会导致调用失败。
  2. 硬编码itag风险:不是所有YouTube视频都有对应itag为313的4K流,当视频不存在该分辨率的流时,get_by_itag(313)会返回None,调用方法时会触发异常,部分情况会被封装为404错误返回。
  3. pytube解析逻辑滞后:YouTube会不定期更新流媒体地址的签名加密规则,就算是10.9.3版本的pytube也可能存在签名解密逻辑不匹配的问题,导致解析出来的流地址无效,返回404错误。
修复方案

第一步:修正代码逻辑

先替换为以下带异常校验的代码,解决拼写和硬编码的问题:

from pytube import YouTube
import time

url = input("Paste URL:")
try:
    urll = YouTube(url)
except Exception as e:
    print(f"视频地址解析失败:{e}")
    exit()

# 先枚举所有可用的视频流
available_streams = {}
for stream in urll.streams.filter(file_extension='mp4', only_video=True).order_by('resolution').desc():
    res = stream.resolution
    if res == '2160p':
        available_streams['4K'] = stream.itag
    elif res == '1080p':
        available_streams['FHD'] = stream.itag
    elif res == '720p':
        available_streams['HD'] = stream.itag
    elif res == '480p':
        available_streams['480p'] = stream.itag
print("当前视频可用选项:", list(available_streams.keys()))

choose = input('Choose: 4K , FHD , HD , 480p')
def D4k():
    if choose not in available_streams:
        return f"当前视频没有{choose}分辨率资源"
    itag = available_streams[choose]
    stream = urll.streams.get_by_itag(itag)
    if not stream:
        return "获取对应分辨率流失败"
    try:
        # 加1秒延迟避免触发反爬
        time.sleep(1)
        stream.download()
        return "下载完成"
    except Exception as e:
        return f"下载失败:{e}"

print(D4k())

第二步:修复pytube签名解析逻辑

如果修正代码后还是报404错误,手动更新cipher.py的匹配规则:

  • 打开Python安装目录下的site-packages/pytube/cipher.py文件
  • 找到get_throttling_function_name函数内的正则匹配规则,将原有function_patterns列表替换为以下内容:
function_patterns = [
    r'a\.[a-zA-Z]\s*&&\s*\([a-z]\s*=\s*a\.get\("n"\)\)\s*&&\s*\([a-z]\s*=\s*([a-zA-Z0-9$]+)(\[\d+\])?\([a-z]\)',
]
  • 保存文件后重新运行代码即可。
后续避免报错的方法
  • 每次出现404错误时先检查pytube是否有更新,执行pip install --upgrade pytube升级到最新修复版本
  • 不要硬编码itag值,每次下载前先枚举当前视频的可用流,从可用资源中选择分辨率
  • 代码中增加异常捕获逻辑,对地址解析、流获取、下载三个阶段分别做异常处理,避免直接崩溃
  • 下载时增加1-2秒的请求延迟,避免触发YouTube的反爬机制返回404

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 00:33:00