$ youtube-dl https://www.youtube.com/watch?v=WBxxxxxxxxx
[youtube] WBxxxxxxxxx: Downloading webpage
ERROR: Unable to download webpage: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)> (caused by URLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)'),))
用youtube-dl下载视频的时候出现这个提示,如何解决呢(以debian系统为例)?
网上一般能查到的临时解决方法是加个“--no-check certificate”的参数,但是这样很麻烦,每次都要加这个参数,着实痛苦。有没有其他彻底的解决办法呢?
有的,这里需要将你的python升级到3.7.4,pip也升级到最新版,youtube-dl也升级到最新版。然后分别用--version参数来查看版本号。(在编译python3.7.4的时候还要注意编译一个ssl的模块(在解压后的python包里),这个需要自己百度了,比如 https://www.cnblogs.com/mqxs/p/9103031.html)
安装的方式最好是下载源代码进行编译安装。
另:如果SSL有问题,或者版本较老,还需要重新卸载掉,重新编译安装。
apt-get purge openssl
rm -rf /etc/ssl #删除配置文件 (如果有这个文件的话)
编译与安装 OpenSSL
prefix 是安装目录,openssldir 是配置文件目录,另外建议安装两次,shared 作用是生成动态连接库。
最新的ssl版本参考这里,ftp://ftp.openssl.org/source/,参考修改版本号即可。
wget ftp://ftp.openssl.org/source/openssl-1.1.1c.tar.gz
tar -zxf openssl-1.1.1c.tar.gz
cd openssl-1.1.1c/
./config --prefix=/usr/local --openssldir=/usr/local/ssl
make && make install
./config shared --prefix=/usr/local --openssldir=/usr/local/ssl
make clean
make && make install
这里有个sh的代码,可以参考(用再mac系统的):
mac-curl-ca-bundle.sh
#!/bin/bash mkdir /tmp/curl-ca-bundle cd /tmp/curl-ca-bundle wget http://curl.haxx.se/download/curl-7.22.0.tar.bz2 tar xzf curl-7.22.0.tar.bz2 cd curl-7.22.0/lib/ ./mk-ca-bundle.pl if [ ! -d /usr/share/curl/ ]; then sudo mkdir -p /usr/share/curl/ else sudo mv /usr/share/curl/ca-bundle.crt /usr/share/curl/ca-bundle.crt.original fi sudo mv ca-bundle.crt /usr/share/curl/ca-bundle.crt echo echo "Done!"
如果直接保存,在MAC下运行不知道情况,不过在debian系统下运行可能会有些问题。所以上面这段代码建议只是参考使用。特别是解压.tar.bz2的压缩包的时候,
.tar.gz 格式解压为 tar -zxvf xx.tar.gz
.tar.bz2 格式解压为 tar -jxvf xx.tar.bz2 (这种解压方式在debian系统下测试是可行的。)
反正最后一步都是:mv ca-bundle.crt /usr/share/curl/ca-bundle.crt
移动过去后,最后编辑/root目录下的.bashrc,即 $nano /root/.bashrc
在最后面一行加入以下代码:
export SSL_CERT_FILE="/usr/share/curl/ca-bundle.crt"
然后保存即可。
然后再用youtube-dl来下载YTB视频的时候就不会出现这个SSL错误了,也不要带那个麻烦的参数了。
参考文章(致谢):
https://github.com/ytdl-org/youtube-dl/issues/5317
https://gist.github.com/1stvamp/2158128