youtube-dl 的证书验证失败

Hus*_*ail 5 python youtube macos

我正在尝试使用以下命令从 YouTube 视频中获取音频:

youtube-dl --extract-audio --audio-format mp3 [video link]
Run Code Online (Sandbox Code Playgroud)

每次我尝试在 macOS (High Sierra v10.13.2) 的终端中运行此命令时,都会出现以下错误:

ERROR: Unable to download webpage: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)> (caused by URLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)'),))
Run Code Online (Sandbox Code Playgroud)

注意:我安装了 youtube-dl,还有 Python 2.7 和 Python 3.6(如果有帮助的话)

如果有人能帮我解决这个问题,那就太好了。

小智 15

我已经遇到这个问题一段时间了,但一直无法解决。所以我做了临时修复

[ 终端 ]

--no-check-certificate

可悲的是,这只会将您的 HTTPS youtube-dl 请求变成纯文本 HTTP 请求。

经过一番挖掘,我发现这是一个 Python v3.6 问题。

https://bugs.python.org/issue29065#msg283984

如果您使用 VIM 或任何编辑来检查

vim '/Applications/Python 3.6/ReadMe.rtf'
Run Code Online (Sandbox Code Playgroud)

如果您查找(证书验证和 OpenSSL\),您会看到...

在安装 Python v3.6 期间,他们决定使用他们自己的 OpenSSL 私有版本,不幸的是,这本身不适用于默认的根证书。然而,它带有一个命令脚本来安装一个精心策划的默认根证书包。

该错误向我推荐了 python certifi模块。这些模块似乎很适合查找您的证书所在的位置。

[ Python v3.6 ]

进口证明

certifi.where()

'/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/certifi/cacert.pem'

这真的只是告诉了它在哪里,但为了以防万一,我使用 python 终端解释器做了它。

[ 终端 ]

打开“/Applications/Python 3.6/Install Certificates.command”

我个人这是我的最终反应......

[ 终端 ]

-- pip install --upgrade 证书

要求已经是最新的:/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages 中的 certifi

-- 删除任何现有的文件或链接

-- 创建 certifi 证书包的符号链接

-- 设置权限

回溯(最近一次调用最后一次):

文件“”,第 44 行,在

文件“”,第 40 行,在 main

PermissionError: [Errno 1] 不允许操作:'cert.pem'

登出

正在保存会话...

...复制共享历史记录...

...保存历史记录...截断历史记录文件...

...完全的。

[过程完成]

但它奏效了,我不必再处理 S​​SL 验证失败的问题了!(-.-)\ /(-.-)/