@Jevgenii

Как решить ошибку python?

ошибка с этим ssl, потратило часа 3-4 не решил. Помогите.

Бот для вк
Код

# -*- coding: utf-8 -*-

import requests

import vk_api
from vk_api import VkUpload
from vk_api.longpoll import VkLongPoll, VkEventType

def main():
    session = requests.Session()

    login, password = 'мой логин', 'мой пароль'
    vk_session = vk_api.VkApi(login, password)

    try:
        vk_session.auth(token_only=True)
    except vk_api.AuthError as error_msg:
        print(error_msg)
        return

    vk = vk_session.get_api()

    longpoll = VkLongPoll(vk_session)

    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
            print('id{}: "{}"'.format(event.user_id, event.text), end=' ')

            attachments = []
            text = 'Ты сказал "{}"'.format(event.text)
            vk.messages.send(
                user_id=event.user_id,
                attachment=','.join(attachments),
                message=text
            )
            print('ok')


if __name__ == '__main__':
    main()


ошибка

Traceback (most recent call last):
  File "C:\Python36\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 578, in urlopen
    chunked=chunked)
  File "C:\Python36\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 351, in _make_request
    self._validate_conn(conn)
  File "C:\Python36\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 814, in _validate_conn
    conn.connect()
  File "C:\Python36\lib\site-packages\requests\packages\urllib3\connection.py", line 289, in connect
    ssl_version=resolved_ssl_version)
  File "C:\Python36\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 308, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "C:\Python36\lib\ssl.py", line 407, in wrap_socket
    _context=self, _session=session)
  File "C:\Python36\lib\ssl.py", line 814, in __init__
    self.do_handshake()
  File "C:\Python36\lib\ssl.py", line 1068, in do_handshake
    self._sslobj.do_handshake()
  File "C:\Python36\lib\ssl.py", line 689, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python36\lib\site-packages\requests\adapters.py", line 403, in send
    timeout=timeout
  File "C:\Python36\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 604, in urlopen
    raise SSLError(e)
requests.packages.urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\asus\Desktop\take\vk-bot.py", line 40, in <module>
    main()
  File "C:\Users\asus\Desktop\take\vk-bot.py", line 16, in main
    vk_session.auth(token_only=True)
  File "C:\Users\asus\AppData\Roaming\Python\Python36\site-packages\vk_api\vk_api.py", line 169, in auth
    self._auth_token(reauth=reauth)
  File "C:\Users\asus\AppData\Roaming\Python\Python36\site-packages\vk_api\vk_api.py", line 220, in _auth_token
    self._vk_login()
  File "C:\Users\asus\AppData\Roaming\Python\Python36\site-packages\vk_api\vk_api.py", line 241, in _vk_login
    response = self.http.get('https://vk.com/')
  File "C:\Python36\lib\site-packages\requests\sessions.py", line 487, in get
    return self.request('GET', url, **kwargs)
  File "C:\Python36\lib\site-packages\requests\sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Python36\lib\site-packages\requests\sessions.py", line 585, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python36\lib\site-packages\requests\adapters.py", line 477, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:841)
[Finished in 0.7s with exit code 1]
[shell_cmd: python -u "C:\Users\asus\Desktop\take\vk-bot.py"]
[dir: C:\Users\asus\Desktop\take]
[path: C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Skype\Phone\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;D:\ВСЕ ДЛЯ GULP\NODE JS\;D:\GIT\Git\cmd;C:\Python36\Scripts\;C:\Python36\;D:\Python\Python36\Scripts\;D:\Python\Python36\;C:\Users\asus\AppData\Local\Microsoft\WindowsApps;C:\Users\asus\AppData\Roaming\npm]
  • Вопрос задан
  • 763 просмотра
Пригласить эксперта
Ответы на вопрос 3
k0t3n
@k0t3n
Python, InfoSec, IT
Стоит уточнить версию Python и сразу обновить все пакеты, в частности urllib, requests и обертку под vk.
Ответ написан
Guest007
@Guest007
Django, Python, Linux и всё такое...
pip install -U certifi
не помогло?
Ответ написан
trak
@trak
Пихону не нравится сертификат сайта. Вероятно , он не знает центр аутенфикации , который подписал этот сертификат сайта. Пихону надо в контексте ssl указать сертификат CA. Или добавить сертификат CA в хранилище сертификатов пихона (попроси пипку поставить пакет что-то типа ca-certificates, там все корневые новые есть). Или попросить игнорировать дурацкие сертификаты и не жаловался на них.
Дело в том, что пихон не использует хранилище сертификатов ОС обычно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы