Wenn Sie den Befehl youtube-dl wie folgt drücken, wird möglicherweise der Fehler "SSL: CERTIFICATE_VERIFY_FAILED" angezeigt. Ich werde die Ursache und Lösung dafür schreiben.
youtube-dl `url`
ERROR: Unable to download webpage: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1045)> (caused by URLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1045)')))
Anscheinend kann der Zertifikatpfad aufgrund eines Fehlers in pyhon3.6 nicht übergeben werden. Wenn Sie an den Details des Fehlers interessiert sind, ist der Bug-Tracker für Python3.6 hier.
Der einfachste Weg ist die Kommunikation über HTTP, wenn ein Fehler in SSL vorliegt. Sie können ohne SSL-Zertifikat herunterladen, indem Sie dem Befehl die Option "--no-check-certificate" hinzufügen.
youtube-dl `url` --no-check-certificate
Einige Leute denken vielleicht, dass es besser ist, mit SSL zu kommunizieren. Der Zertifikatspfad wird nicht übergeben. Sie müssen ihn also nur übergeben.
Ein Paket namens "certifi" zeigt Ihnen leicht den Speicherort des python3.6-Zertifikats an.
pip3 install --upgrade certifi
Fragen Sie einfach mit dem Python3-Interpreter nach dem Pfad.
>>> import certifi
>>> certifi.where()
'/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/certifi/cacert.pem'
Nachdem Sie den Speicherort der PEM-Datei (SSL-Zertifikat) kennen, übergeben Sie diese über den Pfad.
export SSL_CERT_FILE=/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/certifi/cacert.pem
Nachdem der Pfad übergeben wurde, können Sie den Befehl youtube-dl ohne SSL-Fehler verwenden. Da es sich um einen Export handelt, kann es zweckmäßig sein, ihn in bashrc oder zshrc zu schreiben.
Reference
StackOverflow Certificate Verification Failure for youtube-dl
SSL certificate verify failed #4816
Recommended Posts