• youtube-dl下载视频出现SSL证书的问题解决办法


    $ 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

     
  • 相关阅读:
    Nginx配置IP白名单和黑名单
    MySQL外键的作用和创建
    MySQL命令大全
    Mysql数据类型详解
    常见英文简写
    ubuntu12.04destdrop删除不必要的软件
    Ubuntu Nginx 开机自启动
    再生龙小用------转载
    Clonezilla SE---克隆linux------转载
    linux下制作镜像文件
  • 原文地址:https://www.cnblogs.com/eaglepie/p/11378120.html
Copyright © 2020-2023  润新知