证书验证失败:无法通过 youtube.com 获取本地颁发者证书

问题描述

我想加载 YouTube 主网页,因此我通过 python requests library 发送请求。 不幸的是,验证 ssl 证书存在问题:

Traceback (most recent call last):
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\urllib3\connectionpool.py",line 699,in urlopen
    httplib_response = self._make_request(
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\urllib3\connectionpool.py",line 382,in _make_request
    self._validate_conn(conn)
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\urllib3\connectionpool.py",line 1010,in _validate_conn
    conn.connect()
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\urllib3\connection.py",line 411,in connect
    self.sock = ssl_wrap_socket(
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\urllib3\util\ssl_.py",line 428,in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\urllib3\util\ssl_.py",line 472,in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock,server_hostname=server_hostname)
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\ssl.py",line 500,in wrap_socket
    return self.sslsocket_class._create(
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\ssl.py",line 1040,in _create
    self.do_handshake()
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\ssl.py",line 1309,in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_Failed] certificate verify Failed: unable to get local issuer certificate (_ssl.c:1123)

During handling of the above exception,another exception occurred:

Traceback (most recent call last):
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\requests\adapters.py",line 439,in send
    resp = conn.urlopen(
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\urllib3\connectionpool.py",line 755,in urlopen
    retries = retries.increment(
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\urllib3\util\retry.py",line 573,in increment
    raise MaxRetryError(_pool,url,error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.youtube.com',port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1,'[SSL: CERTIFICATE_VERIFY_Failed] certificate verify Failed: unable to get local issuer certificate (_ssl.c:1123)')))

During handling of the above exception,another exception occurred:

Traceback (most recent call last):
  File "c:\Users\username\Desktop\Dev\MusicPlayer\youtube_extractor.py",line 371,in <module>
    cipher_operations = load_cipher()
  File "c:\Users\username\Desktop\Dev\MusicPlayer\youtube_extractor.py",line 348,in load_cipher
    script = load_player_script()
  File "c:\Users\username\Desktop\Dev\MusicPlayer\youtube_extractor.py",line 282,in load_player_script
    response = requests.get(youtube_home)
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\requests\api.py",line 76,in get
    return request('get',params=params,**kwargs)
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\requests\api.py",line 61,in request
    return session.request(method=method,url=url,**kwargs)
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\requests\sessions.py",line 542,in request
    resp = self.send(prep,**send_kwargs)
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\requests\sessions.py",line 655,in send
    r = adapter.send(request,**kwargs)
  File "C:\Users\username\AppData\Local\Programs\Python\python39\lib\site-packages\requests\adapters.py",line 514,in send
    raise SSLError(e,request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='www.youtube.com','[SSL: CERTIFICATE_VERIFY_Failed] certificate verify Failed: unable to get local issuer certificate (_ssl.c:1123)')))

奇怪的是,这个问题只有通过向 youtube.com 发送请求才会出现。

我应该怎么做才能解决这个问题?如果您需要更多信息,请询问。

顺便说一下:我使用的是 Windows 8(64 位)和 Python 3.9.1(也是 64 位)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)