YouTube-dl证书验证失败

30

我在 Python 中运行了这段代码:

from __future__ import unicode_literals
import youtube_dl


ydl_opts = {
    'format': 'bestaudio/best',
    'postprocessors': [{
        'key': 'FFmpegExtractAudio',
        'preferredcodec': 'mp3',
        'preferredquality': '192',
    }],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download(['YOUTUBE URL'])

我希望它可以将Youtube视频转换为URL文件。

但是出现了一个非常长的错误信息,基本上重复了这个:

[0;31m错误:[0m 无法下载网页:(由URLError引起的SSL证书验证失败(1,'[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:无法获取本地颁发者证书(_ssl.c:1108)'))

我在网上搜索过,但不确定如何解决这个问题?


1
这意味着你的Python解释器SSL实现所支持的CA证书列表中没有签署声称是YouTube网站使用的证书的CA(这可能意味着你本地的CA证书已过期,或者可能意味着你的互联网连接正在被拦截并替换为其他网站,可能是假冒YouTube但注入了恶意JavaScript)。 - Charles Duffy
1
这不是你的代码出了问题,所以我不知道你希望我们在这里做什么。请与您友好的本地系统管理员联系;如何更新CA证书列表因操作系统/ Linux发行版/等而异。 - Charles Duffy
@CharlesDuffy 我该如何修复这个问题? - user12867493
我猜你问这个问题是因为你没有友好的本地系统管理员?第一个问题:你正在运行哪个操作系统? - Charles Duffy
1个回答

95

在命令中添加 no-check-certificate 参数:


youtube-dl --no-check-certificate

这个选项在2021.10.09版本(含)开始被重命名为--no-check-certificates


5
如果你并不关心你连接的网站是否真的是YouTube,那么可以忽略此警告。 - Charles Duffy
3
阅读 https://github.com/ytdl-org/youtube-dl/blob/master/youtube_dl/__init__.py,初步理解是:如果您想要这个解决方法,则应在 ydl_opts 中设置 'no_check_certificate': True。但我强烈建议不要这样做,最好修复系统的CA证书列表(如果出现问题),或查找中间人劫持到YouTube连接的原因(如果有的话)。 - Charles Duffy
我添加了 --no-check-certificate 但是出现了 [youtube] bDhpwNiOHUo: Downloading webpage ERROR: bDhpwNiOHUo: YouTube said: Unable to extract video data 的错误。 - ecjb
@CharlesDuffy:我遇到了与OP相同的问题,我肯定想修复我的系统的CA证书列表。但是,我不知道从哪里开始以及如何解决这个问题。你是否有任何指向实现此目标的指针? - René Nyffenegger
1
针对哪个命令?这是一个Python脚本,其中有人执行了import ... - Matthias Burger
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接