Ошибка подключения к qiwi api Pythin

При попытки выполнения следующего кода выходит ошибка.

def balance(login, api_access_token):
    s = requests.Session()
    s.headers['Accept']= 'application/json'
    s.headers['authorization'] = 'Bearer ' + api_access_token
    b = s.get('https://edge.qiwi.com/funding-sources/v2/persons/' + login + '/accounts')
    return b.json()

print(balance(mylogin, api_access_token))

Сама ошибка:

Traceback (most recent call last):
  File "C:\Users\nploh\PycharmProjects\untitled1\venv\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 542, in urlopen
    httplib_response = self._make_request(conn, method, url,
  File "C:\Users\nploh\PycharmProjects\untitled1\venv\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 341, in _make_request
    self._validate_conn(conn)
  File "C:\Users\nploh\PycharmProjects\untitled1\venv\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 761, in _validate_conn
    conn.connect()
  File "C:\Users\nploh\PycharmProjects\untitled1\venv\lib\site-packages\requests\packages\urllib3\connection.py", line 234, in connect
    self.sock = ssl_wrap_socket(conn, self.key_file, self.cert_file,
  File "C:\Users\nploh\PycharmProjects\untitled1\venv\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 279, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "C:\Users\nploh\AppData\Local\Programs\Python\Python38\lib\ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
  File "C:\Users\nploh\AppData\Local\Programs\Python\Python38\lib\ssl.py", line 1040, in _create
    self.do_handshake()
  File "C:\Users\nploh\AppData\Local\Programs\Python\Python38\lib\ssl.py", line 1309, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\nploh\PycharmProjects\untitled1\venv\lib\site-packages\requests\adapters.py", line 360, in send
    resp = conn.urlopen(
  File "C:\Users\nploh\PycharmProjects\untitled1\venv\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 574, in urlopen
    raise SSLError(e)
requests.packages.urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/nploh/PycharmProjects/untitled1/venv/qiwi.py", line 32, in <module>
    print(balance(str(79180550501), api_access_token))
  File "C:/Users/nploh/PycharmProjects/untitled1/venv/qiwi.py", line 29, in balance
    b = s.get('https://edge.qiwi.com/funding-sources/v2/persons/' + login + '/accounts')
  File "C:\Users\nploh\PycharmProjects\untitled1\venv\lib\site-packages\requests\sessions.py", line 477, in get
    return self.request('GET', url, **kwargs)
  File "C:\Users\nploh\PycharmProjects\untitled1\venv\lib\site-packages\requests\sessions.py", line 465, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\nploh\PycharmProjects\untitled1\venv\lib\site-packages\requests\sessions.py", line 573, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\nploh\PycharmProjects\untitled1\venv\lib\site-packages\requests\adapters.py", line 431, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1108)

Подскажите что не так и как это исправить?


Ответы (1 шт):

Автор решения: Cookie

Вы можете отключить валидацию. SSL сертификата.

def balance(login, api_access_token):
    s = requests.Session()
    s.headers['Accept']= 'application/json'
    s.headers['authorization'] = 'Bearer ' + api_access_token
    b = s.get('https://edge.qiwi.com/funding-sources/v2/persons/' + login + '/accounts', verify=False) #verify=False отключает валидацию сертификата.
    return b.json()

print(balance(mylogin, api_access_token))
→ Ссылка